Linux 内核首次启动时未设置 U-boot ethaddr
U-boot ethaddr is not set during the first time bootup of Linux kernel
我有两块来自不同供应商的板,其中第一块运行良好,另一块带有 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!
永远不要突然设置 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。
此外,这不是内核编程问题,所以它真的不属于这里。
我有两块来自不同供应商的板,其中第一块运行良好,另一块带有 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!
永远不要突然设置 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。
此外,这不是内核编程问题,所以它真的不属于这里。