注:本文仅用于本人学习。

1、Handler mode 与 Thread mode

Cortex-M3处理器支持两种处理器的操作模式,还支持两级特权操作。

  两种操作模式分别为:处理者模式(handler mode,以后不再把 handler中译——译注)和线程模式(thread mode)。引入两个模式的本意,是用于区别普通应用程序的代码和异常服务例程的代码——包括中断服务例程的代码。

  Cortex-M3 的另一个侧面则是特权的分级——特权级和用户级。这可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。处理器支持两种特权级,这也是一个基本的安全模型。

  译注: “用户级”其实是从“user”译来的。有些时候英文文档也使用术语“Unprivileged”,后者如果直译,则称为“非特权级” 。为统一术语,本译文一律使用“用户级”。

  在 CM3 运行主应用程序时(线程模式),既可以使用特权级,也可以使用用户级;但是异常服务例程必须在特权级下执行。复位后,处理器默认进入线程模式,特权极访问。在特权级下,程序可以访问所有范围的存储器(如果有 MPU,还要 在MPU规定的禁地之外),并且可以执行所有指令。

  在特权级下的程序可以为所欲为,但也可能会把自己给玩进去——切换到用户级。一旦进入用户级,再想回来就得走“法律程序”了——用户级的程序不能简简单单地试图改写 CONTROL寄存器就回到特权级,它必须先“申诉”:执行一条系统调用指令(SVC)。这会触发SVC异常,然后由异常服务例程(通常是操作系统的一部分)接管,如果批准了进入,则异常服务例程修改 CONTROL寄存器,才能在用户级的线程模式下重新进入特权级。 事实上,从用户级到特权级的唯一途径就是异常:如果在程序执行过程中触发了一个异常,处理器总是先切换入特权级,并且在异常服务例程执行完毕退出时,返回先前的状态(也可以手工指定返回的状态——译 注) 。

2、MSP 与 PSP

MSP和PSP 的含义是Main_Stack_Pointer 和Process_Stack_Pointer,在逻辑地址上他们都是R13;

权威手册上说的很清楚PSP主要是在Handler的模式下使用,MSP主要在线程模式下使用(当然你在线程模式下也可以调用PSP,需要你做特殊的处理);

这意味着同一个逻辑地址,实际上有两个物理寄存器,一个为MSP,一个为PSP,在不同的工作模式调用不同的物理寄存器。举一个简单的例子,很多MCU的的UART只有一个BUFF,TXBUFF和RXBUFF都是一个地址,当你写BUFF时写入的是TXBUFF, 读操作时调用的是RXBUFF。基本原理就是这样。至于为什么这么设计,我想是为了在进行模式转换的时候,减少堆栈的保存工作。同时也可以为不同权限的工作模式设置不同的堆栈。

版权声明:本文为CSDN博主「wfarlen237」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wfarlen237/article/details/78843111

Cortex-M3内核有两个堆栈指针:MSP-主堆栈指针和PSP-进程堆栈指针,在任何一个时刻只能有一个堆栈指针起作用,也就是说任何一个时刻只能使用一个堆栈指针,要么使用MSP,要么使用PSP。何为堆栈指针,其实就是普通的指针,只是他们指向两个不同的堆栈。

MSP:主堆栈指针,当程序复位后(开始运行后),一直到第一次任务切换完成前,使用的都是MSP,即:main函数运行时用的是MSP,运行OSStartHighRdy,运行PendSV程序,用的都是MSP。当main函数开始运行前,启动文件会给这个函数分配一个堆栈空间,像ucos给任务分配堆栈空间一样,用于保存main函数运行过程中变量的保存。此时MSP就指向了该堆栈的首地址。

PSP:进程堆栈指针,切换任务之后PendSV服务程序中有ORR LR, LR, #0x04这句,意思就是PendSV中断返回后使用的PSP指针,此时PSP已经指向了所运行任务的堆栈,所以返回后就可以就接着该任务继续运行下去了。
由于任何一个时刻都只能使用一个堆栈指针(SP),所以,如果在某一个时刻,需要读取或者改变另外一个堆栈指针的内容就得使用特定的指令:MSR和MRS

