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.

[参考译文] TMS320F2.8384万D:用于C28x1/CM共享存储器的原子操作或互斥锁

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1098575/tms320f28384d-atomic-operations-or-mutexes-for-c28x1-cm-shared-memories

部件号:TMS320F2.8384万D

大家好,在我的项目中,我同时使用CPU1TOCMMSGRAM和CMTOCPU1MSGRAM在CPU1和CM之间共享数据。 任何时候,一个内核都应该能够从另一个内核拥有的共享内存中读取任何数据(我没有使用driverlib公开的基于消息的API)。 这很好,但我对数据访问并发性有一些疑问。

我的两个问题是:

-是否有任何种类的IPC锁(如互斥锁)在所有者的内核写入数据时阻止其他内核读取数据? 在我的情况下,即使是"全局"锁也可能有用

如果不存在上述内容,并且由于我只共享16-32位值,那么这些值的存储对于两个CPU体系结构是否是原子存储? 例如,我能否从一边读取32位值,而另一边是否正在更新该值,而不读取垃圾?

感谢您提前回答

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

    Valerio,

    —2000—是否2000是否有109.8575万有任何2.8384万任何种类的IPC锁(如互斥体)阻止其他核心所有者读取数据? 在我的情况下,即使是"全局"锁也可能有用[/QUOT]

    否,此功能不可用。

    如果2000如果不2000不存在109.8575万存在上述2.8384万上述情况,并且由于我只共享16-32位的CPU值,那么这两种架构是否都存储这两个CPU值? 例如,我能否从一边读取32位值,而另一边是否正在更新该值,而不读取垃圾?

    否,当另一个内核更新数据时,可能会从一个内核读取垃圾数据。 解决此问题的唯一方法是使用IPC标志让其他CPU知道读取MSGRAM内容是安全的(即其他CPU完成写入操作后)

    此致,

    Manoj

    [/quote]