uboot网络驱动修改

        首先 I.MX6Ull是采用 内部 MAC+外部PHY 芯片的方式来进行网络通信,某国际XXX组织规定,所有的PHY芯片内部前16个寄存器必须一模一样,PHY芯片的特殊功能配置在第16个寄存器以后的位置,因此,理论上uboot里边有一个PHY芯片的通用驱动程序,即更换PHY芯片无需更改驱动程序。

        I.MX6Ull通过RMII接口和PHY芯片进行网络通信,通过MDIO接口配置PYH内部的寄存器,MDIO最多可以管理32个PHY芯片,每个PHY配片都有一个内部地址进行区分,类似IIC设备的地址,PHYADDR由PHYAD0管脚来决定,高电平PHYADDR=0x01,低电平PHYADDR=0x0

        I.MX6ULL EVK 开发板使用 KSZ8081 这颗 PHY 芯片,I.MX6ULL-HYQ-EMMC开发板采用的是LAN8720A 这颗 PHY 芯片,理论上网络驱动程序完全通用,但是I.MX6ULL EVK 开发板的PHY复位引脚是通过74LV595芯片外扩的,我们需要将其相关的代码全部删掉,并添加上LAN8720A复位相关的代码,Uboot的驱动代码都在mx6ull_hyq_emmc.h 和 mx6ull_hyq_emmc.c 这两个文件中

修改 ENET1 网络驱动的话重点就三点:
①、ENET1 复位引脚初始化。
②、LAN8720A 的器件 ID。
③、LAN8720 驱动

目录

1.ENET1 复位引脚初始化

2.LAN8720A 的器件 ID。

3.LAN8720 驱动

4.网络驱动测试


1.ENET1 复位引脚初始化

将74LV595芯片相关的代码全部删掉,并添加上LAN8720A复位相关的代码。

 

 

 2.LAN8720A 的器件 ID。

3.LAN8720 驱动

理论上网络驱动可以通用,但是实测uboot 中的 LAN8720A 驱动有点问题,打开文件
drivers/net/phy/phy.c,找到函数 genphy_update_link,这是个通用 PHY 驱动函数,此函数用于更新 PHY 的连接状态和速度。使用 LAN8720A 的时候需要在此函数中添加一些代码,修改后的
函数 genphy_update_link 如下所示:

 

增加CONFIG_PHY_SMSC宏定义条件编译,对 SMSC 公司的 PHY进行软件复位,宏定义在mx6ull_hyq_emmc.h头文件中

 

LAN8720A是 SMSC 公司的 PHY芯片, KSZ8081是MICREL公司的 PHY 芯片,其它PHY公司的宏定义如下

 4.网络驱动测试

烧录到SD中复位开发板

 网卡2初始化成功

设置环境变量

setenv ipaddr 192.168.0.50  //开发板 IP 地址
setenv ethaddr 00:04:9f:04:d2:35 //开发板网卡 MAC 地址
setenv gatewayip 192.168.0.1 //开发板默认网关
setenv netmask 255.255.255.0  //开发板子网掩码
setenv serverip 192.168.0.105  //服务器地址,也就是 Ubuntu 地址
saveenv //保存环境变量

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值