本文主要是介绍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; } } |
这篇关于TX2440 ARM开发板Uboot移植(四、对DM9000网卡的支持)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!