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.

[参考译文] UCD3138064:写入问题后读取

Guru**** 2513185 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/761477/ucd3138064-read-after-write-issue

器件型号:UCD3138064

您好!

如果一个全局变量、例如 杂项 AnalogRegs.GLBIOVAL.bit.fault2_IO_value 、将在 while 循环中读取并写入 IRQ 中断。

然后、可能会在写操作后出现不需要 MiscAnalogRegs.GLBIOVAL.bit.fault2_IO_value 的值的问题。  

是否有好的解决方案来避免这种情况?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    一个读取和另一个写入没有问题。 唯一的问题是两个级别是否都在写入。 避免这种情况的最有效方法是只进行一次级别的写入。 如果无法实现、您可以在后台写入前禁用中断、然后在后台重新启用中断。 还请注意、ARM 7上的位操作不是原子操作、因此如果您写入 GLBIOVAL 寄存器中的任何位、则会有在后台写入操作覆盖中断的风险。 为了避免此问题、您可以使用其他方法来控制该位。 例如、FAULT2位也可以通过 GIOOREGS 进行控制。