embedded-linux - 如何在嵌入式 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 地址(并找到合适的位置来转储它)看起来并不好。
我确实有更好的想法,但是,在我开始重新发明轮子之前,我想问问是否有一些成熟的做法来解决这个问题。
解决方案
推荐阅读
- c# - 如何拉出listview选中条目的item和subitem
- php - Hash 512 在 Python 中给出的结果与 PHP 不同
- java - 如何在 Spring 中创建一个通过动态生成自动装配的通用字段?
- javascript - 无法通过 id 滚动查看(平滑) - HTML/JS
- php - 带模式的搜索字符串查询
- mysql - 如何比较每月的重要日期与 MYSQL?
- groovy - 使用 groovy 设置 GET 请求的参数
- javascript - 如何将参数传递给VueJS中的函数
- for-loop - 如何强制结束 for 循环的迭代(不停止 for 循环)?
- charts - Chart.js 标签未显示在顶部