一.简介
处理器架构实现了多个特性,保证OS设计的方便和高效,例如:
二.影子栈指针
Cortex-M处理器有两个栈指针:
对于具有嵌入式OS或RTOS的系统,每个应用任务都有自己的栈空间,如图所示,OS的上下文切换代码在每次上下文切换时都会更新PSP。
一般来说 ,要使用进程栈,需要将OS置于处理模式,直接编程PSP后利用异常返回流程“跳转”到应用任务。
例如,当OS从线程模式启动时,可以利用SVC异常进入处理模式,如图,然后可以创建进程栈中的栈帧,且触发使用PSP的异常返回。当加载栈帧时,应用任务就会启动。
在OS设计中,需要在不同任务间切换,这一般被称作上下文切换,其通常在PendSV异常处理中执行,该异常可由SysTick异常触发。
上下文切换操作中需要:
如下图所示:
需要注意的是,上下文切换在PendSV中执行,其异常优先级一般会被设置为最低。这样会避免在中断处理过程中产生上下文切换!
原文:https://www.cnblogs.com/Random-Boy/p/14026329.html