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节点。
图1.1  屏蔽fec1节点

2、如图1.2所示,屏蔽掉LAN1(fec1)对应的pinctrl_enet节点。
图1.2  屏蔽掉LAN1(fec1)对应的pinctrl_enet节点

修改完成以后重新编译设备树,得到新的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  					//查看所有网卡

图1.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节点内容。
图2.1  屏蔽或删除掉fec2节点内容

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

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

&fec1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_enet1>;
	phy-mode = "rmii";
	phy-handle = <&ethphy0>;
	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节点。

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

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  					//查看所有网卡

图2.3  查看所有网卡

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

眺望电子-ARM嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值