ZYNQ Linux開発-イーサネット構成

5305 ワード

ハードウェアプラットフォーム:XCZ 7020 CLG 484-1完全適合Zedboard開発環境:Widows下Vivado 2016.2、SDK 2016.2、Linux機械:debin材料:Xilinx Github中のU-BOOT、Kernel、Ramdisk、Config_patch等
NFS起動時にターゲットボードネットワークを構成する際に問題が発生しました:ifconfig-aコマンドを実行してeht 0が現れませんでした.つまり、私のターゲットボードには外部のイーサネットカードがありません.埋め込み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>;
                } ;
        } ;
};