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。

相关推荐
Shea的笔记本18 分钟前
MindSpore实战笔记:ResNet50中药炮制饮片质量判断复现全记录
笔记
YaBingSec21 分钟前
玄机靶场—Apache-druid(CVE-2021-25646) WP
java·开发语言·笔记·安全·php·apache
Hello--_--World31 分钟前
React:状态管理 官网笔记
前端·笔记·react.js
苦 涩37 分钟前
考研408笔记之操作系统(五)——输入输出(IO)管理
笔记·操作系统·考研408
他是龙5511 小时前
DVWA SQL 注入全级别通关笔记(Low / Medium / High / Impossible)
数据库·笔记·sql
咸鱼翻身小阿橙1 小时前
C++ 与 QML 交互入门笔记
c++·笔记·交互
三品吉他手会点灯1 小时前
STM32F103 学习笔记-21-串口通信(第4节)—串口发送和接收代码讲解(下)
笔记·stm32·单片机·嵌入式硬件·学习
南境十里·墨染春水1 小时前
C++ 笔记 ——STL deque
开发语言·c++·笔记
U盘失踪了1 小时前
学习记录:requests Django登录测试脚本(解决CSRF、重定向问题)
笔记·python·学习·django·csrf
wangcheng3031 小时前
人在回路如何让智能系统更可靠
笔记