1.处理器有两种模式:
- 处理模式:执行中断服务程序等异常处理(一直具有特权)。
- 线程模式:在执行普通的应用程序代码时(特权和非特权都有可能,具体取决于CONTROL寄存器的设置)。
软件可以将处理器从特权线程模式切到非特权线程模式,但无法将自身从非特权切到特权模式,处理器必须借助异常机制才能这样切换。
2.物理上R13寄存器,也就是SP寄存器有两个:
- 主栈指针(MSP),在复位后或处理器处于处理模式(处理模式指异常模式)时,处理器使用的都是这个栈。
- 进程栈指针(PSP),只应用在线程模式(线程模式就是执行普通的代码时所处的模式)。
大多数情况下,如果没有使用嵌入式OS,PSP也没有必要使用。绝大多数应用可以完全依赖于MSP。一般要用到OS时,才会使用到PSP;此时OS内核和应用任务的栈是相互独立的。PSP的初始值未定义,而MSP的初始值需要在复位流程中从存储器的第一个字中取出。