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

来源:互联网 发布:哪个软件直播笑傲江湖 编辑:程序博客网 时间:2024/04/30 08:00

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)
0 0
原创粉丝点击