2

我有一个嵌入式系统,需要我从闪存中提取 MAC 地址,并在启动时将其传递给以太网接口。传统上,我在 init 脚本中修改了对 ifconfig 的调用,只传递从闪存中取出的 MAC 作为hw ether参数。

我正在开发的系统使用 connman 来处理网络连接。嵌入式系统将始终具有单个以太网连接,并在闪存中以自定义格式具有单个匹配的 MAC 地址。connman 用于当接口可用时发生变化,因此拥有一个动态系统来处理接口的上下移动和配置是有帮助的。

是否可以将 MAC 传递给 connman,以便以与我之前使用 ifconfig 类似的方式使用,如果可以,如何使用?

或者,是否可以将 MAC 作为引导参数传递给内核,以便 connman 永远不必知道这一点?我可以在 U-Boot 中将 MAC 从闪存中拉出,但 U-Boot 无法使用以太网设备。

4

1 回答 1

1

或者,是否可以将 MAC 作为引导参数传递给内核,以便 connman 永远不必知道这一点?

是的,您可以使用 U-Boot 的ethaddr环境变量来做到这一点。

查看U-Boot 环境变量以获取有关该变量的文档。

相关文档片段:

ethaddr:第一个/唯一以太网接口的以太网 MAC 地址(= Linux 中的 eth0)。此变量只能设置一次(通常在电路板制造期间)。一旦设置了这个变量,U-Boot 就拒绝删除或覆盖它。

可能就像运行以下命令来设置环境变量并保存它一样简单(当然要替换你的 MAC 地址):

setenv ethaddr 11:22:33:44:55:66
saveenv

如果ethaddr您的 U-Boot 引导行中尚未使用它,那么您需要做的不仅仅是上述操作。有关如何在系统上进行配置的示例,请查看如何在 LeopardBoard DM36x 中设置固定 MAC 地址

ethaddr这是利用上述站点结束的引导命令:

setenv bootcmd 'setenv bootargs \${bootargs} davinci_emac.ethaddr=\${ethaddr}; nboot 0x82000000 0 \${kerneloffset}'
于 2016-04-15T20:26:41.787 回答