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.

[参考译文] TMDS64EVM:以太网环回 MAC 地址读取失败

Guru**** 2416110 points
Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1514686/tmds64evm-ethernet-loop-back-mac-address-read-failure

器件型号:TMDS64EVM
主题:SysConfig 中讨论的其他器件

工具/软件:

您好、

最初、以太网环回测试的 EVM 测试正常工作、直到通过写入大文件 (128KB) 及之后对 I2C 器件 0x50 (Board_ID EEPROM) 进行测试

  当 ti_board_config.c 未能获得第 287 行的最大 MAC 地址数时、以太网环回测试将失败、如所示

#define ENET_Board_NUM_MACADDR_MAX (4U)

EnetAppUtils_assert (ENET_GET_NUM_MAC_ADDR (numMacMax)<= ENET_Board_NUM_MACADDR_MAX);

测试结果显示在这里。

只是想知道 I2C 器件是否将以太网 MAC 地址保存在 I2C 器件内的某些存储块中。

在对 I2C 器件进行大文件写入/读取测试之前、进行了较小文件 (6KB) 的测试、ENET 环回仍能正常工作。

将读/写测试大数据文件写入 I2C 后、 ENET 环回失败、如上所示、有 4 个不同的示例:  

A53(Mac 端环回和 PHY 端环回)

R5F (MAC 端环回和 PHY 端环回)

下面是错误:

MAIN_Cortex_R5_0_0:===========================
MAIN_Cortex_R5_0_0:Enet Loopback:迭代 1.
MAIN_Cortex_R5_0_0:===========================

MAIN_Cortex_R5_0_0:CPSW_3G 测试
MAIN_Cortex_R5_0_0:启用时钟!
MAIN_Cortex_R5_0_0:生效@行:syscfg/ti_board_config.c 中的 287:enet_get_NUM_MAC_ADDR (numMacMax)<= ENET_Board_NUM_MACADDR_MAX:失败!!

请注意、切换到新的 64EVM 板、4 个示例上的 ENET 环回正常运行、具有 5 次迭代。 但是、新的电路板

我避免对大文件运行 I2C 写入/读取测试。 可以使用较小的数据文件运行 I2C 测试、ENET 环回仍有效。

问题是例程从哪里获取 MAC 地址?

要让测试板损坏时的 ENET 再次运行、请提供任何提示/帮助、这是非常感谢的。

谢谢、