ARM处理器的 Handler mode 与 Thread mode 以及 MSP 和 PSP相关推荐

  1. 嵌入式系统的组成、嵌入式处理器分类总结、ARM处理器系列总结、ARM Cortex-M3体系结构总结!

    一.嵌入式系统的组成 嵌入式系统的组成主要由:嵌入式硬件系统.嵌入式软件系统. (1)嵌入式硬件系统主要包括:嵌入式处理器.存储器.模拟电路.电源.接口控制器.接插件等 1)嵌入式处理器:是嵌入式系统 ...

  2. 计算机原理与应用 第二章——ARM处理器

    第二章--ARM微处理器 文章目录 第二章--ARM微处理器 一.ARM微处理器特点及功能结构 1.ARM微处理器主要特点 2.指令集方面的主要特点 3.Cortex系列处理器特点 4.ARM处理器功 ...

  3. 移植嵌入式linux到arm处理器,移植嵌入式Linux到ARM处理器S3C2410:设备驱动

    设备驱动程序是操作系统内核和机器硬件之间的接口,它为应用程序屏蔽硬件的细节,一般来说,Linux的设备驱动程序需要完成如下功能: ·设备初始化.释放: ·提供各类设备服务: ·负责内核和设备之间的数据 ...

  4. 用C语言写ucos中断服务程序,在ARM处理器上移植uCOS II的中断处理

    uCOS II是一个源码公开.可移植.可固化.可剪裁和抢占式的实时多任务操作系统,其大部分源码是用ANSI C编写,与处理器硬件相关的部分使用汇编语言编写.总量约200行的汇编语言部分被压缩到最低限度 ...

  5. 移植c语言算法到arm上,μCOS-II移植到ARM处理器上的几个要点

    原标题:μCOS-II移植到ARM处理器上的几个要点 本文主要介绍μCOS-II移植到ARM处理器上的几个要点,如下所示: uCOS II在ARM处理器上移植过程中的中断处理 uCOS II是一个源码 ...

  6. RTOS系列文章(6):Cortex-M3/4之SP,MSP,PSP,Thread模式、Handler模式、内核态、用户态

    FreeRTOS系列(1):基础知识--中断嵌套 FreeRTOS系列文章(2):PendSV功能,为什么需要PendSV FreeRTOS系列文章(3): 为什么将SysTick和PendSV的优先 ...

  7. ARM处理器的异常模式

    1.ARM处理器有各种异常模式,用于应对ARM出现的不同状态.出现异常时,会随即进入相关的异常向量,同时CPSR的寄存器也会设置成具体的模式. 例:当出现中断时,不管是哪种中断,都会跳转到0x18这个 ...

  8. Android开发笔记之:Handler Runnable与Thread的区别详解

    From:http://www.jb51.net/article/37465.htm 本篇文章是对在Android中Handler Runnable与Thread的区别进行了详细的分析介绍,需要的朋友 ...

  9. arm服务器芯片尺寸,华为第四代ARM服务器自研芯片Hi1620规格曝光 全球首款7nm工艺的数据中心用ARM处理器...

    描述 由于天然对多核友好,ARM这类精简架构在服务器.数据中心等平台也想有所作为,虽然高通的努力不太成功,但并未放弃,现在华为也大踏步跟进了. AnandTech发布了一组华为第四代ARM服务器自研芯 ...

最新文章

  1. 在虚幻引擎5中重塑火箭联盟——口袋联盟
  2. OpenGL编程指南13:光源移动
  3. C++ 字符数组和String类
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1078:求分数序列和
  5. 虚拟机中dns配置好了但是域名ping不同_弱电工程中常用的几个网络命令,学会后轻松变高手...
  6. 对象作为参数示例java_功能Java示例 第6部分–用作参数
  7. 小程序字符串拼接_小程序突袭预约!Yeezy 350quot;氧化满天星quot;拼接配色本月发售!...
  8. mysql5.0 mac_Mac OS X下MySQL 5.0的默认连接数
  9. EasyUI 扩展自定义EasyUI校验规则 验证规则
  10. CentOS下安装Orcale
  11. xe5 android sample 中的 SimpleList 是怎样绑定的
  12. VMware Sphere 虚拟磁盘创建选项
  13. 如何编写 maptalks plugin
  14. python 插入查找
  15. Gradle与Makefile构建工具的对比
  16. 【零基础】一文读懂CPU(从二极管到超大规模集成电路)
  17. HTML5网页设计的基本知识-几个概念
  18. verilog 状态机 三角波 发生器
  19. 北京内推 | Hulu机器学习应用平台团队招聘推荐大数据方向暑期实习生
  20. 10月25日 c语言 打印所有水仙花数

热门文章

  1. 如何在A4纸上打印连续的条形码
  2. 【CCF会议期刊推荐】中国计算机协会(CCF)推荐计算领域高质量科技期刊分级目录(T1类)
  3. Python库的使用
  4. java毕业生设计新疆旅游专列订票系统计算机源码+系统+mysql+调试部署+lw
  5. 对于美国中部覆盖图防护林形态的自动检测技术
  6. 最常用的三角函数值和三角变形公式
  7. 小说中场景的功能_一般文章里的场景描写有什么作用啊详细一些的 最好在
  8. hardware计算机专业英语翻译,hardware是什么意思中文翻译
  9. 如何让谷歌收录自己的网站?谷歌多久收录我的网站?
  10. linux和windows双系统怎么引导,如何解决Linux和Windows双系统的引导问题