小编jdx*_*jdx的帖子

如何在多核 Cortex-M0/M0+(无 SWP、无 LDREX/STREX)上实现原子操作?

ARMv6 之前的 MPU/MCU 有SWP指令(例如良好的 ole 和仍然有效的 ARM7TDMI)。在 ARMv6 架构中LDREX,/STREX对已被引入和SWP删除。然而,除了一个例外 \xe2\x80\x93 ARMv6-M (Cortex-M0/M0+) 既没有LDREX/STREX也没有SWP. 奇怪的。

\n

那么如何在这个平台上实现原子操作/同步原语呢?以老式的方式使用“启用中断”/“禁用中断”?或者我错过了什么?例如ChromiumOS使用老式方法

\n

禁用中断适用于单核 MCU,但多核 MCU 又如何呢?此方法是否适用于例如RP2040 (双核 Cortex-M0+, Raspberry Pi Pico的核心)?

\n

assembly arm multicore atomic cortex-m

5
推荐指数
1
解决办法
1097
查看次数

标签 统计

arm ×1

assembly ×1

atomic ×1

cortex-m ×1

multicore ×1