uboot移植网络驱动配置

文章介绍了如何在IMX6ULLminiV2.2开发板上配置网络驱动,涉及修改PHY地址、选择适当的PHY芯片(如从KSZ8081改为SR8201F),以及网络复位引脚的GPIO配置和复位操作。通过删除原有配置,添加新的GPIO宏定义,并调整初始化代码来适应新的网络设置。最后,文章强调了正确延时的重要性,以及编译烧录UBOOT后的测试步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发设备imx6ull miniV2.2版本
在上一章节中我们已经讲解过UBOOT开发移植与LCD分辨率修改,这节我们讲解网络驱动配置,前提是需要电脑与虚拟机互通,我将单独在写一片三端互通的文章。
那么修改网络驱动我们需要先修改网口地址,打开原理图可以看到mini只有一个网口为ENET2
在这里插入图片描述
ENET2需要外接一个PHY芯片来实现网络通信功能,也就是内部MAC+外部PHY芯片来实现。在上个原理图我们可以看到PHY ADDR:0X01那么代码中默认的也为0X1我们不需要进行修改
在这里插入图片描述
KSZ8081 这颗 PHY 芯片就是 Micrel 公司生产的,不过 Micrel 已经被Microchip 收购了。如果要使用 SR8201F,那么就得CONFIG_PHY_MICREL 改为 CONFIG_PHY_REALTEK。
在这里插入图片描述

NXP默认的UBOOT代码使用的是74LV595,我们需要对网络复位引脚进行修改打开开发板原理
在这里插入图片描述
看到复位引脚是SNVS_TAMPER8这个引脚,对应GPIO5_IO08
在这里插入图片描述
我们在对应板子C文件中加上该引脚的宏定义

#define ENET2_RESET IMX_GPIO_NR(5 ,8)

删掉74LV595的引脚配置

static iomux_v3_cfg_t const iox_pads[] 
static void iox74lv_init(void)
void iox74lv_set(int index)

这三个函数
在板子初始化的过程中会调用 imx_iomux_v3_setup_multiple_pads 和 iox74lv_init 这两个函数来初始化74lv595 的 GPIO

int board_init(void)
{
......
imx_iomux_v3_setup_multiple_pads(iox_pads, ARRAY_SIZE(iox_pads));
 iox74lv_init();
 ......
 return 0;
}

我们将这两个函数删掉

imx_iomux_v3_setup_multiple_pads(iox_pads, ARRAY_SIZE(iox_pads));
 iox74lv_init();

我们找到网络2引脚的IO配置将我们对应的网络复位引脚加入进去

MX6_PAD_SNVS_TAMPER8_GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),

在这里插入图片描述
然后我们得添加对应网络引脚一个复位的操作过程
在这里插入图片描述
我们通过改变引脚的高低电平让其复位一下,最后延时150ms,该板子使用的SR8210F,这个延时是有明确要求的,要不让将无法识别SR8210F。最后我们梳理一下网络驱动配置过程
不管你用什么板子第一步我们需要修改PHY地址,不同的板子使用不同的芯片对应的地址是不同的,我们需要打开开发板原理图进行确认然后对ENET1与ENET2的PHY地址进行赋值。然后根据网络驱动芯片的公司将修改成对应公司。

#define CONFIG_PHY_REALTEK

然后定义对应网络复位引脚,引脚定义我们还是去对应开发板原理图中寻找。删掉NXP自带的网络引脚和相关函数(如果你跟NXP是一个芯片型号那就不用了)定义完事之后将其添加到对应网络复位引脚驱动中,然后在写网络IO初始化代码并且复位一下 PHY 芯片。延时的长短是要根据你芯片手册来确认的。最后我们编译UBOOT烧录到SD卡中,并设置好其ip等配置。ping一下虚拟机IP可以看到我们的网络配置已经成功。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值