【问题标题】:U-boot ethaddr is not set during the first time bootup of Linux kernelLinux内核首次启动时未设置U-boot ethaddr
【发布时间】:2018-04-24 15:33:13
【问题描述】:

我有两块来自不同供应商的板,其中第一块运行良好,另一块带有 Macronix 闪存的板无法检测到 ethaddrr。

编辑:我的硬件信息:

Working Hw:     Micoron 512MB Nor flash, AR; 32-bit 
Not working Hw: Macronix 512 MB(MX29GL256F) NOR Flash, ARM 32 bit.

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

我尝试使用 setenv 和 saveenv 将 ethaddr/mac-id 设置为 00:01:02:03:04:55,但这不起作用。

我也检查了我的 u-boot 配置。

#define CONFIG_NET_MULTI        1

我的问题是,ethaddr/mac-id 更具体,为什么它不检测某些板上的 ethddr?

这是我的错误信息:

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!

【问题讨论】:

  • 请提供更多信息,例如您使用的硬件以及完整的启动日志。然后,很可能,用主线重试 CONFIG_NET_MULTI 很长一段时间以来都毫无意义。谢谢!
  • @TomRini,这是完整的引导日志,内核没有通过 tftpboot 加载。

标签: ethernet u-boot


【解决方案1】:

永远不要突然设置 MAC 地址。内核没有接收到它,因为您的 MAC 地址设置了多播位。

见http://www.denx.de/wiki/bin/view/DULG/EthernetDoesNotWork

如果你想设置一个本地 MAC 地址,你需要确保它是有效的。 U-BOOT 你可以使用

$ 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。

这也不是内核编程问题,所以它真的不属于这里。

【讨论】:

  • 感谢您的信息。我想知道为什么某些板的 MAC 地址为空。那个 gen_ethr_addr ethaddr 是不是只用于本地测试吧?
  • gen_ethr_addr 适用于本地可管理的 MAC 地址——“通过设置地址最高有效字节的第二个最低有效位来区分地址”。不要做傻事 :-) 比如在交叉暴露的网络上使用相同的地址。
  • 板子的 MAC 地址为空,因此您可以使用自己的块对其进行测试。
猜你喜欢
  • 2015-08-09
  • 2021-07-01
  • 2020-04-22
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
相关资源
最近更新 更多