u-boot 2013.04-rc1移植(7)

DM9000网卡移植

u-boot默认的网卡是CS8900,而DM9000拥有高性价比,在嵌入式领域广泛被采用。uboot对DM9000支持的已经很完善,稍作修改,就可以使用。

1、修改:/home/eric/Documents/u-boot-2013.04-rc1/include/configs/smdk6410.h,屏蔽CS8900相关定义,增加DM9000支持

/*
 * Hardware drivers
 */
#if 0       //eric++ 2017-11-12
#define CONFIG_CS8900           /* we have a CS8900 on-board    */
#define CONFIG_CS8900_BASE      0x18800300
#define CONFIG_CS8900_BUS16     /* follow the Linux driver  */
#endif

#define CONFIG_DM9000           /* we have a DM9000 on-board    */
#define CONFIG_DM9000_BASE      0x18800300
#define CONFIG_DM9000_USE_16BIT     /* follow the Linux driver  */
#define CONFIG_DM9000_NO_SROM       1
#define CONFIG_DRIVER_DM9000    1
#define DM9000_IO       CONFIG_DM9000_BASE
#define DM9000_DATA     (CONFIG_DM9000_BASE+4)

#define CONFIG_ETHADDR      00.20.40.80.0a.0b
#define CONFIG_NET_MASK     255.255.255.0
#define CONFIG_IPADDR       192.168.1.2
#define CONFIG_SERVERIP     192.168.1.136
#define CONFIG_GATEWAYIP    192.168.1.1

注意:其中服务器IP要为电脑的IP,因为稍后会用电脑模拟服务器,而本机IP要和服务器IP位于同一网段。这样才可以在局域网内进行通讯。

2、修改:/home/eric/Documents/u-boot-2013.04-rc1/board/samsung/smdk6410/smdk6410.c

int board_eth_init(bd_t *bis)
{
    int rc = 0;
#ifdef CONFIG_CS8900
    rc = cs8900_initialize(0, CONFIG_CS8900_BASE);
#endif
#ifdef CONFIG_DM9000    //eric++ 2017-11-12
    rc = dm9000_initialize( bis );
#endif
    return rc;
}

3、编译启动!

U-Boot 2013.04-rc1 (Nov 12 2017 - 13:45:23) for SMDK6410

CPU:     S3C6410@533MHz

         Fclk = 533MHz, Hclk = 133MHz, Pclk = 66MHz (ASYNC Mode) 

Board:   SMDK6410

DRAM:  128 MiB

WARNING: Caches not enabled

Flash: *** failed ***

NAND:  256 MiB

MMC:   Samsung  Host Controller: 0,3.6 GiB


*** Warning - bad CRC, using default environment


In:    serial

Out:   serial

Err:   serial

Net:   dm9000

Hit any key to stop autoboot:  0 


NAND read: device 0 offset 0x60000, size 0x1c0000

 1835008 bytes read: OK

Wrong Image Format for bootm command

ERROR: can't get kernel image!

网卡已成功切换成DM9000

4、设备接上网线,连接路由,保证和电脑在同一局域网内,用ping命令测试,是否连通:

SMDK6410 # ping 192.168.1.136

dm9000 i/o: 0x18800300, id: 0x90000a46 

DM9000: running in 16 bit mode

MAC: 00:40:5c:26:0a:5b

operating at 100M full duplex mode

Using dm9000 device

host 192.168.1.136 is alive

SMDK6410 #  

如果网络配置不对,或者网络没有连接好,则会ping failed;

SMDK6410 # ping 192.168.1.136

dm9000 i/o: 0x18800300, id: 0x90000a46 

DM9000: running in 16 bit mode

MAC: 00:40:5c:26:0a:5b

could not establish link

Using dm9000 device

ping failed; host 192.168.1.136 is not alive

SMDK6410 # 

6、利用tftp进行下载u-boot到nand flash中,Linux配置tftp服务器,或者window开启tftp32;
原理:从tftp服务器下载u-boot-nand.bin到RAM中,再烧写nand flash。

开启windows中tftp32,模拟一个tftp服务器,Current Directory中放入u-boot-nand.bin文件。
tftp32
执行如下命令:

SMDK6410 # tftp 50008000 u-boot-nand.bin
dm9000 i/o: 0x18800300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:40:5c:26:0a:5b
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 192.168.1.136; our IP address is 192.168.1.2
Filename 'u-boot-nand.bin'.
Load address: 0x50008000
Loading: ####################
         444.3 KiB/s
done
Bytes transferred = 280712 (44888 hex)
SMDK6410 #
SMDK6410 # nand erase.chip

NAND erase.chip: device 0 whole chip
Skipping bad block at  0x02960000
Skipping bad block at  0x06860000
Skipping bad block at  0x07220000
Skipping bad block at  0x08d00000
Skipping bad block at  0x0df60000
Skipping bad block at  0x0fc40000
Erasing at 0xffe0000 -- 100% complete.
OK
SMDK6410 # nand write.uboot 50008000 0 0

NAND write: device 0 offset 0x0, size 0x0
 516096 bytes written: OK
SMDK6410 #

经过以上三个命令顺利将服务器中的u-boot-nand.bin烧录至nand flash中。和用SD卡进行烧写nand相比,方便很多!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值