Deaktivieren der automatischen PHY-Aushandlung während des Linux-Startvorgangs unter Xilinx

9

Ich versuche Linux auf einer FPGA-Karte zu installieren. Das Linux-Aroma ist Petalinux für Xilinx-FPGA-Chips.

Der aktuelle Xilinx SoC verfügt über einen Cortex A9-Prozessor und eine programmierbare Hardwarelogik, dh FPGA. Ich habe die Startnachricht auf dem Terminal erfasst:

.....................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

Ich interessiere mich speziell für diese Zeilen:

[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

Frage 1: Ich denke, diese Zeilen sind für TCP / IP?

Wie zu sehen ist, werden hier ca. 12 Sekunden verschwendet. Die Sache ist, ich brauche ein Schnellstartsystem und würde in der Endanwendung überhaupt kein TCP / IP benötigen.

Das Linux, das ich bisher installiert habe, verwendete ein vorgefertigtes Image von Xilinx. Um den TCP / IP-Teil loszuwerden (da ich ihn nicht benötige und wenn ich ihn nicht im Betriebssystem habe, könnten diese 12 Sekunden gespeichert werden - das ist mein Verständnis), plane ich, meinen zu erstellen eigener Linux-Kernel.

Also habe ich den Quellcode von für PetaLinux heruntergeladen, vorausgesetzt, ich muss ihn von meinem Host-System aus kompilieren.

Frage 2: Aber ich möchte wissen, wie ich den TCP / IP-Teil von der Betriebssystemquelle ausschließen kann, damit beim Starten des Betriebssystems diese zeitaufwändigen TCP / IP-Routinen niemals ausgeführt werden.

Frage 3: Ich bin mir auch nicht sicher, ob wir in einem vorgefertigten Image eine Option zum Deaktivieren des TCP / IP-Teils haben können.

Mein Ziel ist es, diese Zeilen während des Startvorgangs zu entfernen:

[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
quelle
Schritt 1: Finden Sie heraus, welches Init-System verwendet wird. Schritt 2: Stöbern Sie in den Konfigurationsdateien.
Strugee
Haben Sie die Kernelquelle? Wie bootest du es ab sofort? Handelt es sich um einen Gerätebaum?
Stark07
Diese Nachricht stammt von U-Boot, Linux hat zu diesem Zeitpunkt noch nicht gebootet.
Gilles 'SO - hör auf böse zu sein'

Antworten:

2

Frage 2: Ich glaube, diese Drucke stammen von uboot. Wenn ja, glaube ich, haben Sie "CONFIG_PHY_RESET" definiert - können Sie bitte Ihre Uboot-Konfiguration darauf überprüfen? Um diese Funktion zu deaktivieren, müssten Sie wahrscheinlich Ihre Konfiguration überprüfen, normalerweise ähnlich wie: ./include/configs/YourBoardConfigFile.h, würde uboot verwenden.

Eine der anderen Antworten, die zur Verwendung von Kconfig aufgerufen wurden - Ich habe die menuconfig meines Uboots überprüft und diese Option war nicht vorhanden.

Wenn Sie sich die Uboot-Quelldatei ansehen: ./drivers/net/4xx_enet.c , suchen Sie nach "CONFIG_PHY_RESET", es scheint, dass Code ausgeführt wird:

#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) {

Kurz darauf wird der Text "Warten auf den Abschluss der automatischen PHY-Aushandlung" gedruckt. Dies sollte also genau dort sein, wo sich Ihr Problem befindet (oder in der Nähe davon - es gab einige andere Dateien, die je nach Architektur eine ähnliche Initialisierung hatten).

Aus irgendeinem Grund ruft die README- Datei in der Uboot-Quelle der obersten Ebene CONFIG_PHY_RESET_DELAY auf, nicht jedoch CONFIG_PHY_RESET, sodass Sie sie möglicherweise dort verpasst haben.

Frage 3: Wenn CONFIG_PHY_RESET das Problem ist, muss dies zur Kompilierungszeit festgelegt werden. Sie sollten in der Lage sein, die uBoot- Quelle von Xilinx für Ihr Board herunterzuladen .

Ich bin mir nicht sicher, warum das Zurücksetzen erforderlich ist, daher habe ich Frage 1 von Ihnen nicht wirklich beantwortet, aber es scheint, dass einige PHYs unterschiedliche Anforderungen an das Zurücksetzen bei der Initialisierung haben und sogar einige eine gewisse Verzögerung benötigen.

GeminiDakota
quelle
0

Dieses System möchte anscheinend die IP-Adresse 10.10.70.101 anpingen, wahrscheinlich weil es seine eigene IP-Adresse oder sein Gateway überprüft. Dieser Teil bedeutet, dass das System mit einer Netzwerkschnittstelle mit dieser oder einer ähnlichen IP-Adresse konfiguriert ist.

Die Pause tritt auf, weil beim Konfigurieren der IP-Adresse der Ethernet-Netzwerktreiber geladen wird, der die PHY-Autonegotiation durchführt, und im Wesentlichen versucht, festzustellen, was damit verbunden ist. Da nichts verbunden ist, tritt eine Zeitüberschreitung auf.

Sie sollten wahrscheinlich suchen, wo diese Linux-Distribution die Einstellungen der Netzwerkschnittstelle speichert. Eine flüchtige Google-Suche zeigt an, dass dieser U-Boot die Variable ipaddrper http://www.denx.de/wiki/view/DULG/UBootEnvVariables hat

Josip Rodin
quelle
-1

Verwenden Sie Kconfigoder seine grafischen Analoga, um das Netzwerk beim Kompilieren des Kernels zu deaktivieren. Beispiele: siehe hier .

Boris Burkov
quelle
2
Bitte posten Sie nicht nur Links, sondern fügen Sie so viele relevante Inhalte direkt auf dieser Website ein. Wenn die Site, auf die Sie verlinken, nicht mehr angezeigt wird, ist Ihre Antwort wertlos.
slm