tsx81429 发表于 2025-4-19 22:28:56

基于尚硅谷FreeRTOS视频笔记——6—滴答时钟—上下文切换

FreeRTOS滴答

FreeRTOS需要有一个时钟参照,并且这个时钟不会被轻易打断,所以最好选择systick
https://i-blog.csdnimg.cn/direct/b6c92372665f455e8e6439f5ab0b647b.png
为什么需要时间参照

https://i-blog.csdnimg.cn/direct/db6482243ab9471aacfa0ba38fd47368.png
就是在高优先级任务进入阻塞态后,也可以明白为进入delay()函数后,需要有一个时间参照,就是需要计时,看是否delay函数竣事,这就是为什么需要systick。
上下文切换

https://i-blog.csdnimg.cn/direct/097ce3087515408f893e596e50276b35.png
上下文就是代码的实行状态(就是这段代码有没有实行过)
还有一些变量数据,比如a=1;这种变量。

任务的切换


当任务A需要切换时,就需要此刻保存任务A的上下文,就是数据,实行到哪一行等
那么,怎样进行保存任务的这些数据呢?
我们都知道,任务都是在CPU中运行,而CPU中有许多寄存器,而在任务A实行的环境中,CPU中全部的值都为任务A的,
而每个任务都有一个属于自己的任务栈。
所以,任务A在切换的途中,就会将自己全部在CPU中的数据都拷贝到任务栈中。
https://i-blog.csdnimg.cn/direct/2ae5fa50b0a04292acf8d1eff94cf13d.png
https://i-blog.csdnimg.cn/direct/69d17582512f476495c8c5f3412dc824.png
任务切换时,CPU中只保存任务的指针,而数据都拷贝在任务对应的栈中。
当任务被恢复时,CPU直接利用指针来查找相应的数据栈
后将数据恢复到CPU中。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 基于尚硅谷FreeRTOS视频笔记——6—滴答时钟—上下文切换