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

2023-11-01 48浏览
百检网是一家专业的第三方检测平台,汇聚众多拥有权威资质的第三方检测机构为你提供一站式的检测服务,做检测就上百检网。百检网让检测从此检测,一份报告全国通用,专业值得信赖。

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

一、网卡启动分析

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

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

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

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

二、添加DM9000驱动

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

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

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

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

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

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

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

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

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

三、测试网卡

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

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

#define CONFIG_CMD_PING

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

IPADDR为开发板IP

NETWORK为开发板子网掩码

SERVERIP为我们配置了tftp的电脑IP,这里是我的办公电脑IP

ETHADDR为开发板MAC地址

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

百检网秉承“客户至上,服务为先,精诚合作,以人为本”的经营理念,始终站在用户的角度解决问题,为客户提供“一站购物式”的新奇检测体验,打开网站,像挑选商品一样简单,方便。打破行业信息壁垒,建构消费和检测机构之间高效的沟通平台