背景概念
- CM3堆栈指针SP
主堆栈指针(MSP), 或写作SP_main, 这是缺省堆栈指针,用于OS内核,异常中断处理程序以及所有需要特权访问的应用程序代码。
进程堆栈指针(PSP), 或写作SP_process, 用于常规代码/task执行。
- CM3异常/中断响应序列
异常/中断发生时,CM3会自动执行流程:入栈 -> 取向量 -> 更新寄存器
入栈:把8个寄存器值压入栈
压入哪个堆栈 MSP/PSP的选择:
如果当响应异常时,当前代码正在使用PSP, 则压入PSP, 即使用线程堆栈;
否则压入MSP, 使用主堆栈。
取向量: 从向量表里找到正确的异常向量, 然后在服务程序入口取指;