ZYNQ Linux开发——以太网配置

来源:互联网 发布:怎么开一个淘宝店 编辑:程序博客网 时间:2024/05/08 07:52

硬件平台:XCZ7020 CLG484-1 完全适配Zedboard
开发环境:Widows下Vivado 2016.2 、 SDK2016.2 、 Linux机器:debin
材料:Xilinx Github中的U-BOOT、Kernel、Ramdisk、Config_patch等

在进行NFS启动时配置目标板网络遇到问题:执行ifconfig -a 命令没有出现eht0,也就是说我的目标板中没有对外的以太网网卡
作为一个初接触嵌入式Linux的小白在网上各种搜索,并没有结果。后来在网络上请教了解到可能与内核和设备树相关。我的内核是直接编译的官方的代码,问题应该不在此。而我的设备树是自己用sdk生成的,且在我的印象中,在我看陆佳华的《软硬件协同设计》这本书的时候,在讲设备树的生成这一章节中提到用sdk生成的设备树并不是最后完整的设备树,需要针对自己的硬件进行修改。并推荐了xilinx gihub上的xup_zed.dts 这个设备树文件。下载完xup_zed.dts并用dtc工具生成devicetree.dtb,启动,kernel panic。uboot打印的信息我也不太会看,但我明白肯定是设备树与内核不匹配。打开xup_zed.dts查看具体代码,并以此为葫芦画瓢,修改我自己用sdk生成的设备树,只针对以太网这部分修改,并最终成功。下面贴代码
对zynq-7000.dtsi的修改

gem0: ethernet@e000b000 {            compatible = "xlnx,ps7-ethernet-1.00.a";            reg = <0xe000b000 0x1000>;            status = "disabled";            clock-names = "ref_clk", "aper_clk";            clocks = <&clkc 13>, <&clkc 30>;            interrupt-parent = <&intc>;            interrupts = <0 22 4>;            local-mac-address = [00 0a 35 00 00 00];            #address-cells = <1>;            #size-cells = <0>;        };

对pcw.dtsi的修改部分

&gem0 {    status = "okay";    phy-handle = <&phy0>;    phy-mode = "rgmii-id";          xlnx,eth-mode = <0x1>;    xlnx,has-mdio = <0x1>;    xlnx,ptp-enet-clock = <111111115>;    mdio {        #address-cells = <1>;        #size-cells = <0>;        phy0: phy@0 {        compatible = "marvell,88e1510";        device_type = "ethernet-phy";        reg = <0>;        marvell,reg-init = <0x3 0x10 0xff00 0x1e 0x3 0x11 0xfff0 0xa>;                } ;        } ;};
原创粉丝点击