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.

[参考译文] MCU-PLUS-SDK-AM243X:HSR/PRP 节点表信号量导致死锁

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1165161/mcu-plus-sdk-am243x-hsr-prp-nodetable-semaphore-causing-a-deadlock

器件型号:MCU-PLUS-SDK-AM243X
主题中讨论的其他器件:AM2434

我使用您的新 SDK MCU_PLUS_SDK_am243x_08_04_00_17、我正在 AM2434上测试 HSR/PRP

我发现 hsrPrphandle->nodesTableSemaphore (在 hsrPrp_red.c 中)导致了死锁。

信号量在函数 RedNodeableSearchOp 和 RedNodeableRefresh (在 hsrPrp_red_nodeTable.c 中)中使用、以防止并发线程访问。

在  hsrPrp_red.c 中 、nodesTableSemaphore 被初始化为0

在 RedNodeRefresh SemaphoreP_POST 中、前面是后续 SemaphoreP_PEND + SemaphoreP_POST 、一切正常。

在 RedNodeSearchOp SemaphoreP_PEND cames 中、首先导致死锁、因为信标值为0。

我修复 了对 hsrPrp_red.c 中的初始化代码的查寻、以便用值1初始化信号量。

我还删除   了 RedNodeableRefresh 中的第一个 SemaphoreP_POST 调用  

如果此解决方案可接受、如果您也遇到相同的问题、请提供反馈。

展望未来

  Andrea

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

    尊敬的 Andrea:

    让我在我的结尾重复这个问题、然后再继续讨论。

    此致

    Nilabh A.

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

    尊敬的 Andrea:

    已确定此问题。 8.5 SDK 版本中将提供针对此问题的修复程序。

    BR

    Nilabh A.

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

    谢谢你 Nilabh。

    我们是否可以预览解决方案,或者至少知道我所做的修复是否可以接受?

    展望未来

       Andrea

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

    尊敬的 Andrea:

    让我从软件团队那里获取信息

    BR

    Nilabh A.