您的位置:首页 > 其它

u-boot-2016.05移植:(5)、支持DM9000网卡

2016-08-22 14:25 525 查看
1、在u-boot-2016.05\include\configs\smdk2440.h中修改

/*
* Hardware drivers
*/
#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 */




/*
* Hardware drivers
*/
#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_CMD_NET
在自动配置文件include/config/auto.conf中被设置为y:

CONFIG_CMD_NET=y


编译u-boot时将自动配置,所以,
CONFIG_CMD_NET
是宏定义了的。

2、设置MAC地址:

在u-boot-2016.05\include\configs\smdk2440.h中添加

#define CONFIG_ETHADDR      00:0c:29:4d:e4:f4


在u-boot-2016.05\include\env_default.h文件中的default_environment数组中添加:

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


3、在u-boot-2016.05\board\samsung\smdk2440\smdk2440.c:board_eth_init函数中添加

#ifdef CONFIG_DRIVER_DM9000
rc = dm9000_initialize(bis);
#endif


然后编译并烧写就可以识别到DM9000网卡了。

4、测试:

设置ip地址,然后ping主机来验证是否真的支持了DM9000。

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

5、分析过程:

u-boot-2016.05\common\board_r:board_init_r函数中的初始化序列init_sequence_r中的:
initr_net
eth_initialize(u-boot-2016.05\net\eth_legacy.c)
board_eth_init(u-boot-2016.05\board\samsung\smdk2440\smdk2440.c)
dm9000_initialize(u-boot-2016.05\drivers\net\dm9000x.c)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: