我正在学习LDREX和STREX来实现互斥锁。从阅读ARM参考手册得知:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.100166_0001_00_en/ric1417175928887.html
看起来LDREX/STREX只能以整个内存空间为粒度存储地址,因此您只能在最多一个32位寄存器上使用LDREX/STREX。
这是正确的吗?如果是这样的话,LDREX/STREX的功能就变得非常有限了。我的意思是,您可以做一个位图互斥锁,可能会获得32个互斥锁。
有人在M3或M4上使用LDREX/STREX吗?如果是这样,他们如何使用它?
ldrex/strex
链。关键是在ldrex
和strex
之间不能有其他内存访问,即使是对完全不同的地址也不行。 - EOF