ARM基础----STM32处理器操作模式

STM32处理器操作模式

  • Cortex-M处理器操作模式、特权等级和栈指针
    • 操作模式
    • 栈指针
    • CONTROL寄存器
    • 异常压栈时的SP指针
  • Cortex-A 处理器运行模型
    • 寄存器组

Cortex-M处理器操作模式、特权等级和栈指针

操作模式

  • 处理模式:执行中断服务程序等异常处理,处理器具有特权访问等级
  • 线程模式:执行普通的应用程序代码,处理器处于的访问特权等级不一定
    如果想完成线程模式下的访问等级由非特权访问等级,变为特权访问等级需要使用异常机制
    在这里插入图片描述

栈指针

栈指针分为MSP主栈指针和PSP进程栈指针,用到FreeRTOS等操作系统时才会用到PSP。

CONTROL寄存器

栈指针的选择和线程模式的访问等级依靠CONTROL寄存器实现。
功能
CONTROL[0]nPRIV定义线程模式特权等级
0 = 特权级的线程模式(默认)
1 = 用户级的线程模式
CONTROL[1]SPSEL定义栈指针
0 = 选择主堆栈指针MSP(默认)
1 = 选择进程堆栈指针PSP

Handler处理模式永远都是特权级的,Handler处理模式下只允许使用MSP。

异常压栈时的SP指针

线程模式下,使用MSP,压栈时使用MSP.
线程模式下,使用PSP,压栈时使用PSP.
处理模式下,全部使用PSP,因此嵌套中断的压栈都是使用PSP

在这里插入图片描述

Cortex-A 处理器运行模型

运行模型

USR用户模式,用户程序运行在User模式下,非特权模式拥有受限的系统资源访问权限
FIQ快速中断模式,发生FIQ中断时的进入这个模式,拥有更高的响应等级和更低的延迟
IRQ一般中断异模式,发生IRQ中断时进入这个模式
SVC管理员模式,操作系统内核通常运行在该模式下,应用程序发生系统调用svc指令进入这个模式
Abort(ABT)异常终止模式,当发生数据访问异常的时候进入这个模式
System(SYS)系统模式,特权模式,一般用来设置USR模式的寄存器
Undefined(UND)未定义指令模式,执行未定义指令时进入这个模式。
Monitor(MON)监视模式,用于安全扩展模式,比如TF-A
Hyp虚拟化扩展的处理器才有该模式

寄存器组

在这里插入图片描述

  • 除了FIQ模式,其它模式共用R0-R12,FIQ有自己R8-R12,所以比IRQ模式更快。

  • 处理器模式是由状态寄存器CPSR的M域来控制的。对于用户模式而言,是没有权限操作CPSR寄存器的M域的,只能通过svc指令进入到SVC模式。
    在这里插入图片描述

  • 系统模式和用户模式共享寄存器视图,可以在处理器启动时通过设置系统模式的SP寄存器来达到设置用户模式堆栈的目的,要设置用户模式的其他寄存器也可以这样操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/734241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32FreeRTOS信号量(STM32cube高效开发)

一、信号量 (一)信号量概括 信号量是操作系统中重要的一部分,信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。 FreeRTOS 提供了多种信号量,按信号量的功能可分为二值信号量、计数型信号量、互斥信…

WPF Interaction

使用 Interaction 里面的方法来将事件映射到ViewModel层 引用命名空间:System.Windows.Interactivity.dll 在xaml界面引用这两种任意一个就行,这两个做的事情是相同的。 xmlns:i"clr-namespace:System.Windows.Interactivity;assemblySystem.Win…

宽度优先搜索算法(BFS)

宽度优先搜索算法(BFS)是什么? 宽度优先搜索算法(BFS)(也称为广度优先搜索)主要运用于树、图和矩阵(这三种可以都归类在图中),用于在图中从起始顶点开始逐层…

uVeiw color 颜色值

此功能为uView内部通过js提供的一些颜色值,可以用于通过js修改元素字体,背景颜色等一些场景,常用于uView的各个组件中。 这些颜色值,挂载在$u对象下的color数组中,关于这些颜色值的具体描述,详见Color 色彩…

指针--2

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1.指针运算1.1.指针-整数1.2.指针-指针1.3.指针的关系运算 2.野指针2.1 野指针成因2.2 如何规避野指针 3.assert 断言4.指针的使用和传址调用4.1 strlen的模拟实…

模型训练中数据标注是什么意思?

问题: 模型训练中数据标注是什么意思? 解答 在机器学习和深度学习领域中,数据标注是指对原始的、未经处理的数据(如图像、文本、音频、视频或3D点云)进行人工标记的过程。这个过程为每一份数据赋予一个明确的标签或…

