飞速飞艇

  • <tr id='NmlqV2'><strong id='NmlqV2'></strong><small id='NmlqV2'></small><button id='NmlqV2'></button><li id='NmlqV2'><noscript id='NmlqV2'><big id='NmlqV2'></big><dt id='NmlqV2'></dt></noscript></li></tr><ol id='NmlqV2'><option id='NmlqV2'><table id='NmlqV2'><blockquote id='NmlqV2'><tbody id='NmlqV2'></tbody></blockquote></table></option></ol><u id='NmlqV2'></u><kbd id='NmlqV2'><kbd id='NmlqV2'></kbd></kbd>

    <code id='NmlqV2'><strong id='NmlqV2'></strong></code>

    <fieldset id='NmlqV2'></fieldset>
          <span id='NmlqV2'></span>

              <ins id='NmlqV2'></ins>
              <acronym id='NmlqV2'><em id='NmlqV2'></em><td id='NmlqV2'><div id='NmlqV2'></div></td></acronym><address id='NmlqV2'><big id='NmlqV2'><big id='NmlqV2'></big><legend id='NmlqV2'></legend></big></address>

              <i id='NmlqV2'><div id='NmlqV2'><ins id='NmlqV2'></ins></div></i>
              <i id='NmlqV2'></i>
            1. <dl id='NmlqV2'></dl>
              1. <blockquote id='NmlqV2'><q id='NmlqV2'><noscript id='NmlqV2'></noscript><dt id='NmlqV2'></dt></q></blockquote><noframes id='NmlqV2'><i id='NmlqV2'></i>
                技術文章

                當前頁面: 首頁 >技術文章 >NXP iMX7雙以太網配置

                NXP iMX7雙以太網配置

                供稿:韜睿(上海)計算機科技有限公司 2020/2/20 11:40:35

                0 人氣:4

                • 關鍵詞: imx7 nxp ethernet
                • 摘要:NXP iMX7是NXP基於Cortex-A7和Coretex-M4異構多核架構的ARM處理器,其中iMX7 Dual型號SoC支持兩路MAC控制器,可以通過外置百兆或者千兆PHY芯片擴展兩路以太網接口,本文就基於Toradex基於NXP iMX7 Dual SoC的ARM核心板模塊Colibri iMX7D示例擴展兩路以∮太網。

                1). 簡介

                NXP iMX7NXP基於Cortex-A7Coretex-M4異構多核架構的ARM處理器,其中iMX7 Dual型號SoC支持兩路MAC控制器,可以通過外置百兆或者千兆PHY芯片擴展兩路以太網接口,本文就基於Toradex基於NXP iMX7 Dual SoCARM核心板模塊Colibri iMX7D示例擴展兩路以太網。

                 

                 

                2). 第一路以太網

                a). Colibri iMX7D模塊已經通←過模塊上面部署的一個Microchip KSZ8041NL 百兆PHY芯片默認支持了第一路百兆以太網

                 

                b). KSZ8041NL的參考電路請參考這裏(原理圖示例的SoC MAC端來自Toradex VF61 ARM模塊的定義,在iMX7或者其他平臺上面不能直接引用,請只參考PHY一側的連接)

                 

                c). 由於選擇的iMX7D ENET1 MAC RMII接口 50MHz 參考時鐘輸出引腳GPIO1_IO12和另外一個M4核心的NMI輸入引腳沖突,因此最終在設計中,這一路的KSZ8041PHY使用了外部參考時鐘,沒有使用iMX7 ENET1的參考時鐘輸出

                 

                d). 基於上述配置的第一步以太網對應的device tree節點定義和pinmux定義請參考如下,內核基於4.9.166版本

                ---------------------------------------

                # arch/arm/boot/dts/imx7-colibri.dtsi

                ……

                &fec1 {

                        pinctrl-names = "default", "sleep";

                        pinctrl-0 = <&pinctrl_enet1>;

                        pinctrl-1 = <&pinctrl_enet1_sleep>;

                        clocks = <&clks imx7d_enet1_ipg_root_clk="">,

                                <&clks imx7d_enet_axi_root_clk="">,

                                <&clks imx7d_enet1_time_root_clk="">,

                                <&clks imx7d_pll_enet_main_50m_clk="">;

                        clock-names = "ipg", "ahb", "ptp", "enet_clk_ref";

                        assigned-clocks = <&clks imx7d_enet1_time_root_src="">,

                                          <&clks imx7d_enet1_time_root_clk="">;

                        assigned-clock-parents = <&clks imx7d_pll_enet_main_100m_clk="">;

                        assigned-clock-rates =<0>,<100000000>;

                        phy-mode = "rmii";

                        phy-supply = <?_ldo1>;

                        fsl,magic-packet;

                };

                &iomuxc {

                pinctrl_enet1: enet1grp {

                                fsl,pins = <

                                        MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x73

                                        MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0       0x73

                                        MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1       0x73

                                        MX7D_PAD_ENET1_RGMII_RXC__ENET1_RX_ER           0x73

                 

                                        MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x73

                                        MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0       0x73

                                        MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1       0x73

                                        MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1          0x73

                                        MX7D_PAD_SD2_CD_B__ENET1_MDIO                   0x3

                                        MX7D_PAD_SD2_WP__ENET1_MDC                      0x3

                                >;

                        };

                 

                        pinctrl_enet1_sleep: enet1sleepgrp {

                                fsl,pins = <

                                        MX7D_PAD_ENET1_RGMII_RX_CTL__GPIO7_IO4          0x0

                                        MX7D_PAD_ENET1_RGMII_RD0__GPIO7_IO0             0x0

                                        MX7D_PAD_ENET1_RGMII_RD1__GPIO7_IO1     0x0

                                        MX7D_PAD_ENET1_RGMII_RXC__GPIO7_IO5     0x0

                 

                                        MX7D_PAD_ENET1_RGMII_TX_CTL__GPIO7_IO10 0x0

                                        MX7D_PAD_ENET1_RGMII_TD0__GPIO7_IO6     0x0

                                        MX7D_PAD_ENET1_RGMII_TD1__GPIO7_IO7     0x0

                                        MX7D_PAD_GPIO1_IO12__GPIO1_IO12         0x0

                                        MX7D_PAD_SD2_CD_B__GPIO5_IO9            0x0

                                        MX7D_PAD_SD2_WP__GPIO5_IO10             0x0

                                >;

                        };

                ---------------------------------------

                 

                 

                3). 第二路以太網

                a). 第二路以太網通過模塊預留的RMII或者RGMII接口連接百兆PHY或者千兆PHY來擴展,Colibri iMX7D RMII或者RGMII接口管腳定義請參考手冊5.4章節。

                 

                 

                b). 同樣使用KSZ8041NL 百兆PHY擴展的參考電路請參考這裏(原理圖示例的SoC MAC端來自Toradex VF61 ARM模塊的定義,在iMX7或者其他平臺上面不能直接引用,須按照上面手冊定義連接),如需要連接千兆PHY,請參考所使用的千兆PHY(如Microchip KSZ9031RNL)手冊進行連接

                 

                c). 通過ENET2 RMII接口連接KSZ8041NL百兆PHYdevice tree配置參考如下patch,和上面第一路以太網不同,這次使用的iMX7 SoC內部的參考時鐘輸出給PHY,因此在clock項目配置會有不同

                 

                // 對於 &fec2節點中的 “fsl,mii-exclusive” 參數,因為ENET1ENET2分別使用其對應的MDIO總線,而不是共享一個MDIO總線,在4.9 kernel下,如果不配置這個參數,驅動會默認都使用ENET1MDIO去配置ENET2,因此在這裏是必須的。但在其他i.MX平臺或者mainline kernel下則不一定需要。

                 

                // MX7D_PAD_EPDC_BDR0__CCM_ENET_REF_CLK2 配置為0x40000073,因為使用iMX7 SoC內部參考時鐘,這個時鐘要同時給PHYMAC提供參考時鐘,因此InputOutput都要配置使能,因此需要為 0x40000073,關於pinctrl的更多說明請參考這裏

                 

                d). 通過RGMII連接千兆PHYdevice tree配置請參考這裏

                 

                4). 總結

                本文基於iMX7示例了雙路以太網的設計和配置思路,同時對於其他支持雙路MACNXP i.MX ARM處理器(如iMX8)的配置思路也都是一致的,只是具體的clockpinmux定義等要做對應的適配

                審核編輯(王靜)
                更多內容請★訪問 韜睿(上海)計算機科技有限公司()

                手機掃描二維碼分享本頁

                工控網APP下載安裝

                 

                我來評價

                評價:
                一般