免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3857 | 回复: 11
打印 上一主题 下一主题

[嵌入式] u-boot从flash启动,但是无法启动eth0 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-31 15:10 |只看该作者 |倒序浏览
u-boot移植正常,接下来的工作是将linux内核2.4.21移植到at91rm9200。首先下载,设置好变量,然后执行ping,可以ping通。但是在固化到flash之后,无法启动eth0。查看启动部分,如下:
eth0: Link now 10-HalfDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 10-HalfDuplex (00:00:00:00:00:00)
也就是说,原先设置的ethaddr变量没有存入,结果只能成为00:00:00:00:00:00。这时用ifconfig查看,没有显示。如果执行ifconfig eth0 <ip>,会出现如下提示:
SIOCSIFFLAGS:Cannot assign requested address。

请教了。。。

论坛徽章:
0
2 [报告]
发表于 2006-07-31 16:35 |只看该作者
ifconfig 修改 mac addr 后再试

论坛徽章:
0
3 [报告]
发表于 2006-07-31 16:53 |只看该作者
原帖由 piaoxiang 于 2006-7-31 15:10 发表
首先下载,设置好变量,然后执行ping,可以ping通。


这说MAC已经写入PHY了,不然你如何PING的通,如何可以下载?

eth0: AT91 ethernet at 0xfefbc000 int=24 10-HalfDuplex (00:00:00:00:00:00)
而之所以启动LINUX的时候MAC显示为全零,是因为,你在u-boot里设置
MAC不是合法有效的!你可以换一个试试.

论坛徽章:
0
4 [报告]
发表于 2006-07-31 17:18 |只看该作者
to a-ki:
这里的mac到底指的是什么?如果在win上,那是固化在网卡上的EPROM里。而对于at91rm9200开发板来说,这个mac地址是随时可设的吗?如果不合法,那么合法的规则是什么?多谢指点。。

论坛徽章:
0
5 [报告]
发表于 2006-07-31 17:28 |只看该作者
原帖由 connet 于 2006-7-31 16:35 发表
ifconfig 修改 mac addr 后再试


connect兄,因为没有命令modprobe,所以无法执行啊

论坛徽章:
0
6 [报告]
发表于 2006-07-31 21:57 |只看该作者
原帖由 piaoxiang 于 2006-7-31 17:18 发表
to a-ki:
这里的mac到底指的是什么?如果在win上,那是固化在网卡上的EPROM里。而对于at91rm9200开发板来说,这个mac地址是随时可设的吗?如果不合法,那么合法的规则是什么?多谢指点。。


在9200开发板上外接的是一个PHY芯片 ,MAC是存在u-boot,或者是在linux里的 。
在u-boot里,有两种方式可以设定MAC地址。
一是通过终端设定环境变量:
U-Boot> setenv ethaddr 12:34:56:78:90:ab
这种方式,你可以人为的为每块板子设定不同的MAC地址。

另外你可以定程序中做定义:
#define CONFIG_ETHADDR  12:34:56:78:90:ab

至于在linux里面MAC地址存在哪,当然可以是存在EEPROM里,但我想也应该是由程序读出来,然后由驱动构造成完整的以太网桢,再通过9200的MII接口写入PHY(如dm9161)后,由PHY来发出。不会象某些芯片会自动读入。

论坛徽章:
0
7 [报告]
发表于 2006-08-01 17:12 |只看该作者
问题: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。
思考了好长时间,没有解决。希望高手帮忙。。。。

论坛徽章:
0
8 [报告]
发表于 2006-08-01 17:20 |只看该作者
原帖由 a-ki 于 2006-7-31 21:57 发表


在9200开发板上外接的是一个PHY芯片 ,MAC是存在u-boot,或者是在linux里的 。
在u-boot里,有两种方式可以设定MAC地址。
一是通过终端设定环境变量:
U-Boot> setenv ethaddr 12:34:56:78:90:ab
这种方 ...



多谢帮忙解答了。我用的是第一种方法,今天换了第二种方法试了一下,发现仍然存在上述情况。换用了好几个mac地址,可是都不行。

论坛徽章:
0
9 [报告]
发表于 2006-08-01 18:41 |只看该作者
如果我没有记错,你的这个MAC地址(00:00:00:00:ff:01)是不属于任何一个厂家的。
你可以把你本机网卡的MAC复制过来把最近两个字节做更改再试试。我机器的的网卡是RTL8139,它的MAC地址为:00:E0:4C:4D:XX:XX。
我现在用的是u-boot-1.1.4,之前也遇到同样的问题,现在就是更改了正确的MAC地址后已经可以正常的通过NFS启动Linux了。

论坛徽章:
0
10 [报告]
发表于 2006-08-02 15:13 |只看该作者
我再试验吧,多谢a-ki了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP