本节中移植uboot的网卡驱动。
JZ2440 V2开发板上的网卡芯片是DM9000,但是在uboot中默认的侍CS8900,需要重新配置。
1. 加入DM9000网卡驱动
通过查看drivers/net/Makefile
, 可以看到在定义CONFIG_DRIVER_DM9000
之后才会编译DM9000的驱动程序,因此修改单板配置文件include/configs/smdk2440.h
#if 0
#define CONFIG_CS8900 /* we have a CS8900 on-board */
#define CONFIG_CS8900_BASE 0x19000300
#define CONFIG_CS8900_BUS16 /* the Linux driver does accesses as shorts */
#else
#define CONFIG_DRIVER_DM9000
#define CONFIG_DM9000_BASE 0x20000000
#define DM9000_IO CONFIG_DM9000_BASE
#define DM9000_DATA (CONFIG_DM9000_BASE + 4)
#endif
CONFIG_DM9000_BASE
,DM9000_IO
, DM9000_DATA
可以根据自带的其他单板使用DM9000驱动时的配置来设置,DM9000_DATA
的设置时因为在原理图中CMD
引脚接了LADDR2,偏移量为4
2. 修改board_eth_init
函数
函数调用关系如下
board_init_r
|>>>>>>>>initr_net
|>>>>>>>>>>>>>>>eth_initialize
|>>>>>>>>>>>>>>>>>>>>>board_eth_init
但是在board_eth_init
函数中只有CS8900的初始化,应该加入DM9000的初始化函数
#ifdef CONFIG_CMD_NET
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;
}
#endif
3. 配置网络参数
在include/configs/smdk2440.h
中
#define CONFIG_NETMASK 255.255