Wyłączanie automatycznej negocjacji PHY podczas uruchamiania systemu Linux na Xilinx


9

Próbuję zainstalować Linuksa na płycie FPGA. Linuksowym smakiem jest płatekuks dla układów FPGA Xilinx.

Obecny układ Soil Xilinx ma procesor Cortex A9 i programowalną logikę sprzętową, tj. FPGA. Przechwyciłem komunikat rozruchowy na terminalu:

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

Szczególnie interesują mnie następujące linie:

[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

Pytanie nr 1: Sądzę, że te linie dotyczą TCP / IP?

Jak widać, marnuje się tutaj około 12 sekund. Chodzi mi o to, że potrzebuję systemu szybkiego rozruchu i wcale nie będę potrzebował TCP / IP w aplikacji końcowej.

Linux, który do tej pory instalowałem, korzystał z gotowego obrazu dostarczonego przez Xilinx. Teraz, aby pozbyć się części TCP / IP (ponieważ jej nie potrzebuję, a jeśli nie mam jej w systemie operacyjnym, można zaoszczędzić te 12 sekund - to moje zrozumienie), planuję zbudować własne jądro Linuksa.

Pobrałem więc kod źródłowy dla PetaLinux, zakładając, że będę musiał skompilować go z mojego systemu hosta.

Pytanie nr 2: Ale chcę wiedzieć, jak mogę wykluczyć część TCP / IP ze źródła systemu operacyjnego, aby po uruchomieniu systemu operacyjnego nigdy nie wykonywała czasochłonnych procedur TCP / IP?

Pytanie nr 3: Nie jestem również pewien, czy na gotowym obrazie możemy mieć opcję wyłączenia części TCP / IP?

Moim celem jest pozbycie się tych linii podczas procesu uruchamiania:

[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

krok 1: dowiedz się, jakiego systemu init używasz. krok 2: przeszukuj pliki konfiguracyjne.
strugee

Czy masz źródło jądra? Jak teraz go uruchamiasz? Czy w grę wchodzi drzewo urządzeń?
Stark07

Ta wiadomość pochodzi z U-Boota, Linux jeszcze się nie uruchomił.
Gilles „SO- przestań być zły”

Odpowiedzi:


2

Pytanie 2: Uważam, że te odciski pochodzą z Uboot. Jeśli tak, to uważam, że masz zdefiniowane „CONFIG_PHY_RESET” - czy możesz sprawdzić w tym celu konfigurację swojego uruchamiania? Aby wyłączyć tę funkcję, prawdopodobnie będziesz musiał sprawdzić swoją konfigurację, zwykle coś podobnego do: ./include/configs/YourBoardConfigFile.h, użyłby uboot.

Jedna z pozostałych odpowiedzi wywołanych w celu użycia Kconfig - sprawdziłem menuconfig mojego uboota i ta opcja nie była obecna.

Jeśli spojrzysz na plik źródłowy uboot: ./drivers/net/4xx_enet.c , wyszukaj „CONFIG_PHY_RESET”, wygląda na to, że kod jest wykonywany:

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

Wkrótce potem pojawi się tekst „Oczekiwanie na zakończenie automatycznej negocjacji PHY”, więc powinno to być dokładnie tam, gdzie jest twój problem (lub blisko niego - było kilka innych plików o podobnej inicjalizacji w zależności od architektury).

Z jakiegoś powodu plik README w źródłowym uboocie najwyższego poziomu wywołuje CONFIG_PHY_RESET_DELAY, ale nie CONFIG_PHY_RESET, więc możesz go tam pominąć.

Pytanie 3: Jeśli problemem jest CONFIG_PHY_RESET, należy to ustawić w czasie kompilacji. Powinieneś być w stanie pobrać źródło uBoot Xilinx dla swojej płyty.

Nie jestem pewien, dlaczego reset jest potrzebny, więc tak naprawdę nie odpowiedziałem na twoje pytanie, ale wygląda na to, że niektóre PHY mają różne wymagania dotyczące resetowania podczas inicjalizacji, a nawet niektóre wymagają pewnego opóźnienia.


0

Ten system najwyraźniej chce pingować adres IP 10.10.70.101, prawdopodobnie dlatego, że sprawdza swój własny adres IP lub bramę. Ta część oznacza, że ​​system jest skonfigurowany z interfejsem sieciowym z tym adresem IP lub podobnym.

Wstrzymuje się, ponieważ w trakcie konfigurowania adresu IP ładuje sterownik sieci Ethernet, który dokonuje automatycznej negocjacji PHY, w zasadzie próbuje sprawdzić, co jest z nim połączone. Ponieważ nic nie jest połączone, upływa limit czasu.

Prawdopodobnie powinieneś szukać wszędzie tam, gdzie ta dystrybucja Linuksa zachowuje ustawienia interfejsu sieciowego. Pobieżne wyszukiwanie w Google wskazuje, że ten U-Boot ma zmienną ipaddrna http://www.denx.de/wiki/view/DULG/UBootEnvVariables


-1

Użyj Kconfiglub jego graficznych analogów, aby wyłączyć sieć po kompilacji jądra. Przykłady: zobacz to .


2
Proszę nie tylko zamieszczać linków, ale także umieszczać tyle istotnych treści bezpośrednio na tej stronie. Jeśli witryna, do której prowadzi łącze, zniknie, twoja odpowiedź stanie się bezwartościowa.
slm
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.