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.

[参考译文] TMS320F28388D:描述符和数据缓冲区的内容不匹配。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1495314/tms320f28388d-the-contents-of-the-descriptor-and-data-buffer-do-not-match

器件型号:TMS320F28388D
主题:C2000WARE 中讨论的其他器件

工具/软件:

尊敬的专家:

处理从以太网接收的数据时、描述符指示的信息可能与数据缓冲区的内容不匹配。

问:您能告诉我如何避免这种情况吗? 如果当前信息不够、请告诉我我应该检查哪些要点。

我的客户正在使用以太网和 F28388D、并评估 LWIP。 这是 这一主题的延续。

当 PC 和 F28388D 与 LAN 电缆连接时、会出现此现象。 特别是当 PC 建立链路时、许多数据包会流动、因此处理过程可能无法跟上、内存可能会被重写。

它们使用一个名为 KSZ8794的交换机作为以太网 PHY。 此交换机具有多个端口、并将一个字节的标识信息(TailTag)添加到从外部接收的数据中。 需要删除这些标识信息、但数据会添加到接收到的数据的末尾(在 FCS 之前)。 因此、有必要从接收到的数据的数据长度(pPacket->validLength)信息中识别数据的位置并对其进行提取。 但是、有时数据长度(pPacket->validLength)表示的位置包含的内容与实际数据不同。

Wireshark 日志调查的结果表明、当接收函数处理数据长度(pPacket->validLength)时、稍后发送的数据将存储在存储器中、从而导致提取不正确的 TailTag。 使用 Wireshark 检查相同的日志时、可以确认数据内容指示的位置存在正确的 TailTag。

下面的示例代码用作基址、中断发生后会立即禁用、并在缓冲区处理完成后释放中断。
: \libraries\communications\Ethernet\third_party\lwip\examples\enet_lwip

此致、
正常

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

    尊敬的专家:

    其他信息:

    他们在中断处理期间复制接收缓冲区的内容(f2838xif_receive ())、然后在复制后设置断点并比较结果。
    复制缓冲区在停止在断点处时的内容与接收缓冲区不同、具体而言、复制缓冲区的内容旧了几倍。

    此致、
    正常

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

    尊敬的专家:

    是否有任何更新?

    此致、
    正常

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

    尊敬的专家:

    很抱歉耽误你。 您能告诉我这种情况吗?

    如果您在这里很难回答、 我们可以在私人聊天中进行讨论。

    此致、
    正常

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

    尊敬的专家:

    很抱歉耽误你。 您能告诉我这种情况吗?

    如果您在这里很难回答、 我们可以在私人聊天中进行讨论。

    此致、
    正常