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.

[参考译文] TMS320F28P550SJ:CPU 和 CLA 共享 LSRAM 中的位域运行完整性

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1615161/tms320f28p550sj-bit-field-operation-integrity-in-cpu-and-cla-shared-lsram

器件型号: TMS320F28P550SJ

尊敬的专家:

我的库是 LSRAM 中 CPU 和 CLA 共享的全局变量中的 USIGNAL 位字段。

这些位全部设计为单向传输、要么是 CPU 读取 CLA 写入、要么是 CLA 读取 CPU 写入。

无需任何其他、CLA 和 CPU 操作至少为 16 位、因此位字段的完整性可能不需要保护。

例如、当 CPU 设置位 0 时、它需要用其所保存的值写入位[1:15]、但位 1 可能是 CLA 读取 位、而 CPU 设置位 0 的操作将有机会覆盖 CLA 对位 1 的写入。

为确保 LSRAM 中的操作完整性(由于内存使用问题,我们不要使用单向 MSG RAM)、它们能否每 16 位将这些位逐个分开?

例如、位[0:15]是 CPU 写入 CLA 读取、位[16:31]是 CLA 写入 CPU 读取吗? 它们是用 16 位还是 32 位分开?

此致、

挂起

 

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

    C28x 和 CLA 都可以加载/存储 16 位、因此我在使用 0:15(对于 CPU)和 16:31(对于 CLA)时没有看到任何问题。

    需要注意的是数据类型:在 C28x 上、int 是 16 位、但在 CLA 上、int 类型是 32 位(类型 short 是 16 位)。 为避免出现问题、建议使用 int16_t 等类型而非“int"。“。