Uboot之开发板网络驱动修改(IMX6ULL)

一、说明
本人使用IMX6ULL开发板(正点原子阿尔法)!!!

二、网络驱动修改步骤
1.事先要有自己的uboot(移植NXP的uboot重名为my_uboot);
2.将自己的开发板添加到my_uboot中(这里就不细说了);
3. 上面2步骤添加完之后,能编译通过且可以正常启动uboot;
4. 在此基础上,开始网络驱动移植。
三、网络驱动修改
1. 网络 PHY 地址修改
首先修改 uboot 中的 ENET1 和 ENET2 的 PHY 地址和驱动,打开 mx6ull_my_emmc.h
这个文件,找到如下代码:代码在325行。

如上图所示,只修改三处即可!!!

2.删除 uboot 中 的 74LV595 驱动代码

uboot 中网络 PHY 芯片地址修改完成以后就是网络复位引脚的驱动修改了,打开
mx6ull_my_emmc.c,找到如下代码:

上图代码 中以 IOX 开头的宏定义是 74LV595 的相关 GPIO,因为 NXP 官方I.MX6ULL EVK 开发板使用 74LV595 来扩展 IO,两个网络的复位引脚就是由 74LV595 来控制的。正点原子的 开发板并没有使用 74LV595,因此我们将示例代码中的代码删除掉,替换为如下所示代码:

继续在 mx6ull_my_emmc.c 中找到如下代码:将其删除掉!!!

继续在 mx6ull_my_emmc.c 中找到如下函数static void iox74lv_init(void)、void iox74lv_set(int index)将其删除掉!!!

继续在 mx6ull_my_emmc.c 中找到 board_init 函数,作如下修改:删除这两行代码

3.添加开发板网络复位引脚驱动

在 mx6ull_my_emmc.c 中找到如下两个函数,并做修改:

添加如上两行代码!!!

在 mx6ull_my_emmc.c 中找到setup_iomux_fec函数,并添加如下代码:

添加mdelay(150),很重要,我的是v2.4的板子,添加后网卡才能初始化成功

4. 修改 drivers/net/phy/phy.c 文件中的函数 genphy_update_link
大功基本上告成,还差最后一步,uboot 中的 LAN8720A 驱动有点问题,打开文件
drivers/net/phy/phy.c,找到函数 genphy_update_link,这是个通用 PHY 驱动函数,此函数用于更新 PHY 的连接状态和速度。使用 LAN8720A 的时候需要在此函数中添加一些代码,修改后的
函数 genphy_update_link 如下所示:添加如下代码!!!

至此网络的复位引脚驱动修改完成,重新编译 uboot,然后将 u-boot.bin 烧写到 SD 卡中并
启动,uboot 启动信息如图 所示:

从图 中可以看到“Net: FEC1”这一行,提示当前使用的 FEC1 这个网口,也就是 ENET2。在 uboot 中使用网络之前要先设置几个环境变量,命令如下:
setenv ipaddr 192.168.10.50 //开发板IP地址 setenv ethaddr 00:04:9f:04:d3:32 //开发板网卡MAC地址 setenv gatewayip 192.168.10.1 //开发板默认网关 setenv netmask 255.255.255.0 //开发板子网掩码 setenv severip 192.168.10.100 //服务器地址,也就是 Ubuntu 地址 saveenv //保存环境变量
设置好环境变量以后就可以在 uboot 中使用网络了,用网线将 开发板上的 ENET2
与电脑或者路由器连接起来,保证开发板和电脑在同一个网段内,通过 ping 命令来测试一下网
络连接,命令如下: 切记!!!在ping之前一定要启动服务器,也就是ubuntu!!!

从图可以看出,ping 主机也成功,说明 ENET1 网络也工作正常,至此,开发板的网络都工作正常了。

如果FEC1网卡不通,可以换一个到FEC0,修改方式如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值