2394117_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2394117_zh-CN

2394117_zh-CN

如何为我们使用的 i.mx RT1062 路由器获取唯一的以太网 MAC 地址?

你好,

我们使用MIMXRT1062DVL6B,并通过以太网实现我们的产品。

首先,我们使用 `fsl_silicon_id.c` 中的 ` SILICONID_ConvertToMacAddr`为我们的产品实现 MAC 地址以便使用 NXP 的 OUI 和硅 ID 为每个设备获取唯一的 MAC 地址。

但是,我们通过` SILICONID_ConvertToMacAddr`获取的 MAC 地址并不唯一,它们都相同。

我有个问题。

在调用 `SILICONID_ConvertToMacAddr` 之前,我们需要做哪些设置?
或者,`SILICONID_ConvertToMacAddr` 无法通过 NXP 设备获取唯一的 MAC 地址?
我们在 IMXRT1060RM.pdf 的 Rev. 4, 01/2026 中找不到答案。

您能给我们答案吗?

谢谢。

Re: How can I get unique ethernet MAC address all over the i.mx RT1062 we use?

嗨,阿布纳

感谢您的支持!
我们了解到,我们可以使用通过SILICONID_ConvertToMacAddr 函数获取的 MAC 地址作为我们产品的 MAC 地址。但我明白 SILICONID_ConvertToMacAddr 只是一个示例,我们不能将其用于我们的大规模产品。我们必须使用我们 OUI 下的 MAC 地址。


顺祝商祺!

Re: How can I get unique ethernet MAC address all over the i.mx RT1062 we use?

@shigeru-tsujita

感谢您发现这种情况。我们使用 SILICONID_ConvertToMacAddr 函数来减少 NXP MCUX SDK 示例中的 MAC 地址冲突,以用于我们的测试环境。我们在同一交换机上连接不同 SoC 的以太网接口。对于同一系列 SoC 的情况,我们可能无法涵盖。

但我不太明白的是,为什么你们要用这种方式生成产品 MAC 地址。首先,您的 OUI 应该使用您公司的 OUI。那么,我认为贵公司应该对唯一标识符有一个内部特殊定义。

Re: How can I get unique ethernet MAC address all over the i.mx RT1062 we use?

你好,梅。

我理解 SILICONID_ConvertToMacAddr 使用固定的 NXP OUI 和三个字节的硅 ID(它是 OCOTP->CFG0/1 的一部分)来生成 MAC 地址。
我观察了我们目标产品的 OCOTP->CFG0/1。
这些数值如下:
- 一个 MIMXRT1062
- OCOTP->CFG0: (uint32_t)0x615c'faa4
- OCOTP->CFG1: (uint32_t)0x2a1e'61d7
- 其他 MIMXRT1062
- OCOTP->CFG0: (uint32_t)0x615c'faa4
- OCOTP->CFG1: (uint32_t)0x4922'61d7

因为 OCOTP->CFG0 的低三个字节在 SILICONID_ConvertToMacAddr 中用作 MAC 地址,所以它们的 MAC 地址相似。

因此,我们很多产品的 MAC 地址都很相似。(现在我们有几十个原型机,虽然我们不会检查所有的 MAC 地址,但我们还没有找到与 54:27:8D:A4:FA:5C 不同的 MAC 地址。)

谢谢。

Re: How can I get unique ethernet MAC address all over the i.mx RT1062 we use?

@shigeru-tsujita

非常感谢您对我们产品的关注以及对我们社区的使用。

假设 SDK 的 silicon_id 元器件已正确集成,则在调用 MIMXRT1062 的 SILICONID_ConvertToMacAddr() 之前无需进行其他设置。

请注意,SILICONID_ConvertToMacAddr() 不使用完整的 64 位硅 ID 来生成 MAC 地址。它使用固定的 NXP OUI 作为前 3 个字节,而最后 3 个字节仅使用来自硅 ID 的 3 个字节。

根据SDK代码:

mayliu1_0-1783917944104.png

请您读取几个设备的 64 位硅唯一 ID,并检查 ID 值是否读取正确?另外,请比较 siliconId[0]、siliconId[1] 和 siliconId[2],因为这些是用于生成 MAC 地址的字节。

如果这三个字节在各个设备上都相同,则生成的 MAC 地址也将相同。

顺祝商祺!

5月

Re: How can I get unique ethernet MAC address all over the i.mx RT1062 we use?

这里的难点在于,由 OCOTP->CFG1 和 OCOTP->CFG0 形成的 64 位数据在芯片之间总是唯一的,但值之间可能只有几个比特的差异。所以,你必须找到一种方法将它们组合在一起,而不会丢失任何信息。我通过对 OCOTP->CFG1 和 OCOTP->CFG0 进行 CRC32 校验,然后使用该 32 位结果构建 MAC 地址,效果相当不错。

要实际生成 MAC 地址,您可以使用“本地管理”的 MAC 地址,其中包含两个常量字节和 32 位 CRC,或者使用您组织的 OUI 作为前三个字节,然后从 CRC 值中获取另外三个字节。

Tags (1)
No ratings
Version history
Last update:
2 weeks ago
Updated by: