当前位置: 首页 > news >正文

STM32八股【6】-----CortexM3的双堆栈(MSP、PSP)设计

STM32的线程模式(Thread Mode)和内核模式(Handler Mode)以及其对应的权级和堆栈指针

线程模式:
正常代码执行时的模式(如 main 函数、FreeRTOS任务)
可以是特权级(使用MSP)也可以是非特权级(使用PSP)
异常模式:
正在执行中断服务程序
永远是特权级,使用MSP

模式栈指针特权级应用场景
线程模式MSP特权级系统启动初期
线程模式PSP非特权级RTOS用户任务
内核模式MSP特权级中断服务程序、系统调用处理

在RAM上的分布情况

地址 ↓ 增大 (低 → 高)                       物理地址范围
┌──────────────────────────────┐
│         RAM 结束              │ 0x2002_0000
├──────────────────────────────┤
│          MSP 栈区             │← 异常模式、中断使用
│      (Main Stack Pointer)     │
│      ↓ 向下增长               │
├──────────────────────────────┤
│         PSP - 任务A 栈        │← 任务A执行时使用
│      (Process Stack Pointer)  │
│      ↓ 向下增长               │
├──────────────────────────────┤
│         PSP - 任务B 栈        │← 任务B执行时使用
│      ↓ 向下增长               │
├──────────────────────────────┤
│         PSP - 任务C 栈        │← 任务C执行时使用
│      ↓ 向下增长               │
├──────────────────────────────┤
│          全局变量区           │
│        BSS / DATA段等         │
├──────────────────────────────┤
│          堆(heap)区         │↑ 向上增长
├──────────────────────────────┤
│         RAM 起始地址          │ 0x2000_0000
└──────────────────────────────┘

RTOS任务如何从MSP切换到PSP?SVC_Handler 起到什么作用?

待写

相关文章:

  • 金仓数据库征文-政务领域国产化数据库更替:金仓 KingbaseES 应用实践
  • 游戏引擎学习第244天: 完成异步纹理下载
  • ASP.NET MVC​ 入门指南二
  • C++11介绍
  • 语音合成之六端到端TTS模型的演进
  • mysql知识总结 索引篇
  • opencv--通道,彩色和灰度
  • 【OSG学习笔记】Day 9: 状态集(StateSet)与渲染优化 —— 管理混合、深度测试、雾效等渲染状态
  • 【python】如何将python程序封装为cpython的库
  • 支付场景下,乐观锁的实现(简洁版)
  • 利用车联网中的 V2V 通信技术传播公平的紧急信息
  • 液体神经网络LNN-Attention创新结合——基于液体神经网络的时间序列预测(PyTorch框架)
  • GAEA情感坐标背后的技术原理
  • 皖维 大病救助办理手续说明
  • Linux多线程技术
  • 【Echarts】使用echarts绘制多个不同类型的中国地图
  • Java 安全:如何实现用户认证与授权?
  • 微信小程序文章管理系统开发实现
  • C++智能指针概念理解的面试题
  • 4/25 研0学习日志
  • 蜀道考古调查阶段性成果发布,新发现文物遗存297处
  • 金隅集团:今年拿地将选择核心热门地块,稳健审慎投资
  • “归雁经济”能带来什么?川大商学院调研团队深入乡村与返乡青年人才交流
  • 大家聊中国式现代化|郑崇选:提升文化软实力,打造文化自信自强的上海样本
  • 李良生已任应急管理部党委委员、政治部主任
  • 外交部回应菲律宾涉仁爱礁言论:菲方7轮运补均提前通报中方