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.

[参考译文] RM46L850:EMAC:发送错误时的 TX 完成指针

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1214441/rm46l850-emac-tx-completion-pointer-in-case-of-transmit-error

器件型号:RM46L850

您好!

我正在使用 Hercules RM46开发板、并打算在我们的定制板上使用 TMS570。

现在、我将重点介绍 EMAC 驱动器、我想知道有些东西。

在 TRM 中、它被写入(31.2.17.1.1):"EMAC 在将数据包的最后一个缓冲区描述符地址写入位于状态 RAM 块中相应通道队列的发送完成指针时向 CPU 发出中断"

但是、在传输由于碰撞或载波感应错误(或者如果我漏掉了其他参数)而放弃的情况下、完成指针也会更新。

如果是这样、就可以了。

但是、如果不是、这可能意味着永远不会到达 BD 的尾部(以防该尾部发生错误)、并且我无法再次向 EMAC 提供新的数据包/BDS。

您能解释一下吗?

因为我谈论的是错误、我还想确保我很好地理解了错误:

只能通过 STAT 寄存器/中断来检查错误。 并且在 STAT 更新时不会清除。 我的结论是、它根本不打算用于错误检查。

您能确认我的回答正确吗?

提前感谢、

Laurent

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

    尊敬的 Laurent:

    已着手解决您的问题、我们将很快提供更新。

    --

    谢谢。此致、
    Jagadish。

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

    尊敬的 Laurent:

    很抱歉耽误你的时间。

    然而,如果不是,这可能意味着永远不会到达 BD 的尾部(如果该尾部发生错误),并且我无法再次向 EMAC 提供新的数据包/BDS。

    如果没有发生冲突、在这种情况下、EMAC 在将最后一个缓冲区描述符地址写入发送完成指针后向 CPU 生成中断。 一旦发送完成指针用最后一个缓冲区描述符地址更新、EMAC 就会向 CPU 提供中断。 现在、CPU 可以向标头描述符指针提供一个新的数据包。

    如果发生任何冲突(即在电缆上检测到任何能量)、在这种情况下、EMAC 不会生成任何中断、而是会再次尝试传输相同的数据包、直到电缆没有能量和数据包进行传输。 电缆空闲后、EMAC 将其最后一个缓冲区描述符地址写入完成指针、然后它将向 CPU 生成中断。 现在、CPU 可以向标头描述符指针提供新的数据包。

    错误只能通过 STAT 寄存器/中断检查。 并且在 STAT 更新时不会清除。 我的结论是它根本不是用于错误检查。

    如果接收到任何错误数据包、如 Code、CRC 和 Alignment、则这些数据包将由 EMAC 自动丢弃、除非我们启用了 RXCEFEN 位。 如果启用了该位、那么我们应该监控接收描述符中的相应标志、以确保这些错误是否存在。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    感谢您的回复。

    关于第一点、我是说何时进行传输 已放弃 。 根据以下数据表统计寄存器、可能会发生这种情况:

    关于第二点、我指的是 发送 。 我最初想检查数据包的传输是否成功。 我想通过将 STAT 寄存器值设置为0x7FFFFFFF 来检查 STAT 中断中的错误、以便在出现第一个错误后生成中断。 但不清楚该中断何时会发生。

    因此我的问题是:STAT 中断是否用于(Tx)错误检查?

    此致、

    Laurent

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

    尊敬的 Laurent:

    很抱歉耽误你的时间。

    因此,我的问题是:STAT 中断是否打算用于(Tx)错误检查?

    是的、您可以将其用于 Tx 错误检查。

    实际上、每当时都会生成该统计信息中断 任何统计值 大于或等于0x8000 0000。 因此、如果您希望可以使用0x7FFF FFFF 写入 Tx 统计信息、以便每当发生下一个 Tx 错误时、您都将获得统计信息中断。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    谢谢你的回复、但我仍然不知道 STAT 中断是何时触发的。 它对应于哪个数据包?

    另外、我希望大家可以回答第一个问题:在传输被放弃的情况下(由于碰撞或载波传感错误或其他原因)、完成指针是否也会被更新? 换言之、对于已放弃的数据包、是否会得到中断?

    很抱歉坚持、但我真的需要这个答案。 如果您不了解、也许其他人可以提供帮助。

    此致、
    Laurent

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

    尊敬的 Laurent:

    谢谢回复,但我仍然不知道何时触发 STAT 中断。 它对应于哪个数据包?

    很简单、我们有不同的统计数据寄存器。

    一旦启用此中断、那么当任何一个静态寄存器值大于或等于0x8000 0000时、将触发该中断。 如果所有寄存器值都小于 0x8000 0000值、 则不会触发中断。  

    换言之,我是否会中断已被放弃的数据包?

    不、你不会在发生冲突的情况下获得任何中断。 相反、它将再次尝试传输相同的数据包、直到电缆释放能量和数据包为止。

    --

    谢谢。此致、
    Jagadish。

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

    您好!

    我很抱歉坚持、但这仍然没有回答我的问题。 问题是:

    在传输被放弃的情况下、我是否会获得一个 Tx 中断?

    您一直说、仍将传输该数据、但数据表中明确注明了该数据 电流 在某些情况下会被放弃(请查看之前消息中的图片)。

    此致、

    劳雷布特

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

    为了获得免费文档、请查看以下我的结论:

    我最终决定在 HW 上尝试它。 我使用的是定制的 TMS570板。

    我这样继续:

    • 成功发送一组数据包。
    • 拔下电缆
    • 假冒软件、使其认为可以发送数据包(即使没有链路)
    • 在 ISR 中添加断点
    • 发送数据包(即写入 TxHDP、BD 列表包含要发送的数据)
    • 验证是否已到达断点。

    结果:达到该值、即使传输被放弃、也会调用 ISR。

    注意:EMAC 无法发送数据包、因此被丢弃、因为它感觉总线上没有其他节点(我认为- 载波感应误差 )

    希望这能帮助别人,

    此致、
    Laurent

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

    尊敬的 Laurent:

    很高兴听到您解决了问题、感谢您的详细解释。

    --

    谢谢。此致、
    Jagadish。