Отключение автоматического согласования PHY во время процесса загрузки Linux на Xilinx


9

Я пытаюсь установить Linux на плату FPGA. Аромат linux - это petalinux для чипов Xilinx FPGA.

Текущий Xilinx SoC имеет процессор Cortex A9 и программируемую аппаратную логику, то есть FPGA. Я захватил загрузочное сообщение на терминале:

.....................U-boot time.......................partition.......................................................

[Fri Dec 27 15:18:53.108 2013] Copying Linux from SD to RAM...
[Fri Dec 27 15:18:53.129 2013] Device: SDHCI
[Fri Dec 27 15:18:53.129 2013] Manufacturer ID: 2
[Fri Dec 27 15:18:53.129 2013] OEM: 544d
[Fri Dec 27 15:18:53.129 2013] Name: SA04G 
[Fri Dec 27 15:18:53.129 2013] Tran Speed: 25000000
[Fri Dec 27 15:18:53.129 2013] Rd Block Len: 512
[Fri Dec 27 15:18:53.129 2013] SD version 1.10
[Fri Dec 27 15:18:53.129 2013] High Capacity: Yes
[Fri Dec 27 15:18:53.129 2013] Capacity: 3951034368
[Fri Dec 27 15:18:53.129 2013] Bus Width: 1-bit
[Fri Dec 27 15:18:53.129 2013] reading zImage
[Fri Dec 27 15:18:59.367 2013] 
[Fri Dec 27 15:18:59.367 2013] 2304852 bytes read
[Fri Dec 27 15:18:59.381 2013] reading devicetree.dtb
[Fri Dec 27 15:18:59.475 2013] 
[Fri Dec 27 15:18:59.475 2013] 2709 bytes read
[Fri Dec 27 15:18:59.491 2013] reading ramdisk8M.image.gz
[Fri Dec 27 15:19:06.121 2013] 
[Fri Dec 27 15:19:06.121 2013] 2501584 bytes read
[Fri Dec 27 15:19:06.144 2013] Trying to set up GEM link...
[Fri Dec 27 15:19:06.144 2013] Resetting PHY...
[Fri Dec 27 15:19:06.144 2013] 
[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive

Меня особенно интересуют эти строки:

[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive

Вопрос № 1: я полагаю, эти строки для TCP / IP?

Как видно, около 12 секунд тратятся впустую здесь. Дело в том, что мне нужна быстрая система загрузки, и мне не понадобится TCP / IP в конечном приложении.

Linux, который я установил до сих пор, использовал предварительно созданный образ, предоставленный Xilinx. Теперь, чтобы избавиться от части TCP / IP (поскольку она мне не нужна, и если у меня ее нет в ОС, эти 12 секунд можно было бы сохранить - это мое понимание), я планирую построить свою собственное ядро ​​Linux.

Поэтому я скачал исходный код для PetaLinux, предполагая, что мне придется кросс-компилировать его из моей хост-системы.

Вопрос № 2: Но я хочу знать, как я могу исключить часть TCP / IP из источника ОС, чтобы при загрузке ОС она никогда не выполняла те трудоемкие процедуры TCP / IP?

Вопрос № 3: Я также не уверен, если в предварительно собранном образе мы можем иметь какую-либо опцию, чтобы отключить часть TCP / IP?

Моя цель - избавиться от этих строк во время процесса загрузки:

[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive

Шаг 1: выясните, какая система инициализации используется. Шаг 2: осмотрите его конфигурационные файлы.
Струджи

У вас есть источник ядра? Как ты загружаешь его сейчас? Включено ли дерево устройств?
Stark07

Это сообщение от U-Boot, на тот момент Linux еще не загрузился.
Жиль "ТАК - перестань быть злым"

Ответы:


2

Вопрос 2: Я верю, что эти отпечатки сделаны с Uboot. Если да, то я считаю, что вы определили «CONFIG_PHY_RESET» - не могли бы вы проверить конфигурацию вашей загрузки для этого? Чтобы отключить эту функцию, вам, вероятно, придется проверить свою конфигурацию, обычно что-то похожее на: ./include/configs/YourBoardConfigFile.h, это то, что будет использовать uboot.

Один из других ответов призвал использовать Kconfig - я проверил menuconfig моего uboot, и эта опция не присутствовала.

Если вы посмотрите на исходный файл uboot: ./drivers/net/4xx_enet.c , ищите «CONFIG_PHY_RESET», может показаться, что код выполняется:

#if defined(CONFIG_PHY_RESET)
/*
 * Reset the phy, only if its the first time through
 * otherwise, just check the speeds & feeds
 */
if (hw_p->first_init == 0) {

Вскоре после этого вы увидите напечатанный текст «Ожидание завершения автоматического согласования PHY», так что это должно быть именно там, где ваша проблема (или близко к ней - было несколько других файлов, которые имели похожую инициализацию в зависимости от архитектуры).

По какой-то причине файл README в исходном загрузочном файле верхнего уровня вызывает CONFIG_PHY_RESET_DELAY, но не CONFIG_PHY_RESET, поэтому, возможно, вы его там пропустили.

Вопрос 3: Если проблема в CONFIG_PHY_RESET, то это нужно будет установить во время компиляции. Вы должны быть в состоянии загрузить исходный код Xilinx для вашей доски.

Я не уверен, зачем нужен сброс, поэтому я не ответил на ваш первый вопрос, но кажется, что некоторые PHY имеют разные требования к сбросу при инициализации, и даже некоторым требуется определенная задержка.


0

Эта система, очевидно, хочет пропинговать IP-адрес 10.10.70.101, возможно, потому что она проверяет свой собственный IP-адрес или свой шлюз. Эта часть означает, что система настроена с сетевым интерфейсом с этим IP-адресом или аналогичным.

Пауза возникает из-за того, что в процессе настройки IP он загружает сетевой драйвер Ethernet, который выполняет автосогласование PHY, по сути, пытается увидеть, что с ним связано. Так как ничего не связано, время ожидания истекло.

Вероятно, вам стоит поискать, где этот дистрибутив Linux хранит настройки сетевого интерфейса. Беглый поиск в Google показывает, что в этом U-Boot есть переменная ipaddrдля http://www.denx.de/wiki/view/DULG/UBootEnvVariables


-1

Используйте Kconfigили его графические аналоги для отключения Networking при компиляции ядра. Примеры: посмотрите это .


2
Пожалуйста, не просто размещайте ссылки, размещайте как можно больше релевантного контента прямо на этом сайте. Если сайт, на который вы ссылаетесь, исчезает, тогда ваш ответ становится бесполезным.
SLM
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.