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。

相关推荐
一定要AK2 小时前
刷题时的学习笔记
c++·笔记·学习
沛沛rh4512 小时前
深入并发编程:从 C++ 到 Rust 的学习笔记
c++·笔记·学习·算法·rust
chushiyunen12 小时前
float浮点数计算-原理笔记
笔记
A923A12 小时前
【小兔鲜电商前台 | 项目笔记】第二天
前端·vue.js·笔记·项目·小兔鲜
bukeyiwanshui12 小时前
2026.4.2随堂笔记
笔记
CheerWWW13 小时前
C++学习笔记——初始化列表、创建和实例化对象、new 关键字、隐式构造与 explicit 关键字、运算符与运算符重载
c++·笔记·学习
南境十里·墨染春水13 小时前
C++笔记 类模板(面向对象)
开发语言·c++·笔记
小陈phd13 小时前
多模态大模型学习笔记(二十八)—— 基于Qwen多模态大模型的城市道路积水智能检测助手实战
笔记·学习
南境十里·墨染春水13 小时前
C++ 笔记 function 函数包装器模板
开发语言·c++·笔记