我需要访问Cortex-M3处理器的MSP和PSP寄存器(主寄存器和进程堆栈寄存器)。
我是用C/C++编写的。
µVision和相关的编译器不允许你为这个Thumb-2 only内核做内联汇编(我不确定这是不是一个好主意)。
我需要这样做,这样我就可以提取svc指令的立即值,而不管它是在线程模式还是处理程序模式下执行的。
谢谢,
发布于 2010-06-01 23:56:09
我目前还无法访问Keil编译器来验证这一点,但根据文档,您应该能够使用编译器的“命名寄存器变量”功能:
register uint32_t msp __asm("msp");
register uint32_t psp __asm("psp");发布于 2010-06-01 21:40:50
对于这样的事情,我通常使用一个小的汇编调用来完成它。
您可以使用特殊的寄存器访问指令(MRS / MSR)来访问任一SP。我认为对于uVision,MSP是SP_main,PSP是SP_process。
我的手臂组合有点生锈了,但我想应该是这样的:
MRS R0, SP_process // R0 holds retval
BX LR // return从你的问题看,你似乎已经理解了MSP和PSP之间的区别,并且知道如何确定要阅读哪一个(通过LR)。
https://stackoverflow.com/questions/2947248
复制相似问题