ok6410官方光盘中所带uboot是不支持ping和tftp等网络功能的。因此需要对uboot源代码稍作修改,否则会提示:CS8900 Ethernet chip not found?!
原因就是因为在boot1.1.6/include/configs/smdk6410.h,里面确实是配置为网卡使用CS8900。而实际上开发板的网卡配的是DM9000。
解决这个问题,网上有很多资料可以作为参考,但我还是想把自己的修改以及遇到的问题分享回来,避免其他像我这样的初学者再走弯路。
1)修改smdk6410.h
/******************************************************************************/
/* 把驱动改为dm9000,让boot的网络功能用起来 */
/******************************************************************************/
// 注释掉下面3行
// #define CONFIG_DRIVER_CS8900 0 /* we have a CS8900 on-board */
// #define CS8900_BASE 0x18800300
// #define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
/* 2013/08/19 修改uboot实现tftp下载内核 */
// 增加下面4行
#define CONFIG_DRIVER_DM9000 1
#define CONFIG_DM9000_BASE 0x18000300 /*XM0CSN1*/
#define DM9000_IO CONFIG_DM9000_BASE
#define DM9000_DATA (CONFIG_DM9000_BASE + 4) /*ADDR2*/
#define CONFIG_DM9000_USE_16BIT
2)使用天嵌的光盘资料下的dm9000x.c和dm9000x.h替换OK6410的u-boot里的同名文件即可。
(dm9000x.c和dm9000x.h这两个文件可在网上下到)
3)编译
#make clean;
#make smdk6410_config
#make
4)升级uboot.bin文件
5)修改boot参数
例如;
netmask=255.255.255.0
serverip=192.168.0.101
gatewayip=192.168.0.1
ipaddr=192.168.0.232
我当时升好boot之后忘了改参数,导致ping的时候提示:
SMDK6410 # ping 192.168.0.100
Found DM9000 ID:90000a46 at address 18000300 !
DM9000 work in 16 bus width
bd->bi_entaddr: 00:40:5c:26:0a:b5
[eth_init] MAC:0:40:5c:26:a:b5:
ping failed; host 192.168.0.100 is not alive(网络不通)
当时还没意识到要改ip,结果还去反复的对比了一下源代码,以为自己哪里漏改掉了。