我很感兴趣,因为这个值会影响我想要使用(真棒)ldrex/strex
同步原语的数据结构如何位于内存中。
ARMv7-M架构参考说:
标记内存块的大小称为独占保留 颗粒。独家预订颗粒是IMPLEMENTATION DEFINED 之间:
- 一个单词,在带有== 2
的实现中- 512字,在带有== 11的实现中。
因此,对于给定的实现,例如STM32F407,我应该能够找到使用的值。但我不能在我查看的各种文件中找到。
有人知道吗?另外,你是怎么找到它的?
答案 0 :(得分:1)
STM32F407有一个Cortex-M4内核,这意味着ERG的大小实际上是4GB。
处理器内的本地监视器已构造成不保存任何物理地址,而是将任何访问视为与先前LDREX的地址匹配。这意味着实现的独占预留粒度是整个内存地址范围。
STM32F407 TRM没有提及有关实现外部显示器的系统的任何信息,所以我认为它没有。如果没有其他CPU可以同步它并不是一件大事 - 我不能轻易想到需要制作一个读取 - 修改 - 写入原子而不被DMA覆盖的充分理由。