u-boot-2016.09移植(6)-dm9000

时间:2021-08-15 06:35:22

TQ210的自带网卡是DM9000AE,u-boot已经自带了 DM9000A 的驱动,我们需要做的就是讲该驱动添加到我们的设备当中。

一、网卡启动分析

在board_init_r调用的init_sequence_r函数数组中找到网卡net信息

u-boot-2016.09移植(6)-dm9000

这里看出网卡信息是用宏CONFIG_CMD_NET来管理是否添加到uboot,所以需要在tq210.h中定义宏

u-boot-2016.09移植(6)-dm9000

接着看eth_initialize(),发现这个函数在net/eth_legacy.c中,其中主要执行的初始化为board_eth_init函数,发现在这个函数在tq210.c中

u-boot-2016.09移植(6)-dm9000

因为我们的网卡为DM9000,在DM9000的驱动找到相似的初始化,将其替换为DM9000的初始化。

u-boot-2016.09移植(6)-dm9000

二、添加DM9000驱动

由上面知道我们的网卡是DM9000,所以需要我们把其驱动添加到编译程序中,查看drivers/net/Makefile

u-boot-2016.09移植(6)-dm9000

网卡由宏CONFIG_DRIVER_DM9000来控制,所以在include/configs/tq210.h中添加宏:

u-boot-2016.09$ vim include/configs/tq210.h    

u-boot-2016.09移植(6)-dm9000

将tq210.c中board_init的smc9115_pre_init改为dm9000的初始化:

u-boot-2016.09$ vim board/samsung/tq210/tq210.c 

u-boot-2016.09移植(6)-dm9000

同时添加dm9000的硬件初始化:

u-boot-2016.09移植(6)-dm9000

编译,发现CONFIG_DM9000_BASE、DM9000_IO、DM9000_IO没有定义,在tq210.c中增加宏:

u-boot-2016.09移植(6)-dm9000

再次编译,产生u-boot.bin。

烧录、启动开发板,发现能够读取到dm9000网卡,到这里网卡移植完成。

u-boot-2016.09移植(6)-dm9000

三、测试网卡

我们需要添加一些测试命令来检查网络是否畅通,如ping、tftp。首先进入include/config_cmd_all.h我们的uboot支持哪些命令

u-boot-2016.09移植(6)-dm9000

另外在smdkv210.h中包含了头文件config_cmd_default.h,里面定义了一些命令,这是u-boot默认 配置的命令,我们看下里面有没有我们需要配置的,如果没有,我们就需要自己配置,发现里面没有PING命令,我们就在include/configs/tq210.h中添加PING

#define CONFIG_CMD_PING

在uboot中设置ip等信息,在include/configs/tq210.h添加宏:

u-boot-2016.09移植(6)-dm9000

IPADDR为开发板IP
NETWORK为开发板子网掩码
SERVERIP为我们配置了tftp的电脑IP,这里是我的办公电脑IP
ETHADDR为开发板MAC地址

再次编译,生成u-boot.bin,烧录到SD卡,启动开发板,进入uboot,使用ping命令来PING自己的电脑,ping通,则说明网卡移植完成,否则在仔细debug,查找问题。