主堆栈指针和进程堆栈指针的问题

2019-07-21 06:20发布

本帖最后由 wangmingwei093 于 2018-12-28 17:27 编辑

Cortex‐M3 拥有两个堆栈指针,然而它们是 banked,因此任一时刻只能使用其中的一个。
         主堆栈指针( MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)
         进程堆栈指针( PSP):由用户的应用程序代码使用。

[size=14.6667px]这两个堆栈指针和LR寄存器有什么关联,看到一个程序这么写的:(这是*火的UOCOS-III的讲解里的)
[size=14.6667px]        MSR     PSP, R0;                  
        ORR     LR, LR, #0x04;  确保异常返回使用的堆栈指针是PSP,即LR寄存器的位2要为1
上面这句话什么意思,LR寄存器不是连接寄存器吗?不是不能随便去更改值吗,也没找到LR寄存器还有位描述的?
[size=14.6667px]
[size=14.6667px]还有怎么理解这个主堆栈指针和进程堆栈指针?能用通俗的语言描述一下吗?
[size=14.6667px]求解答。        



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。