Huynh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 

    感谢您的查询。

    您正在使用哪个 SDK?

    这是开箱即用 SDK 示例、或者您进行了一些更改并收到此错误?

    此致

    Ashwani

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    MCU_PLUS_SDK_am64x_10_01_00_32

    MAC 和 PHY 环回的开箱即用示例

    TI\MCU_PLUS_SDK_am64x_10_01_00_32\source\networking\enet\core\examples\enet_loopback\enet_cpsw_loopback。

    如上所示、ENET 环回的这些示例未更改。

    所述的示例 I2C_MEMORY_READ 进行了更改、用于执行文件写入/读取操作。 然而;

    用于写入/读取 I2C 的较小文件 (6KB)、因此运行 ENET 环回没有问题。 但是、当将大文件 (128KB) 运行到 I2C 然后转到 ENET 示例工程时、系统会标记出错误、如图所示。

    电路板上发生的情况反复发生在相同的故障下。 我将该板更改为新的 64EVM 板、然后运行 ENET 环回练习、它运行正常。 我还尝试使用较小的文件 (6KB) 运行 I2C 练习、在重新运行 ENET 环回练习后、该电路板可以正常工作。 我不想做的是将大文件 (128KB) 运行到 I2C、因为我担心它可能会导致 ENET 练习出现相同的问题。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我所关注的是以太网。 在此处添加 I2C 专家。

    此致

    Ashwani

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Huynh:

    更改的是执行文件写入/读取的示例 I2C_MEMORY_READ、如所述。 但是;

    您是否能够通过 I2C 正确写入数据? 您在编写大文件时是否遇到任何问题?

    您是否也在编写后验证了内容?

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    文件写入/读取例程如下所示:  

    1.在 CIO 或控制台 UART 上 TeraTerm I/F 上提示输入文件名。

    2. fseek () 确定文件大小并相应地对缓冲区进行处理。

    3. fread(*缓冲区、1 *文件大小,文件)适当地到缓冲区。

    4.设置 remainder = filesize % 256 //这是 256 字节页后的最后一次 I2C 写入。

    5.准备以 256 字节为增量的计数循环、然后将*缓冲区 (3) 转移到 TX_BUFFER_256[]

    6.在计数循环中,将 I2C 内存事务设置为:  

       MEM_TRANSITION.BUFFER = txBuffer_256;//这是 256 字节缓冲区

      MEM_TRANSITION.SIZE =((COUNT+256)>(uint32_t) filesize)? remainder :(uint32_t ) 256;   

       MEM_TRANSIT.memDataDir = I2C_MEM_TXn_DIR_TX;

    7.回读时,对 filesize 的*rxBuffer 执行反向和 malloc ;

    8.将 256 字节读数页读入 rxBuffer_256 的类似计数循环;

       MEM_TRANSITION.BUFFER = rxBuffer_256;

      MEM_TRANSITION.SIZE =((COUNT+256)>(uint32_t) filesize)? remainder :(uint32_t ) 256;

       MEM_TRANSIT.memDataDir = I2C_MEM_TXn_DIR_RX;

    9.每页读取后、将 rxBuffer_256[]传输到*rxBuffer、直至末尾(余数计数)

    10.读回日志中的 rxBuffer 并与原始文件进行比较。

    如前所述、文件大小约为 6KB、操作良好、确认写入/读取验证正常。

    但之后的 ENET 环回测试 (MAC/PHY - A53 和 R5F) 是可以的。

    但是、针对大约 128KB 文件的 I2C 写入/读取在文件比较上生成了一些错误。

    在对大文件进行 I2C 操作后、ENET 环回无法正常工作、如所有实例所示。

    请注意、在 example.syscfg 中、内存 CONDFIGURATOR - General 已相应地设置了堆栈和堆 、以满足 malloc () 的要求。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Huynh:

    但是;约 128KB 的文件的 I2C 写入/读取在文件比较中生成了一些错误。

    对我来说、数据似乎没有完全写入 I2C EEPROM。 您能否检查正确写入了多少个内存页、以及在哪一个页面之后出现数据不一致情况?

    AT24CM01 EEPROM 在内部组织为 512 页、每页 256 字节 (~128KB)。  

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它被写入了正确数量的页到 I2C。 不过、这不是 I2C 问题、而是 ENET 环回问题。

    此处提到的唯一 I2C 是因为在写入/读取大文件(~128KB,并非确切)后、ENT 循环返回会出现该问题。

    为什么在 MAC 和 PHY 使用 FreeRTOS 环回 A53 和 R5F 的所有 4 个示例中都存在这个问题:  

    MAIN_Cortex_R5_0_0:生效@行:syscfg/ti_board_config.c 中的 287:enet_get_NUM_MAC_ADDR (numMacMax)<= ENET_Board_NUM_MACADDR_MAX:失败!!

    我的问题是 MAC 地址存储在非易失性存储器中的哪个位置?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Huynh:

    已将正确数量的页面写入 I2C。 但是、这不是 I2C 问题、而是 ENET 环回的问题[/报价]

    感谢您确认 I2C 读取/写入已正确进行。

    我将重新将您的主题分配给以太网专家、以便进一步发表意见。

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    进一步调查、如果在 SysConfig 中的“TI Networking for Enet (CPSW)“选项卡 System Integration Config 下、问题将消失

    我必须将“MAC 地址分配方法“从“自动分配“更改为“手动输入“、如下所示:  

    之后、我可以运行以太网环回。 因此问题是在坏板上它不会与 MAC 地址的“自动分配“一起工作,在好板上它将在两种情况下都工作“自动分配“和“手动输入“。 是否有任何可能导致此问题的情况? 有人能向我解释为什么它是这样的行为吗?

    谢谢、

    Huynh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最初、以太网环回测试的 EVM 测试可以正常运行、直到通过写入大文件 (
    ) 对 I2C 器件 0x50 (Board_ID EEPROM) 进行测试

    您似乎已覆盖 EVM 的原始 MAC 地址。

    我在这里添加了硬件专家、以便在有办法时为您提供帮助。

    请留出一些时间与 EVM 团队合作、然后再联系您。

    此致

    Ashwani

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    MAC 地址存储在何处? 我提到的 I2C (Board_ID) EEPROM 中是否有此功能?

    如果是这种情况、那么在执行大型文件写入/读取后、我已经给出了 MAC 地址读取无效的线索

    I2C 器件、应该已经确定问题所在。

    所以我等待解决方案以某种方式将它们写回设备。

    谢谢、

    Huynh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好  Huynh

    已为我分配查询。

    您能否总结一下问题、以便我在这与硬件有关时进行跟进。

    此致、

    Sreenivasa.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您按照这些帖子进行操作、您应该能够确定它是否与硬件或软件相关。 请阅读所有的帖子,这里是总结:  

    -我更改了 i2c_memory_read 示例(从简单的 10 计数)来练习文件的写入/读取。 I2C 练习的原始文件大小为 6KB。

    -同时我运行了以太网环回运动,一切都很好。  

    -我将 I2C 练习的文件大小更改为 128KB 的更大文件,这是 I2C 设备的最大容量。

    -之后,以太网回环练习失败了:  

    MAIN_Cortex_R5_0_0:===========================
    MAIN_Cortex_R5_0_0:Enet Loopback:迭代 1.
    MAIN_Cortex_R5_0_0:===========================

    MAIN_Cortex_R5_0_0:CPSW_3G 测试
    MAIN_Cortex_R5_0_0:启用时钟!
    MAIN_Cortex_R5_0_0:生效@行:syscfg/ti_board_config.c 中的 287:enet_get_NUM_MAC_ADDR (numMacMax)<= ENET_Board_NUM_MACADDR_MAX:失败!!

    -我怀疑 MAC 地址是以某种方式保存在这个 I2C(地址 0x50)设备中,但你的团队中似乎没有人理解为什么它是相关的。

    -我然后更改 MAC 添加设置从“自动 分配“到“手动输入“显示在上一篇文章和以太网环回工作,但仅当 MAC 地址为 2 个实例手动设置,将不工作,如果再次设置“自动分配“。

    -它向我确认,这些 MAC 地址必须保存在 I2C 设备中的一些高位置,在一个大文件的 I2C 读/写练习期间被擦除。 我不确定、但通常将电路板的 MAC 地址保存在 I2C 中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好  Huynh

    谢谢你。

    我来查看输入、并与团队核实是否有办法将 MAC ID 恢复到 EEPROM 中。

    此致、

    Sreenivasa.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Sreenivasa、

    有关此问题的任何更新? 如果 MAC 信息确实保存在 I2C EEPROM 中、那么我只需要保存这两个 MAC 地址的地址和格式。 我能够将它们写回 I2C。

    谢谢、

    Huynh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好  Huynh

    感谢您的关注。

    我正在与 EVM 团队跟进。

    此致、

    Sreenivasa.