RTOS上下文保存

RTOS上下文切换通过PendSV异常实现,核心机制为"硬件自动保存 + 软件手动补栈"。

1. 硬件自动保存

CPU响应PendSV时,自动将调用者保存寄存器 (R0-R3、R12)以及返回地址(LR)、程序状态(xPSR)压入当前任务的进程栈(PSP)

2. 软件手动补栈

PendSV处理程序中,显式执行PUSH {R4-R11},保存被调用者保存寄存器,补齐完整上下文。

3. TCB锚定

将更新后的PSP值存入当前任务的任务控制块(TCB),实现栈与任务的绑定。

4. 恢复对称操作

从目标任务的TCB加载PSP,POP {R4-R11}恢复寄存器,异常返回时硬件自动弹出剩余上下文,任务无缝继续执行。


总结一句话就是::

上下文保存 = 硬件自动压栈(R0-R3,R12,LR,PC,xPSR) + 软件手动压栈(R4-R11),最终将 PSP 存入 TCB。

相关推荐
sakiko_1 天前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
自小吃多1 天前
器件移动、旋转、镜像、对齐、等间距操作笔记
笔记·嵌入式硬件
存在morning1 天前
【Paimon 学习笔记 三】工作流程:Paimon 的批写、流写、批读与流读
笔记·学习
老当益壮梁奶奶1 天前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
weixin_466068111 天前
《十分钟冥想》精读笔记(上):每天10分钟,给大脑做一次“系统减负”
笔记
凯尔萨厮1 天前
Java学习笔记十(注解)
java·笔记·学习
一条破秋裤1 天前
STM32 学习笔记:GPIO 输出实验——LED 闪烁、流水灯与蜂鸣器
笔记·stm32·学习
存在morning1 天前
【Paimon 学习笔记 二】存储架构:快照、manifest、LSM 树、bucket
笔记·学习·架构
双眼鈹1 天前
周报8.31
笔记·学习
打团从来人不齐2 天前
Linux服务器搭建笔记-008:台式机共享WIFI
linux·服务器·笔记