ZYNQ Linux开发——以太网配置

硬件平台: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>;
                } ;
        } ;
};

你可能感兴趣的:(ZYNQ-Linux,zynq)