Отключение автоматического согласования 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
user2799508
источник
Шаг 1: выясните, какая система инициализации используется. Шаг 2: осмотрите его конфигурационные файлы.
Струджи
У вас есть источник ядра? Как ты загружаешь его сейчас? Включено ли дерево устройств?
Stark07
Это сообщение от U-Boot, на тот момент Linux еще не загрузился.
Жиль "ТАК - перестань быть злым"
может быть, digi.com/support/kbase/kbaseresultdetl?id=3143
Жиль "

Ответы:

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 имеют разные требования к сбросу при инициализации, и даже некоторым требуется определенная задержка.

GeminiDakota
источник
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