2017-10-24 3 views
0

Zynq Ultrascale + (보드 ZCU102 rev 1)에서 Linux 기반 OS를 부팅하고 here에 설명 된대로 커널을 구성하고 Vivado SDK 2017.2에서 자동으로 생성 된 장치 트리 및 표시 다음 : 당신이 실행하면,macb ff0e0000.ethernet eth0 : PHY에 연결할 수 없음

macb ff0e0000.ethernet eth0: Could not attach to PHY 

과 :

gem0: [email protected] { 
     compatible = "cdns,zynqmp-gem"; 
     status = "disabled"; 
     interrupt-parent = <0x4>; 
     interrupts = <0x0 0x39 0x4 0x0 0x39 0x4>; 
     reg = <0x0 0xff0b0000 0x0 0x1000>; 
     clock-names = "pclk", "tx_clk", "hclk"; 
     #address-cells = <0x1>; 
     #size-cells = <0x0>; 
     #stream-id-cells = <0x1>; 
     iommus = <0x8 0x874>; 
     power-domains = <0xd>; 
     clocks = <0x3 0x2d 0x3 0x2d 0x3 0x31>; 
    }; 

    gem1: [email protected] { 
     compatible = "cdns,zynqmp-gem"; 
     status = "disabled"; 
     interrupt-parent = <0x4>; 
     interrupts = <0x0 0x3b 0x4 0x0 0x3b 0x4>; 
     reg = <0x0 0xff0c0000 0x0 0x1000>; 
     clock-names = "pclk", "tx_clk", "hclk"; 
     #address-cells = <0x1>; 
     #size-cells = <0x0>; 
     #stream-id-cells = <0x1>; 
     iommus = <0x8 0x875>; 
     power-domains = <0xe>; 
     clocks = <0x3 0x2e 0x3 0x2e 0x3 0x32>; 
    }; 

    gem2: [email protected] { 
     compatible = "cdns,zynqmp-gem"; 
     status = "disabled"; 
     interrupt-parent = <0x4>; 
     interrupts = <0x0 0x3d 0x4 0x0 0x3d 0x4>; 
     reg = <0x0 0xff0d0000 0x0 0x1000>; 
     clock-names = "pclk", "tx_clk", "hclk"; 
     #address-cells = <0x1>; 
     #size-cells = <0x0>; 
     #stream-id-cells = <0x1>; 
     iommus = <0x8 0x876>; 
     power-domains = <0xf>; 
     clocks = <0x3 0x2f 0x3 0x2f 0x3 0x33>; 
    }; 

    gem3: [email protected] { 
     compatible = "cdns,zynqmp-gem"; 
     status = "okay"; 
     interrupt-parent = <0x4>; 
     interrupts = <0x0 0x3f 0x4 0x0 0x3f 0x4>; 
     reg = <0x0 0xff0e0000 0x0 0x1000>; 
     clock-names = "pclk", "hclk", "tx_clk", "rx_clk"; 
     #address-cells = <0x1>; 
     #size-cells = <0x0>; 
     #stream-id-cells = <0x1>; 
     iommus = <0x8 0x877>; 
     power-domains = <0x10>; 
     clocks = <0x3 0x1f 0x3 0x34 0x3 0x30 0x3 0x34>; 
     phy-mode = "rgmii-id"; 
     xlnx,ptp-enet-clock = <0x0>; 
    }; 

부팅, 커널 메시지 중 하나가

ifconfig -a 
,

쉘 프롬프트 :

[email protected]:~# ifconfig -a 
can0: flags=128<NOARP> mtu 16 
     unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC) 
     RX packets 0 bytes 0 (0.0 B) 
     RX errors 0 dropped 0 overruns 0 frame 0 
     TX packets 0 bytes 0 (0.0 B) 
     TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 
     device interrupt 11 

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 
     inet 127.0.0.1 netmask 255.0.0.0 
     inet6 ::1 prefixlen 128 scopeid 0x10<host> 
     loop txqueuelen 1 (Local Loopback) 
     RX packets 6 bytes 372 (372.0 B) 
     RX errors 0 dropped 0 overruns 0 frame 0 
     TX packets 6 bytes 372 (372.0 B) 
     TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

sit0: flags=128<NOARP> mtu 1480 
     sit txqueuelen 1 (IPv6-in-IPv4) 
     RX packets 0 bytes 0 (0.0 B) 
     RX errors 0 dropped 0 overruns 0 frame 0 
     TX packets 0 bytes 0 (0.0 B) 
     TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

없음 ETH가 존재하지 않습니다. 그 문제를 해결하는 방법에 대한 제안?

답변

0

해결책을 찾을 수 :

가 (자동으로 Vivado에 의해 생성 된) 시스템-top.dts에 추가 할 필요가있다 이런 식으로 파일 "zcu102-revb.dtsi"

/* 
* CAUTION: This file is automatically generated by Xilinx. 
* Version: 
* Today is: Wed Sep 13 12:25:12 2017 
*/ 


/dts-v1/; 
/include/ "zynqmp.dtsi" 
/include/ "zynqmp-clk-ccf.dtsi" 
/include/ "zcu102-revb.dtsi" 
/include/ "pl.dtsi" 
/include/ "pcw.dtsi" 

....etc.... 
파일이 (그것을 here, in the Xilinx webpage을 찾을 수)은 "자일링스-zcu102-zu9-ES2-rev1.0-2017.2"패키지에서 찾을 수

참고.

또한 폴더 "리눅스 자일링스/아치/arm64/부팅/DTS/자일링스 /"의 커널 리눅스 소스 파일에서 찾을 수 있습니다. 생성 된 새로운 장치 트리와

, eth0를를 사용하는 것이 가능하며 커널은 프롬프트

macb ff0e0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0e0000 irq 31 (00:0a:35:03:77:52) 

또한 그냥 Xilinx forum에 답을 게시했다.

관련 문제