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.

[参考译文] TMS570LC4357:在 TMS570LC43x 上处理 RXSOFOVERRUNS 和 RXDMAOVERRUNS 需要支持

Guru**** 2537250 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1541797/tms570lc4357-support-required-for-handling-rxsofoverruns-and-rxdmaoverruns-on-tms570lc43x

器件型号:TMS570LC4357


工具/软件:

我在 TMS570LC43x 16/32 RISC 闪存微控制器上遇到以太网数据包传输问题。 具体而言、在数据包传输期间、流量会间歇性地停止。 经调查后、我观察到以下情况:

  •  RXSOFOVERRIDE  (接收 DMA 帧开始溢出寄存器)和  RXDMAOVERRUNS  (接收 DMA 帧开始和帧溢出寄存器中间)在这些停止期间递增。
  • 进一步检查发现头部缓冲区溢出、导致这些问题。

支持请求:

  1. 重新启动数据包传输:

    • 是否有建议的程序可在检测到超限时后重新启动数据包传输?
  2. 清除 SOP/EOP 数据包:

    • 在缓冲区溢出情况得到解决后、清除数据包开始 (SOP) 和数据包结束 (EOP) 的最佳实践是什么?
    • 您能否提供有关控制相关寄存器以管理这些超支的具体说明?

我附上了登记册数据的屏幕截图。 请找到它们

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

    尊敬的 Avesh:

    对延迟的回复表示歉意。

     递增 RXSOFOVERRUNS 和 RXDMAOVERRUNS 寄存器以及报头缓冲区溢出 似乎 表明 EMAC(以太网介质访问控制器)缺少用于存储传入帧的可用接收缓冲区。

    核心问题可能是我们的应用没有足够快地向 EMAC 提供空的接收缓冲区、或者您接收的缓冲区池对于传入的流量率来说太小。

    要“重新启动“成功的数据包传输、您需要解决根本原因:  确保持续向 EMAC 提供空接收缓冲区。

    1. 提供更多空缓冲器:  EMAC 使用缓冲区描述符的链接列表进行接收(如“32.2.6.1 数据包缓冲区描述符“中所暗示)。
    2. 快速处理接收到的数据包:  当 EMAC 收到一个数据包并将其放入您的缓冲区之一时、它会将相应的 BD 标记为“已满“或“已接收“。  

    最佳实践:

    1. 查看缓冲区描述符状态:  当应用程序的接收处理程序处理已完成的缓冲区描述符时、 必须 检查该描述符内的状态标志。 该文档指示 OVERRUN 如果该帧发生溢出、则会在 SOP(数据包开始)缓冲区描述符中设置一个标志。
    2. 丢弃超限数据包:  如果 OVERRUN 设置了该标志(或指示帧损坏的任何其他错误标志)、则该缓冲区中的数据无效。 您的应用应  丢弃  这个数据包。 请勿  将其传递到网络堆栈上。
    3. 返回缓冲区:  丢弃无效数据包后、最重要的步骤是到  将缓冲区(及其描述符)返回到 EMAC 的自由接收描述符列表。  这使得缓冲区可用于新的传入数据包、从而有效地从系统的活动内存中“清除“有问题的数据包。

    “暂停“是 EMAC 耗尽缓冲区的症状。 要解决和防止此问题:

    1. 增加接收缓冲池大小  如有必要。
    2. 优化您的接收数据包处理  以快速将缓冲区返回到 EMAC 的自由列表。
    3. 配置  RXCEFEN (可能) 0使 EMAC 自动过滤超限帧。
    4. 实施稳健的错误检查  在接收处理程序中、检查 OVERRUN 缓冲区描述符 (if RXCEFEN  is 1 ) 中的标志并丢弃损坏的数据包、始终返回缓冲区。
    5.  RXSOFOVERRUNS 监控和  RXDMAOVERRUNS 确认您的更改有效、并定期清除它们以进行新的测量(有关清除说明,请参阅完整的 TRM)。

    --
    此致、
    Jagadish。

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

    您好、

    根据建议、我们已实现代码;但是、在数据包传输过程中仍然会遇到问题。 已针对此问题提出了类似的 TT。

     TMS570LC4357:以太网控制器 (EMAC) 和接收时出现新的未记录的竞态条件 

    您能否提供一个永久性解决方案来解决此比赛条件?

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

    尊敬的 Anvesh:

    抱歉,由于我的个人工作,我的反应迟缓了几天。

    下面的常见问题解答中提供了几个经过测试的以太网示例:

    我建议您提及一次。

    是否可以共享您的代码以在我这边进行测试?

    --
    此致、
    Jagadish。