2440超详细uboot移植笔记(十二)------移植网卡驱动

你好!这里是风筝的博客,

欢迎和我一起交流。


a.之前我们2440超详细uboot移植笔记(九)------修改错误设置的CONFIG_DM9000_BASE等的值是参考别人的配置文件修改的,

现在我们要修改成适应我们开发板的参数.

 

b. 将

#define CONFIG_DM9000_BASE 0x2c000000

修改为:

#define CONFIG_DM9000_BASE 0x20000000

 

c. 解决Net:   No ethernet found问题:

在smdk2440.c文件中,修改board_eth_init函数:

int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_CS8900
rc = cs8900_initialize(0, CONFIG_CS8900_BASE);
#endif
#ifdef CONFIG_DRIVER_DM9000
rc = dm9000_initialize(bis);
#endif
return rc;
}

 

d.在smdk2440.h文件里修改默认环境参数:

#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.1.104
#define CONFIG_SERVERIP 192.168.1.102
#define CONFIG_ETHADDR 00:0c:29:f1:28:2f

/*ip和路由器ip同一个网段即可*/


/*表示内核打印信息从串口0输出,文件系统在mtdblock3*/
#define CONFIG_BOOTARGS "console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=yaffs2 "
#define CONFIG_BOOTCOMMAND "nand read 30000000 kernel;bootm 30000000"

uboot通过这两条命令来启动内核.其中,设置了CONFIG_BOOTCOMMAND就会使得uboot倒数5s后进入内核,表示从30000000读取到kernel这个分区,当然,kernel分区我们现在还没设置。其中,在smdk2440_defconfig文件(路径:configs\smdk2440_defconfig)中可以修改进入系统的倒计时时间.

 

d. 在env_default.h(路径:include\env_default.h)文件中,

在default_environment数组中添加:

#ifdef CONFIG_ETHADDR
"ethaddr=" __stringify(CONFIG_ETHADDR) "\0"
#endif

 

 

 

f.至此,uboot已经可以识别我们的网卡了,而且可以ping通我们的虚拟机:

注意:如果设置了参数,此时还不能用save命令保存设置的参数,因为还未设置参数保存的地址,如果使用可能会破坏nand上的重要数据。

 

g.在新版uboot中,使用tftp下载时会出现一个提示:could not establish link

 

h. 执行

grep "could not establish link" * -nR

命令,会发现:

drivers/net/dm9000x.c:371:                      printf("could not establish link\n");

可知我们需要修改下dm9000x.c这个文件.

 

i. 注释掉以下语句:

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;
}
}

 

 

 

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值