"独家预约颗粒"的价值是多少?在STM32F4上?

时间:2016-04-15 13:26:00

标签: synchronization arm lockless stm32f4

我很感兴趣,因为这个值会影响我想要使用(真棒)ldrex/strex同步原语的数据结构如何位于内存中。

ARMv7-M架构参考说:

  

标记内存块的大小称为独占保留   颗粒。独家预订颗粒是IMPLEMENTATION DEFINED   之间:

     
      
  • 一个单词,在带有== 2
  • 的实现中   
  • 512字,在带有== 11的实现中。
  •   

因此,对于给定的实现,例如STM32F407,我应该能够找到使用的值。但我不能在我查看的各种文件中找到。

有人知道吗?另外,你是怎么找到它的?

1 个答案:

答案 0 :(得分:1)

STM32F407有一个Cortex-M4内核,这意味着ERG的大小实际上是4GB。

来自the Cortex-M4 TRM

  

处理器内的本地监视器已构造成不保存任何物理地址,而是将任何访问视为与先前LDREX的地址匹配。这意味着实现的独占预留粒度是整个内存地址范围。

STM32F407 TRM没有提及有关实现外部显示器的系统的任何信息,所以我认为它没有。如果没有其他CPU可以同步它并不是一件大事 - 我不能轻易想到需要制作一个读取 - 修改 - 写入原子而不被DMA覆盖的充分理由。