NXP i.MX6ULL 修改只使用单网卡

项目场景:

众所周知,i.mx6ull自带2路百兆以太网口,且ENET2对应内核中eth0网卡节点,ENET1对应内核中eth1网卡节点,诸多配置均以eth0为默认网卡。为了现场应用或自定义载板设计,不需要使用多网口或者只选用eth1时该如何配置呢,在眺望电子TW-AC6G-EVM开发板上修改只使用单网卡作为参照修改:

编译环境及开发包:
主机:ubuntu18.04
交叉编译器:arm-linux-gnueabihf-gcc
QT5.12.8:qt-everywhere-opensource-src-5.12.8
开发板:TW-AC6G-EVM
Linux:Linux-4.1.15
串口工具:Xshell

注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6ULL ARM嵌入式平台,这是一个基于NXP iMX6ULL ARM处理器,主频800MH在 Cortex-A7的核心板。


解决方案:

1.只使用LAN2/ENET2(fec2)

1、打开Linux源码目录/arch/arm/boot/dts下的hd-imx6ull-core-emmc.dts,如图1.1所示屏蔽掉fec1节点。
NXP i.MX6ULL 修改只使用单网卡_第1张图片

2、如图1.2所示,屏蔽掉LAN1(fec1)对应的pinctrl_enet节点。
NXP i.MX6ULL 修改只使用单网卡_第2张图片

修改完成以后重新编译设备树,得到新的hd-imx6ull-core-emmc.dtb并将其改名为imx6ull-14x14-evk.dtb,替换掉开发板/run/media/mmcblk1p1/imx6ull-14x14-evk.dtb,再输入sync。此处示例用U盘更新:

root@twdz-IMX6ULL:~#  cp /run/media/sda1/imx6ull-14x14-evk.dtb  /run/media/mmcblk1p1/
root@twdz-IMX6ULL:~#  sync

重启后就会使用新的设备树。内核启动后,输入如下命令查看当前系统中所有网卡:

ifconfig -a  					//查看所有网卡

NXP i.MX6ULL 修改只使用单网卡_第3张图片

2.只使用LAN1/ENET1(fec1)

1、屏蔽或删除掉fec2节点内容

如图2.1,打开Linux源码目录/arch/arm/boot/dts下的hd-imx6ull-core-emmc.dts,屏蔽或删除掉hd-imx6ull-core-emmc.dts文件中LAN2网卡对应的fec2节点内容。
NXP i.MX6ULL 修改只使用单网卡_第4张图片

2、修改LAN1对应的fec1节点信息

接下来需要fec1节点进行修改,重点是在fec1节点下添加 mdio 子节点,修改后的fec1节点内容如下所示:

&fec1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_enet1>;
	phy-mode = "rmii";
	phy-handle = <ðphy0>;
	status = "okay";

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;

		ethphy0: ethernet-phy@0 {
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <0>;
		};
	};
};

3、屏蔽或删除掉LAN2(fec2)对应的pinctrl节点

如图2.2所示,屏蔽或删除掉LAN2(fec2)对应的pinctrl_enet2节点。

NXP i.MX6ULL 修改只使用单网卡_第5张图片

4、在ENET1网卡对应的pinctrl节点中添加MDIO和 MDC引脚配置

默认情况下 GPIO1_IO07 和 GPIO1_IO06 复用为ENET2的MDC和MDIO,因此这里我们需要重新将 GPIO1_IO07 和 GPIO1_IO06 这两个IO复用为 ENET1 的 MDC和 DMIO,修改后的 pinctrl_enet1 内容如下所示:

pinctrl_enet1: enet1grp {
		fsl,pins = <
			MX6UL_PAD_GPIO1_IO07__ENET1_MDC		0x1b0b0
			MX6UL_PAD_GPIO1_IO06__ENET1_MDIO		0x1b0b0
			MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN	0x1b0b0
			MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER	0x1b0b0
			MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00	0x1b0b0
			MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01	0x1b0b0
			MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN	0x1b0b0
			MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00	0x1b0b0
			MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01	0x1b0b0
			MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1	0x4001b031
		>;
	};

修改完成以后重新编译设备树,得到新的hd-imx6ull-core-emmc.dtb并将其改名为imx6ull-14x14-evk.dtb,替换掉开发板/run/media/mmcblk1p1/imx6ull-14x14-evk.dtb,再输入sync。此处示例用U盘更新:

root@twdz-IMX6ULL:~#  cp /run/media/sda1/imx6ull-14x14-evk.dtb  /run/media/mmcblk1p1/
root@twdz-IMX6ULL:~#  sync

重启后就会使用新的设备树。内核启动后,输入如下命令查看当前系统中所有网卡:

ifconfig -a  					//查看所有网卡

NXP i.MX6ULL 修改只使用单网卡_第6张图片

从图 2.3 可以看出,此时系统只有一个 eth0 网卡,这里的 eth0 网卡就是ENET1,不要与前面的混淆,以为 eth0 是 ENET2 网卡名字。

你可能感兴趣的:(NXP,Linux,linux,arm开发,运维,gpio)