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

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)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值