- 论坛徽章:
- 0
|
问题:u-boot从flash启动后ethaddr无效,导致eth0无效。
环境:移植到at91rm9200,u-boot的版本为 1.1.1
具体过程如下:
u-boot移植运行正常,过程就不叙述了。在u-boot运行正常的情况下,准备移植内核:
大体上的规划如下:
0x0000 0000
INTERNAL ROM(128K BYTES)
0x1000 0000(第0扇区)
boot.bin FLASH
0x1001 0000(第0扇区)
uboot.gz FLASH
0x1002 0000(第1扇区)
ulmage FLASH
0x1012 0000(第16扇区)
ramdisk FLASH
0x107E0000(第63扇区)
u-boot环境变量 FLASH
0x2000 0000
SDRAM
0x2100 0000
ulmage SDRAM
0x2110 0000
ramdisk SDRAM
我采用的是第一种,在终端设定环境变量。具体如下:
u-boot>setenv ipaddr 192.168.1.100 #设定目标板ip
u-boot>setenv serverip 192.168.1.106 #主机ip
u-boot>setenv ethaddr 00:00:00:00:ff:01 #设定目标板mac地址
u-boot>saveenv #保存环境变量
u-boot>tftpboot 20000000 boot.bin #采用tftp协议,将boot.bin下载到20000000的SDRAM
u-boot>protect off 1:0 #除保护
u-boot>erase 1:0 #清除bank1的第0扇区
u-boot>cp.b 20000000 10000000 2984 #把boot.bin从ram复制到flash区10000000处,2984为boot.bin的大小(16进制)
u-boot>tftpboot 20000000 u-boot.bin.gz #同上
u-boot>cp.b 20000000 10010000 aacf
然后更换引脚,设为片外启动。断电重启,这是u-boot从flash开始引导,出现提示符,设定环境变量使过程自动化:
u-boot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200 mem=32M
u-boot>setenv bootcmd tftpboot 21100000 ramdisk-rmk7\;tftpboot 21000000 uImage\;bootm 21000000
u-boot>saveenv
u-boot>run bootcmd
成功进入login提示,输入root,进入系统:
#ifconfig eth0 192.168.1.100
#ping 192.168.1.106
可以ping通。
接下来要固化到flash里面:
u-boot>setenv bootcmd tftpboot 21100000 ramdisk-rmk7\;tftpboot 21000000 uImage
u-boot>saveenv
u-boot>run bootcmd
u-boot>protect off 1:2-11
u-boot>erase 1:2-11
u-boot>cp.b 21000000 10020000 9c64f
u-boot>erase 1:12-60
u-boot>cp.b 21100000 10120000 5591e6
u-boot>setenv bootcmd cp.b 10020000 21000000 9c64f\;cp.b 10120000 21100000 5591e6\;bootm 21000000
u-boot>saveenv
重新上电后,顺利进入login,输入root进入,执行命令如下:
AT91RM9200DK login: root
[root@AT91RM9200DK /root]$ifconfig eth0 192.168.1.100
SIOCSIFFLAGS: Cannot assign requested address
[root@AT91RM9200DK /root]$ifconfig
[root@AT91RM9200DK /root]$ifconfig eth0 up
SIOCSIFFLAGS: Cannot assign requested address
[root@AT91RM9200DK /root]$
查看启动提示过程,发现:
eth0: Link now 10-HalfDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 10-HalfDuplex (00:00:00:00:00:00)
eth0: Davicom 9196 PHY (Copper)
也就是说mac地址没有写入,成为了00:00:00:00:00:00。
思考了好长时间,没有解决。希望高手帮忙。。。。 |
|