博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cortex-M3 双堆栈指针(MSP&PSP)
阅读量:5291 次
发布时间:2019-06-14

本文共 542 字,大约阅读时间需要 1 分钟。

【双堆栈指针(MSP&PSP)】

  • Cortex-M3内核中有两个堆栈指针(MSP & PSP),但任何时刻只能使用到其中一个。
  • 复位后处于线程模式特权级,默认使用MSP。
  • 通过SP访问到的是正在使用的那个指针,可以通过MSR/MRS指令访问指定的堆栈指针。
  • 通过设置CONTROL寄存器的bit[1]选择使用哪个堆栈指针。CONTROL[1]=0选择主堆栈指针;CONTROL[1]=1选择进程堆栈指针。
  • Handler模式下,只允许使用主堆栈指针MSP。

【双堆栈指针在OS中的应用】

典型的OS环境中,MSP和PSP的用法如下:

  • MSP用于OS内核和异常处理。
  • PSP用于应用任务。

 

 

 

 

 

 

 

 

 

【双堆栈指针的初始化】

  • 系统复位时从0x00000000处读出MSP的初始值。
  • 在OS初始化时,对PSP进行初始化。

【PSP指针在不同任务间切换】

  • 用任务A的SP执行入栈操作,并保存任务A的SP。
  • 设置PSP指向任务B的栈空间,用任务B的SP执行出栈,随后开始执行任务B。

 

 

 


 

  参考摘录:

《Cortex-M内核系列和STM32-讲座2教程.pdf》

《ARM Cortex-M3权威指南.pdf》

转载于:https://www.cnblogs.com/utank/p/11264175.html

你可能感兴趣的文章
Linux useradd -M -s
查看>>
define
查看>>
使用DD 创建SWAP
查看>>
【笔记篇】Ubuntu一日游
查看>>
.NET CORE 第二节 中间件的原理和自定义中间件
查看>>
开放有限元分析计算平台介绍
查看>>
Python中的函数
查看>>
静态路由和动态路由
查看>>
为C1Chart for WPF添加自定义标题、坐标轴单位标签以及旋转坐标轴注释
查看>>
51job_selenium测试
查看>>
代理商数据库_文本过滤处理
查看>>
Bootstrapping算法
查看>>
性能测试(LoadRunner)基础知识
查看>>
数据结构(七)排序---归并排序
查看>>
java多线程知识点汇总(二)多线程实例解析
查看>>
mysql的用户管理(二)
查看>>
【科技】高斯消元简析
查看>>
没有欲望是一种什么样的感觉
查看>>
pzoj Problem 2127 养鸡场
查看>>
有趣的JavaScript隐式类型转换
查看>>