天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第三篇 新版uboot(2015.04-r0)网卡移植(RTL8211E)
来源:互联网 发布:233网校软件下载 编辑:程序博客网 时间:2024/06/07 10:09
经过前面的移植现在板子已经能成功跑起来yocto的2015.04版u-boot,但是如果我们ping主机则会提示不通,这里我们继续把u-boot的网卡移植上去,毕竟之后的内核移植少不了tftp功能。
uboot-2015-04的独立phy网卡移植本身是很简单的,这里主要做个简单分析。
1.uboot网卡初始化整体流程:
该版Uboot中网卡的启动过程如下board_init_f>>board_init_r>>initr_net>>eth_initialize.
在eth_initialize中会执行miiphy_init(),phy_init(),phy_env_init()以及board_eth_init四个函数。
2.网卡具体初始化:
miiphy_init():初始化mii_devs链表,该列表中是一系列象征mac控制器,每个miid_dev表示一条mdio总线,可挂载多个phy设备。
phy_init():根据宏定义(例如CONFIG_PHY_REALTEK、CONFIG_PHY_ATHEROS等)初始化相应一个或多个系列网卡,其中就有我们项目中使用的realtek(RTL8211E)系列网卡以及sabresd公版所使用的aheros(AR8031)系列网卡。
phy_env_init():初始化关于phy的一些uboot环境变量,这里我们不需要关心。
board_eth_init():网卡的板级初始化。
3.网卡板级具体初始化:
board_eth_init()中会执行setup_iomux_enet(),setup_pcie(),cpu_eth_init()三个函数。
其中setup_iomux_enet()函数配置网卡的rgmii接口,一般不用动这部分代码。
setup_pcie()配置板子pcie总线,具体这里也不用管。
cpu_eth_init()函数会做些网卡的芯片级初始化。
4.网卡芯片级具体初始化:
cpu_eth_init()只是调用了fecmx_initialize()函数,该函数中则只调用了fecmxc_initialize_multi(bd,-1,CONFIG_FEC_MXC_PHYADDR,IMX_FEC_BASE)函数,该函数原型为
Int fecmxc_initialize_multi(bd_t *bd.int phy_id,uinit32_t addr);
作用是初始化挂载在器件地址为phy_id的mdio上的所有phy芯片,具体实现颇复杂但也比较有意思,有兴趣的可以自行研究下,这里我们知道这些就已经足够了,如此看来似乎phy_id这个参数名如果改为phy_addr会更容易理解些。
到这里我们也就已经获得了移植RTL8211E网卡所需要的所有信息,这里做个总结:
由步骤2得知为了注册RTL8211E的驱动,需要定义CONFIG_PHY_REALTEK宏,为了探测到MDIO上我们的phy芯片(RTL8211E),需要用调用fecmxc_initialize_multi(bd,-1,CONFIG_FEC_MXC_PHYADDR,IMX_FEC_BASE),这里CONFIG_FEC_MXC_PHYADDR就是我们的网卡芯片的器件地址,可通过电路图得知我们的地址为5,也就是说需要把CONFIG_FEC_MXC_PHYADDR宏定义为数值5。
综上所述,为了移植我们的网卡芯片我们只需要两个步骤:
1.注掉include/configs/mx6sabre_common.h中的
/* #define CONFIG_PHY_ATHEROS */
并追加
#define CONFIG_PHY_REALTEK
2.把include/configs/mx6sabre_common.h中的
#define CONFIG_FEC_MXC_PHYADDR 1
改为
#define CONFIG_FEC_MXC_PHYADDR 5
注意:在2016.03版本uboot中如果启动uboot提示找不到FEC PHY需要在drivers/net/phy/phy.c下做如下修改
int __weak get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id)
{
int phy_reg;
mdelay(10);//加入睡眠10ms
...
}
- 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第三篇 新版uboot(2015.04-r0)网卡移植(RTL8211E)
- 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第三篇 新版uboot(2015.04-r0)网卡移植(RTL8211E)
- 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第二篇 新版uboot移植
- 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第四篇 新版kernel(L4.1.15-r)移植
- 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第五篇 LCD+触摸屏移植
- 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第一篇 yocto项目建立
- IM6Q yocto平台 uboot v2014.04_3.14.28_1.0.0_ga编译和调试
- uboot网卡移植
- uboot网卡移植
- 移植4- uboot之网卡驱动移植
- uboot中网卡的移植
- uboot 1.1.6 移植8900网卡+tftp
- 移植DM9000网卡驱动到uboot
- s5pv210移植uboot的网卡驱动
- 移植uboot到fl2440支持DM9000网卡
- 飞思卡尔i.MX 6Quad Android 4.2.2的LVDS屏幕驱动移植 &uboot环境变量选择屏幕
- 2440超详细uboot移植笔记(十二)------移植网卡驱动
- uboot 添加 DM9000支持,作为uboot移植网卡驱动参考
- 微服务架构之分布式事务解决方案一
- JavaScript的内置对象
- Java 笔记 之 类型转换
- PAT 1047. 编程团体赛(20)
- Python 3.X 关键字
- 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第三篇 新版uboot(2015.04-r0)网卡移植(RTL8211E)
- Microsoft Excel 2010 加载数据分析工具
- Java性能优化注意的几个细节规则
- 错误信息的收集
- Android Studio设置护眼背景色
- ECMA-262-5 词法环境:ECMA实现(一)--- 简介
- Android Studio常用快捷键
- python调用dll例子
- hi3531 uboot phy调试总结