TQ2440移植u-boot2016.11 dm9000网卡驱动
uboot中含有成熟的DM9000网卡驱动,只做简单的修改即可使用。
编辑文件:gedit board/samsung/tq2440/tq2440.c
将board_eth_init
函数替换为:
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_DRIVER_DM9000
rc = dm9000_initialize(bis);
#endif
return rc;
}
编辑文件:gedit include/configs/tq2440.h
找到默认的网络配置信息:
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 10.0.0.110
#define CONFIG_SERVERIP 10.0.0.1
替换为:
#define CONFIG_GATEWAYIP 192.168.166.1 /* 网关 */
#define CONFIG_NETMASK 255.255.255.0 /* 掩码 */
#define CONFIG_IPADDR 192.168.166.253 /* 开发板IP地址 */
#define CONFIG_SERVERIP 192.168.166.254 /* 服务器IP地址 */
#define CONFIG_ETHADDR 00:11:22:33:44:aa /* MAC地址 */
此处的IP地址和服务器地址根据你自己的实际地址进行修改!
添加MAC地址的默认环境变量,编辑文件:gedit include/env_default.h
找到:
#ifdef CONFIG_SERVERIP
"serverip=" __stringify(CONFIG_SERVERIP) "\0"
#endif
在下方添加:
#ifdef CONFIG_ETHADDR
"ethaddr=" __stringify(CONFIG_ETHADDR) "\0"
#endif
解决新版u-boot使用dm9000网卡会出现“could not establish link”的提示,编辑文件:gedit drivers/net/dm9000x.c
,找到dm9000_init
函数,屏蔽掉测试dm9000网卡驱动的代码:
#if 0
i = 0;
while (!(dm9000_phy_read(1) & 0x20)) { /* autonegation complete bit */
udelay(1000);
i++;
if (i == 10000) {
printf("could not establish link\n");
return 0;
}
}
#endif
编译U-BOOT然后通过tftp下载到0x30008000地址处,查看实验效果:
识别测试成功!