Changes

Jump to: navigation, search
no edit summary
==Introduction==
Axel family system-on-modules (SOM for short) are based on processors that integrate an Ethernet MAC controller (aka as ENET). In some cases, Linux must be prevented from using this controller. An example of such situation is an [[Application_Notes_(Axel)#AN-XELK-001:_Asymmetric_Multiprocessing_.28AMP.29_on_Axel_.E2.80.93_Linux_.2B_FreeRTOS|AMP configuration]] where native Ethernet MAC controller must be used by FreeRTOS exclusively. This constraint may have a significant drawback: during the development stage native Ethernet interface can not be used to mount Linux root file system over [[Deploying_Embedded_Linux_Systems#The_development_environment|NFS connection]]. This application note describes a solution to overcome this limitation by using a cheap common USB Ethernet adapter.
In some cases this controller must ==Setting up the system==This solution has been test on a Axel Ultra/AxelEVB+DACU system. The USB Ethernet adapter is the one shown in the following picture. It integrates a MosChip Semiconductor chip.  [[File:Intellinet-usb-ethernet.jpg|thumb|center|Intellinet USB Ethernet adapter]]  The adapter has been connected to the USB host port of DACU board (reference J33). Please note the the Ethernet cable connected to the native interface (connector J6 of AxelEVB) has not been detached. About Linux kernel, the default configuration has to be used changed in order to remove the support for the ENET controller and to add the drivers required by the USB Ethernet adapter. The following files have to be modified before rebuilding the kernel:*<code>imx6q-axelcommon.dtsi</code><pre>/*&fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet_axel>; phy-mode = "rgmii"; status = "okay";};*/ /*enet { pinctrl_enet_axel: enetgrp-1 { fsl,pins = < MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0xb0b1 MX6QDL_PAD_SD4_DAT3__GPIO2_IO11 0xb0b1 MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 0xb0b1 >; }; };*/</pre>*<code>imx6qdl.dtsi</code>/*enet { pinctrl_enet_1: enetgrp-1 { fsl,pins = < MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8 >; };  pinctrl_enet_2: enetgrp-2 { fsl,pins = < MX6QDL_PAD_KEY_COL1__ENET_MDIO 0x1b0b0 MX6QDL_PAD_KEY_COL2__ENET_MDC 0x1b0b0 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8 >; };  pinctrl_enet_3: enetgrp-3 { fsl,pins = < MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN 0x1b0b0 >; }; };*/  /*esai { pinctrl_esai_1: esaigrp-1 { fsl,pins = < MX6QDL_PAD_ENET_RXD0__ESAI_TX_HF_CLK 0x1b030 MX6QDL_PAD_ENET_CRS_DV__ESAI_TX_CLK 0x1b030 MX6QDL_PAD_ENET_RXD1__ESAI_TX_FS 0x1b030 MX6QDL_PAD_ENET_TX_EN__ESAI_TX3_RX2 0x1b030 MX6QDL_PAD_ENET_TXD1__ESAI_TX2_RX3 0x1b030 MX6QDL_PAD_ENET_TXD0__ESAI_TX4_RX1 0x1b030 MX6QDL_PAD_ENET_MDC__ESAI_TX5_RX0 0x1b030 MX6QDL_PAD_NANDF_CS2__ESAI_TX0 0x1b030 MX6QDL_PAD_NANDF_CS3__ESAI_TX1 0x1b030 >; };  pinctrl_esai_2: esaigrp-2 { fsl,pins = < MX6QDL_PAD_ENET_CRS_DV__ESAI_TX_CLK 0x1b030 MX6QDL_PAD_ENET_RXD1__ESAI_TX_FS 0x1b030 MX6QDL_PAD_ENET_TX_EN__ESAI_TX3_RX2 0x1b030 MX6QDL_PAD_GPIO_5__ESAI_TX2_RX3 0x1b030 MX6QDL_PAD_ENET_TXD0__ESAI_TX4_RX1 0x1b030 MX6QDL_PAD_ENET_MDC__ESAI_TX5_RX0 0x1b030 MX6QDL_PAD_GPIO_17__ESAI_TX0 0x1b030 MX6QDL_PAD_NANDF_CS3__ESAI_TX1 0x1b030 MX6QDL_PAD_ENET_MDIO__ESAI_RX_CLK 0x1b030 MX6QDL_PAD_GPIO_9__ESAI_RX_FS 0x1b030 >; }; };*/ /*usbh2 { pinctrl_usbh2_1: usbh2grp-1 { fsl,pins = < MX6QDL_PAD_RGMII_TXC__USB_H2_DATA 0x40013030 MX6QDL_PAD_RGMII_TX_CTL__USB_H2_STROBE 0x40013030 >; };  pinctrl_usbh2_2: usbh2grp-2 { fsl,pins = < MX6QDL_PAD_RGMII_TX_CTL__USB_H2_STROBE 0x40017030 >; }; };  usbh3 { pinctrl_usbh3_1: usbh3grp-1 { fsl,pins = < MX6QDL_PAD_RGMII_RX_CTL__USB_H3_DATA 0x40013030 MX6QDL_PAD_RGMII_RXC__USB_H3_STROBE 0x40013030 >; };  pinctrl_usbh3_2: usbh3grp-2 { fsl,pins = < MX6QDL_PAD_RGMII_RXC__USB_H3_STROBE 0x40017030 >; }; };*/The following picture shows the kernel configuration options related to USB Ethernet adapters [1]. Most common devices - including MosChip-based products - have been enabled.  [[File:Linux-usb-ethernet-menuconfig.png|thumb|center|Linux kernelconfiguration options related to USB Ethernet adapters]]   [1] The configuration has been changed via <code>menuconfig</code> option. To run it, the following packages need to be installed:*<code>libncursesw5-dev</code>*<code>libncurses5-dev</code> ==Testing the system==The usual <code>net_nfs</code> variable has been used to boot the system.
4,650
edits

Navigation menu