Arm Cortex-M 处理器内存系统深度解析
1. 独占访问状态与异常
在 Armv8 - A 处理器家族中,中断事件会自动清除独占状态,这与之前的开放访问状态有所不同。在 Cortex - A 处理器(包括 Armv7 - A 和 Armv8 - A)中,若全局独占访问监视器对独占加载操作给出独占失败响应,可能会引发故障异常,但 Cortex - M 处理器不存在这种情况。
2. 内存排序与内存屏障指令
2.1 内存排序概念
当开发可在多种处理器上运行的便携式软件时,开发者需要深入理解内存排序概念,并掌握如何使用内存屏障解决高端处理器中的内存排序问题。
2.2 内存排序的内在函数
在 C/C++ 编程中,使用独占访问的内在函数如下表所示:
| Intrinsic | Instruction | Compatibility |
| — | — | — |
| uint8_t __LDREXB (volatile uint8_t addr) | LDREXB | Not available in Armv6 - M |
| uint16_t __LDREXH(volatile uint16_t addr) | LDREXH | Same as above. |
| uint32_t __LDREXW(volatile uint32_t addr) | LDREX | Same as above. |
| uint32_t __STREXB(uint8_t, volatile uint8_t addr) |
Cortex-M内存系统深度剖析
超级会员免费看
订阅专栏 解锁全文
37

被折叠的 条评论
为什么被折叠?



