Xilinx에서 Linux 부팅 프로세스 중 PHY 자동 협상 비활성화


9

FPGA 보드에 Linux를 설치하려고합니다. 리눅스 맛은 자일링스 FPGA 칩을위한 petalinux 이다.

현재 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 부분을 제거하려면 (필요하지 않기 때문에 OS에 없으면 12 초를 절약 할 수 있습니다. 이것은 내 이해입니다), 자신의 리눅스 커널.

따라서 호스트 시스템에서 크로스 컴파일해야한다고 가정하면서 PetaLinux의 소스 코드를 다운로드했습니다.

질문 # 2 : 그러나 OS 소스에서 TCP / IP 부분을 어떻게 제외시킬 수 있는지 알고 싶습니다. OS가 부팅 될 때 시간이 많이 걸리는 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 단계 : 사용중인 init 시스템을 찾으십시오. 2 단계 : 구성 파일을 탐색합니다.
strugee

커널 소스가 있습니까? 지금은 어떻게 부팅합니까? 장치 트리가 관련되어 있습니까?
Stark07

이 메시지는 U-Boot에서 왔으며 Linux는 아직 부팅되지 않았습니다.
Gilles 'SO- 악마 그만'

답변:


2

질문 2 : 그 지문은 uboot에서 나온 것 같습니다. 그렇다면 "CONFIG_PHY_RESET"이 정의되어 있다고 생각합니다. uboot 구성을 확인하십시오. 이 기능을 비활성화하려면 구성을 확인해야 할 것입니다. 일반적으로 ./include/configs/YourBoardConfigFile.h와 비슷한 구성은 uboot가 사용하는 것입니다.

다른 답변 중 하나가 Kconfig 사용을 요청했습니다. uboot의 menuconfig를 확인했는데 해당 옵션이 없습니다.

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 자동 협상 완료 대기 중"텍스트가 인쇄되는 것을 볼 수 있으므로 문제가있는 위치에 있습니다 (또는 아키텍처에 따라 초기화가 비슷한 다른 파일이 몇 개 있습니다).

어떤 이유로 최상위 uboot 소스 의 README 파일은 CONFIG_PHY_RESET_DELAY를 호출하지만 CONFIG_PHY_RESET은 호출하지 않으므로 누락 될 수 있습니다.

질문 3 : CONFIG_PHY_RESET이 문제인 경우 컴파일 타임에 설정해야합니다. Xilinx의 uBoot 소스를 보드 에 다운로드 할 수 있어야합니다 .

왜 재설정이 필요한지 잘 모르겠으므로 실제로 귀하의 질문 1에 대답하지 않았지만 일부 PHY는 초기화시 재설정에 대한 요구 사항이 다르고 일부는 일정 시간 지연이 필요한 것처럼 보입니다.


0

이 시스템은 아마도 IP 주소 10.10.70.101을 핑하려고합니다. 아마도 자체 IP 주소 나 게이트웨이를 확인하기 때문일 것입니다. 이 부분은 시스템이 해당 IP 주소 또는 이와 유사한 네트워크 인터페이스로 구성되었음을 의미합니다.

IP를 구성하는 과정에서 PHY 자동 협상을 수행하는 이더넷 네트워크 드라이버를로드하고 기본적으로 연결된 항목을 확인하려고하기 때문에 일시 중지가 발생합니다. 연결된 것이 없으므로 시간이 초과됩니다.

이 Linux 배포판이 네트워크 인터페이스 설정을 유지하는 곳을 찾아야 할 것입니다. 커서 Google 검색은이 U-Boot에 http://www.denx.de/wiki/view/DULG/UBootEnvVariablesipaddr 당 변수가 있음을 나타냅니다 .


-1

Kconfig커널 컴파일시 네트워킹을 비활성화 하려면 또는 그래픽 아날로그를 사용 하십시오 . 예 : this 참조하십시오 .


2
링크를 게시하지 말고이 사이트에 관련성 높은 콘텐츠를 직접 포함하십시오. 연결하려는 사이트가 사라지면 답변이 가치가 없게됩니다.
slm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.