如何在无SWP/LDREX/STREX的多核Cortex-M0/M0+上实现原子操作?
ARMv6-M(Cortex-M0/M0+)平台的原子操作实现方案
指令支持背景
- ARMv6之前的MPU/MCU具备
SWP指令(例如经典且仍在使用的ARM7TDMI) - ARMv6架构引入了
LDREX/STREX指令对并移除了SWP,但ARMv6-M(Cortex-M0/M0+)是例外——它既无LDREX/STREX也无SWP,这一特性比较特殊
核心疑问
那么如何在该平台上实现原子操作/同步原语?是采用“使能中断”/“禁用中断”这种传统方式?还是有其他遗漏的实现方案?例如ChromiumOS便采用了这种传统方法实现原子操作。
多核场景的延伸问题
禁用中断在单核MCU上可行,但**多核MCU呢?**这种方法在RP2040(树莓派Pico的核心,双核Cortex-M0+)上是否有效?
内容的提问来源于stack exchange,提问作者jdx
相关产品推荐
相关产品推荐