nn.Conv2d()中的groups分组参数

1.参考文章: 【Pytorch】搞懂nn.Conv2d的groups参数的作用 - 知乎 (zhihu.com) 2.理解: (1)只要你 明白了 多通道的卷积是如何实现的(可以看我的1X1卷积文章),那么这里的分组进行卷积就非常好…

bat 调用bat 等待执行完成

在Windows批处理(.bat)文件中,如果你需要调用另一个批处理文件并等待它执行完成后再继续执行后续命令,可以使用 call 命令来实现。call 命令会启动新的批处理文件,并在子脚本执行完毕后返回到父脚本来执行余下的命令。…

【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面

1,视频地址 https://www.bilibili.com/video/BV1GJ4m1Y7Aj/ 【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面 使用国内代理进行加…

软考笔记--软件可靠性评价

一.软件可靠性评价概述 软件可靠性评价是软件可靠性活动的重要组成部分,即适用于软件开发过程,也可以针对最终软件系统。在软件开发过程中使用软件可靠性评价,可以使用软件可靠性模型,估计软件当前的可靠性,以确认是否…

6-DOF GraspNet: Variational Grasp Generation for Object Manipulation

总结: 使用变分自动编码器(VAE)对抓取进行采样,并使用基于点网的抓取评估器模型对采样的抓取进行评估和细化 摘要: 我们将抓取生成问题表述为 使用变分自编码器对一组抓取进行采样,并使用抓取评 估器模型对采样的抓取进行评估和…

备考2024年小学生古诗文大会:历年真题15题练习和独家解析

如何提高小学生古诗词的知识?如何激发小学生古诗词的学习兴趣?如何提高小学古诗词的学习成绩?如何备考2024年小学生古诗文大会?...如果你也在关心和这些问题,我的建议是参加每年一度的小学生古诗词大会(免费…

亚马逊跨境电商名词解释

亚马逊界面名词解释 最常用的名词解释总结: ASIN:亚马逊标准标识号,也就是每个商品的编码标识,每个商品的都不同,可以把它当成该商品的“身份证号”。由亚马逊随机生成的字母数字组合。 SKU:库存进出计量单位。 Listing&#xf…

太强了!最全的大模型检索增强生成(RAG)技术概览!

本文是对检索增强生成(Retrieval Augmented Generation, RAG)技术和算法的全面研究,对各种方法进行了系统性的梳理。文章中还包含了我知识库中提到的各种实现和研究的链接集合。 鉴于本文的目标是对现有的RAG算法和技术进行概览和解释&#…

django学习记录07——订单案例(复选框+ajax请求)

1.订单的数据表 1.1 数据表结构 1.2 数据表的创建 models.py class Order(models.Model):"""订单号"""oid models.CharField(max_length64, verbose_name"订单号")title models.CharField(max_length64, verbose_name"名称&…

做跨境电商,选哪个浏览器好?跨境电商浏览器推荐

在我们的日常生活中,有很多浏览器可供选择,比如百度浏览器、谷歌浏览器和360、火狐等等。但是在跨境电商行业中,是否有特别适合我们卖家使用的浏览器呢?所谓跨境电商浏览器,就是为跨境电商用户设计的浏览器&#xff0c…

Unity 采用自定义通道ShaderGraph实现FullScreen的窗户雨滴效果

效果如下 ShaderGraph实现 N21 随机化 DragLayer分层 将DragLayer分成四层,分别调整每层的缩放和大小 Shader实现的链接(Unity 雨水滴到屏幕效果) 我也是参考这个实现Shader Graph

【PythonCode】力扣Leetcode1~5题Python版

【PythonCode】力扣Leetcode1~5题Python版 前言 力扣Leetcode是一个集学习、刷题、竞赛等功能于一体的编程学习平台,很多计算机相关专业的学生、编程自学者、IT从业者在上面学习和刷题。 在Leetcode上刷题,可以选择各种主流的编程语言,如C、…

微信小程序-侧滑删除

简介 movable-view和movable-area是可移动的视图容器,在页面中可以拖拽滑动。 本篇文章将会通过该容器实现一个常用的拖拽按钮功能。 使用效果 代码实现 side-view.wtml 布局见下面代码,left view为内容区域,right view为操作按钮&a…

ORACLE无法OPEN,处理三板斧

mount下先查询数据文件头的检查点是否一致 查询 v$datafile_header ,CHECKPOINT_CHANGE#均一致,FUZZY为YES SQL> select file#, fuzzy, to_char(CHECKPOINT_CHANGE#) from v$datafile_header;1)对于open resetlogs时数据文件中有脏数据的情况&#x…