工具与软件:
我正在使用基于 AM625的 SOM、它具有板载 EEPROM 以及 eth0和 eth1。 我了解 eth0 MAC 是电子保险丝。 目前 eth1始终附带随机 MAC、也可以在 dts 中或通过 userspace 命令进行设置。
从常见问题解答中可以看到、EVM 从 EEPROM 读取 eth1 MAC。 我希望有人可以将我指向执行此任务的代码。 我假设它是特定于电路板的、我想将其移植到 SOM 电路板、而该电路板的 EEPROM 位于不同的总线/地址。
提前感谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我正在使用基于 AM625的 SOM、它具有板载 EEPROM 以及 eth0和 eth1。 我了解 eth0 MAC 是电子保险丝。 目前 eth1始终附带随机 MAC、也可以在 dts 中或通过 userspace 命令进行设置。
从常见问题解答中可以看到、EVM 从 EEPROM 读取 eth1 MAC。 我希望有人可以将我指向执行此任务的代码。 我假设它是特定于电路板的、我想将其移植到 SOM 电路板、而该电路板的 EEPROM 位于不同的总线/地址。
提前感谢
您好 Thomas:
我深入探究了最新 TI Linux SDK 版本10.1随附的 U-boot 源代码和 Linux 内核源代码、以下内容是获取 MAC 地址的相关部分。
Linux:
U-boot:
我找不到在 U-boot 代码中具体的何处从 EEPROM 获取 MAC 地址、这使我怀疑在 U-boot 阶段、在 Linux 中进行初始化时仅完成了 eth0的 MAC 地址以及其他接口的 MAC 地址是完成的。 如果我从 CPSW 开发人员那里了解到其他信息、我将在回来时提供更新。
-道林
您好、Thomas:
[报价 userid="531489" url="~/support/processors-group/processors/f/processors-forum/1468819/am625-where-is-the-evm-u-boot-code-that-reads-eth1-mac-from-eeprom/5640302 #5640302"]我还在我的 PhyBoard 开发板(非 EVM)上尝试了`ethtool -e eth0`并得到响应: `无法获取 EEPROM 数据:不支持操作`。 我假设这是因为 EEPROM 不在 tlan 驱动器期望的硬编码总线/地址处? [报价]我认为这条消息是由于 SK-AM62x EVM eth0驱动程序(CPSW 以太网驱动程序)不支持 EEPROM 访问这一事实。 您可以尝试运行"ethtool -i eth0"吗? 我希望您看到的内容应该与下面类似。
root@am62xx-evm:~# ethtool -i eth0 driver: am65-cpsw-nuss version: 6.6.32-ti-g6de6e418c80e-dirty firmware-version: expansion-rom-version: bus-info: 8000000.ethernet supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: yes supports-priv-flags: yes
您使用的 Linux SDK 版本是什么?
这对我来说并不容易理解、但乍一看、我看不到任何指示 EEPROM 总线和地址是可配置的-您同意吗?
下面是我从开发人员那里获得的一些信息。
我将与开发人员确认 tlan.c 驱动程序是否实际用于从 EEPROM 提取 MAC 地址。
-道林
最新动态:
请忽略"https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/board/ti/am64x/evm.c?h=ti-u-boot-2024.04#n221"、因为这适用于 AM64x EVM、我看到您使用的是 AM625 (我没有看到为 AM62x EVM 调用相同的 probe_subtercard 函数)。
相反、这似乎用于 AM62x https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/board/ti/common/board_detect.c#n392 从 EEPROM 解析 MAC 地址并将其存储到 U-boot ethaddr 环境变量中。
我将与开发人员核实 tlan.c 驱动程序是否实际用于从 EEPROM 提取 MAC 地址。 [/引号]我找不到在 U-boot 代码中从 EEPROM 获取 MAC 地址的具体位置、这使我怀疑在 U-boot 阶段、仅获取 eth0的 MAC 地址、在 Linux 中初始化时其他接口的 MAC 地址已完成。 如果我从 CPSW 开发人员那里找到其他信息、我将再次收到更新。我错了。 在 Linux 中、tlan.c 不用于 CPSW 以太网来获取 MAC 地址。 实际上、所有以太网接口的 MAC 地址都是在 U-boot 阶段获取的、而来自 EEPROM 的 MAC 地址应从 AM62x 的 board_detect.c (我在上面已链接)中完成。 然后将 MAC 地址存储在 U-boot 环境变量中、并在此处将其传递到 Linux 阶段。
-道林
[/quote]
您好、Thomas:
在与开发人员讨论后、我想说明一点、这是他怀疑 AM62x 如何解析 EEPROM 中的 MAC 地址。 您应该进一步检查电路板中是否实际使用了该工具。
相反、这似乎用于 AM62x https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/board/ti/common/board_detect.c#n392 解析 EEPROM 中的 MAC 地址并将它们存储到 U-boot ethaddr 环境变量中。
-道林
谢谢你。 这是我的 SOM 供应商( https://github.com/phytec/u-boot-phytec-ti/blob/v2024.04-10.01.10-phy/board/phytec/common/phytec_som_detection_blocks.c#L55-L88)使用的 u-boot EEPROM 代码
我不希望大家在考虑供应商代码、但我怀疑它的灵感来自 EVM 电路板检测代码。 无论在哪种情况下、我希望 phytec 代码和 ti-u-boot/tree/board/ti/common/board_detect.c 之间 应该可以为我提供足够的参考资料、如果我需要实现自定义逻辑、即从不同的 EEPROM 位置读取 MAC。 总之、您帮我整理了 EVM 中 MAC 地址处理的工作原理、非常感谢! 再次感谢。