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.

[参考译文] TMS320C6657:以太网堆栈锁定

Guru**** 2478765 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1461090/tms320c6657-ethernet-stack-lockup

器件型号:TMS320C6657

工具与软件:

这不是一个问题、因为它希望对任何可能遇到相同问题的人都有用。

在定制 C6657板上运行 PDK_C665x_2_0_14。  我们在具有高传输以太网流量时遇到了问题、其中数据包将突然停止传输。  在堆栈中进行大量调试后、我将问题范围缩小到 ti\drv\emac\emac\v0\emac.c 中的 emacEnqueueTx () src

函数  emacEnqueueTx()可以从两个源调用、即 emacDequeueTx()和 emac_sendPacket() 的末尾、这两个源都在 emac.c 中。  emacDequeueTx()仅在前一个数据包传输完成时从中断调用。   当应用程序要发送数据包时、通过栈调用 emac_sendPacket()。  如果在 emacEnqueueTx()已执行时发生中断、我认为这会导致数据包描述符排队的潜在冲突。  我的解决方案,虽然可以说是沉重的手,是通过   emacEnqueueTx ()函数的 Hwip_disable ()禁用中断。  这样就解决了我们所面临的问题。

我确实检查了 PDK_C665x_2_0_16是否解决了此问题、但它似乎没有在此区域进行任何相关更改。

希望这可以帮助任何遇到类似问题的人。

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

    我还应该补充一点、问题解决后、我们能够以每秒730千比特的吞吐量连续传输1500多字节的数据包。  

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

    大家好、感谢您提出根本原因和分享解决方案。 这将有助于处理此器件的其他人、并有助于在该 E2E 论坛中搜索有关此问题的信息。

    仅供参考、 此器件的最后一个 SDK (https://www.ti.com/tool/download/SDK-C665X)于2020年4月发布、并且没有新的 PROCESSOR-SDK-RTOS 修订计划。

    谢谢。