首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux内核的第一次启动期间,不设置U-boot ethaddr。

在Linux内核的第一次启动期间,不设置U-boot ethaddr。
EN

Stack Overflow用户
提问于 2018-04-23 12:36:36
回答 1查看 4.8K关注 0票数 1

我有来自不同厂商的两块板,其中第一块很好地使用Macronix闪存的其他板无法检测到ethaddrr。

编辑:我的硬件信息:

代码语言:javascript
复制
Working Hw:     Micoron 512MB Nor flash, AR; 32-bit 
Not working Hw: Macronix 512 MB(MX29GL256F) NOR Flash, ARM 32 bit.

我检查了env变量中没有ethaddr。我检查了我的工作板,我有ethaddr变量ethaddr=00:01:02:03:04:54

我尝试使用setenvsaveenv将ethaddr/mac-id设置为00:01:02:03:04:55,但这是行不通的。

我也检查了我的u引导配置。

代码语言:javascript
复制
#define CONFIG_NET_MULTI        1

我的问题是,ethaddr/mac-id是Hw特有的,为什么它不在某些板中检测ethddr呢?

这是我的错误信息:

代码语言:javascript
复制
U-Boot 2010.09 (Apr 16 2018 - 10:59:13)
DRAM:  32 MiB
Flash: 32 MiB
In:    serial
Out:   serial
Err:   serial
Net:   macb0
Hit any key to stop autoboot:  0
Checking firmware at 0x100e0000-0x107fffff
  invalid magic 0xffff, ignoring
Checking firmware at 0x10820000-0x10f3ffff
  invalid magic 0xffff, ignoring
highest = 0
No valid firmware in flash, trying to load kernel and ramdisk from server
macb0: PHY present at 0
macb0: Starting autonegotiation...
macb0: Autonegotiation complete
macb0: link up, 100Mbps full-duplex (lpa: 0xcde1)
*** ERROR: `ethaddr' not set
macb0: PHY present at 0
macb0: link up, 100Mbps full-duplex (lpa: 0xcde1)
Wrong Image Format for bootm command
ERROR: can't get kernel image!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 18:08:34

不要突然设置MAC地址。内核没有选择它,因为您的MAC地址已经设置了多播位。

请参阅http://www.denx.de/wiki/bin/view/DULG/EthernetDoesNotWork

如果要设置本地MAC地址,则需要确保其有效。您可以通过使用

代码语言:javascript
复制
$ make tools/gen_eth_addr
cc     tools/gen_eth_addr.c   -o tools/gen_eth_addr
$ tools/gen_eth_addr
ba:d0:4a:9c:4e:ce

详情请参见http://www.denx.de/wiki/bin/view/DULG/WhereCanIGetAValidMACAddress

而且,这不是一个内核编程问题,所以它真的不属于这里。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49981264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档