TX2440 ARM开发板Uboot移植(四、对DM9000网卡的支持)

1、在drivers/net/ 目录下有DM9000的驱动代码,在dm9000x.h中对CONFIG_DRIVER_DM9000宏的依赖,dm9000x.c中对CONFIG_DM9000_BASE宏、DM9000_IO宏、DM9000_DATA等宏的依赖,所以首先修改 include/configs/smdk2440.h ,在文件中加入这些宏的定义:

/* * Hardware drivers */  屏蔽u-boot默认对CS8900网卡的支持
//#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
//#define CS8900_BASE          0x19000300
//#define CS8900_BUS16         1 /* the Linux driver does accesses as shorts */
 
//添加u-boot对DM9000X网卡的支持

#define CONFIG_DRIVER_DM9000    1  
#define CONFIG_DM9000_NO_SROM   1
#define CONFIG_DM9000_BASE      0x20000300  //网卡片选地址
#define DM9000_IO               CONFIG_DM9000_BASE
#define DM9000_DATA             (CONFIG_DM9000_BASE + 4)   //网卡数据地址
#define CONFIG_DM9000_USE_16BIT 1
注意:
u-boot-2009.08 可以自动检测DM9000网卡的位数,根据开发板原理图可知网卡的数据位为16位,并且网卡位于CPU的BANK4上,所以只需在 board/samsung/my2440/lowlevel_init.S中设置 #define B4_BWSCON (DW16) 即可,不需要此处的 #define CONFIG_DM9000_USE_16BIT 1
 
//给u-boot加上ping命令,用来测试网络通不通
#define CONFIG_CMD_PING  
 
//恢复被注释掉的网卡MAC地址和修改你合适的开发板IP地址
#define CONFIG_ETHADDR   08:00:3e:26:0a:5b  //开发板MAC地址
#define CONFIG_NETMASK   255.255.255.0
#define CONFIG_IPADDR    192.168.1.105      //开发板IP地址
#define CONFIG_SERVERIP  192.168.1.103      //TFTP主机IP地址

2、修改 board/samsung/my2440/smdk2440.c 文件,添加板载DM9000网卡初始化代码,如下:

#include <net.h>
#include <netdev.h>

#ifdef CONFIG_DRIVER_DM9000
int board_eth_init(bd_t *bis)
{
    return dm9000_initialize(bis);
}
#endif

3、修改MD9000网卡驱动代码 drivers/net/dm9000x.c:

//注释掉eth_init函数中的这一部分,不然使用网卡的时候会报“could not establish link”的错误
i = 0;
while (!(phy_read(1) & 0x20)) {    /* autonegation complete bit */
 udelay(1000);
 i++;
 if (i == 10000) {
  printf("could not establish link ");
  return 0;
 }
}
重新编译u-boot,下载到Nand中从Nand启动,查看启动信息和环境变量并使用ping命令测试。

你可能感兴趣的:(网卡,移植,u-boot,交叉编译,fl2440)