uboot移植网络驱动配置

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

NXP默认的UBOOT代码使用的是74LV595,我们需要对网络复位引脚进行修改打开开发板原理
uboot移植网络驱动配置_第4张图片
看到复位引脚是SNVS_TAMPER8这个引脚,对应GPIO5_IO08
uboot移植网络驱动配置_第5张图片
我们在对应板子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),

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

#define CONFIG_PHY_REALTEK

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

你可能感兴趣的:(单片机,嵌入式硬件)