1

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

ARMv7-M 架构参考说:

标记内存块的大小称为 Exclusives 预留粒度。Exclusives 预留粒度在以下之间实现定义:

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

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

有人知道吗?还有,你是怎么找到的?

4

1 回答 1

2

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

Cortex-M4 TRM

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

STM32F407 TRM 没有提到任何关于实现外部监视器的系统,所以我认为它没有。无论如何,如果没有其他 CPU 与之同步,这没什么大不了的——我想不出一个很好的理由需要使读-修改-写原子来防止被 DMA 覆盖。

于 2016-04-15T13:47:57.483 回答