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 提供了多种信号量,按信号量的功能可分为二值信号量、计数型信号量、互斥信…

宽度优先搜索算法(BFS)

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

指针--2

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

【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

微信小程序-侧滑删除

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

初探深度学习-手写字体识别

前言 手写数字的神经网络识别通常指的是通过训练有素的神经网络模型来识别和分类手写数字图像的任务。这种类型的任务是机器学习和计算机视觉领域的一个经典问题,经常作为入门级的图像识别问题来展示和测试各种机器学习算法的能力。在实际应用中,手写数…

mac电脑总卡蓝屏是怎么回事,苹果电脑老卡蓝屏怎么办

电脑老卡蓝屏是比较常见的电脑故障之一,导致这一问题的出现很可能是电脑本身的硬件,或电脑上的驱动安装错误,没法运行,当然也不排除其他的一些因素。虽说电脑蓝屏是电脑几乎都会出现的小毛病,不足以致命,但…

基于决策树实现葡萄酒分类

基于决策树实现葡萄酒分类 将葡萄酒数据集拆分成训练集和测试集,搭建tree_1和tree_2两个决策树模型,tree_1使用信息增益作为特征选择指标,B树使用基尼指数作为特征选择指标,各自对训练集进行训练,然后分别对训练集和测…

图论练习6

[NOIP2013]车站分级 Here 解题思路 由于起始点之间所选的站号,相互之间一定满足那么对于起始点间未选择的站号,一定满足选择的站号考虑用边来维护信息,表示的级别大于按题意,则车站会被分为几个联通块,且保证块内无环…

So you think you understand IP fragmentation?

文章目录 前言一、Why care?二、Prevention三、Well-understood?四、Introducing fragquiz五、A novel (?) algorithm六、Reader challenge七、traceroute八、ICMP参考资料 前言 本文来自:https://lwn.net/Articles/960913/ February 7, 2024This article was …

【Python】成功解决ModuleNotFoundError: No module named ‘seaborn’

【Python】成功解决ModuleNotFoundError: No module named ‘seaborn’ 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 …

高分辨率全球海洋温度和盐度再分析数据Global Ocean Physics Reanalysis(0.083°),并利用matlab读取绘图

1.引言 在研究全球海平面变化的问题中,卫星测高获得总的海平面变化,而海平面变化包含质量变化和比容变化。因此测高数据和海洋物理分析数据对于海平面研究至关重要。 测高数据下载网址: Global Ocean Gridded L 4 Sea Surface Heights And …

动态规划课堂4-----子数组系列

目录 引入: 例题1:最大子数组和 例题2:环形子数组的最大和 例题3:乘积最大子数组 例题4:乘积为正数的最长子数组 总结: 结语: 引入: 在动态规划(DP)子…