首页 > 解决方案 > 如何在嵌入式 Linux 产品中序列化 MAC 地址?

问题描述

显然,内核中的当前趋势(如果我错了,请纠正我)是将它嵌入到设备树中。

几位司机打电话证明了这一点

const void *of_get_mac_address(struct device_node *np)
{
    const void *addr;

    addr = of_get_mac_addr(np, "mac-address");
    if (addr)
        return addr;

    addr = of_get_mac_addr(np, "local-mac-address");
    if (addr)
        return addr;

    addr = of_get_mac_addr(np, "address");
    if (addr)
        return addr;

    return of_get_mac_addr_nvmem(np);
}

在初始化例程中。

问题是:

生产中序列化的“最佳实践”是什么?

正常的程序是在生产线的末端有一个“编程站”来加载所有需要的数据的闪存(在我的例子中是 SPI NOR);其中大部分是静态的,但一小部分需要“序列化”。

在我的例子中,这个序列化数据被加载到一个非常小的 MTD 分区中。

我当前的策略 id 在启动阶段检索它并使用类似macchanger.

除了不雅之外,这意味着不同的地址将在短时间内在线出现。

OTOH 重建完整的 .dtb 只是为了更改 MAC 地址(并​​找到合适的位置来转储它)看起来并不好。

确实有更好的想法,但是,在我开始重新发明轮子之前,我想问问是否有一些成熟的做法来解决这个问题。

标签: embedded-linuxmac-addressdevice-tree

解决方案


推荐阅读