ARM编程模式和7钟工作模式
一. ARM的基本设定
1.1. ARM 采用的是32位架构
1.2. ARM约定:
a. Byte : 8 bits
b. Halfword :16 bits (2 byte)
c. Word : 32 bits (4 byte)
1.3. 大部分ARM core 提供:
a. ARM 指令集(32-bit)
b. Thumb 指令集(16-bit )
c. Thumb2指令集(16 & 32bit)
二. ARM处理器工作模式
2.1. ARM 有7个基本工作模式:
User : 非特权模式,大部分任务执行在这种模式
FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式
IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式
Supervisor :当复位或软中断指令执行时将会进入这种模式
Abort : 当存取异常时将会进入这种模式
Undef : 当执行未定义指令时会进入这种模式
System : 使用和User模式相同寄存器集的特权模式
注:1.除User(用户模式)是Normal(普通模式)外,其他6种都是Privilege(特权模式)。
2. Privilege中除Sys模式外,其余5种为异常模式
3. 各种模式的切换,可以是程序员通过代码主动切换(通过写CPSR寄存器);也可以是CPU在某些情况下自动切换。
4. 各种模式下权限和可以访问的寄存器不同
三. ARM通用寄存器
3.1. ARM共有37个寄存器,都是32位长度

3.2. 不同模式下的寄存器分布

3.3. 寄存器说明
3.3.1. sp指针表示栈指针,是程序工作区。
3.3.2. lr用来做返回控制,用来存储返回值(函数调用返回值)。
3.3.3. pc表示程序控制寄存器,用来存储程序执行在哪。
3.3.4. CPSR程序状态寄存器

3.3.5. spsr是用来保存cpsr。(例如:当从USER转换到IRQ模式时,将USER的状态保存到IRQ的spsr中)
四. 异常处理机制机制
4.1. 什么是异常
4.1.1. 异常会打断正在执行的工作,并且一般我们希望异常处理完成后继续回来执行原来的工作
4.1.2. 中断是异常的一种。
4.2. 异常向量表
4.2.1. 所有的CPU都有异常向量表,这是CPU设计时就设定好的,是硬件决定的
4.2.2. 当异常发生时,CPU会自动动作(PC跳转到异常向量处处理异常,有时伴有一些辅助动作)
4.2.3. 异常向量表是硬件向软件提供的处理异常的支持
4.3. 异常处理流程
4.3.1. 当异常产生时, ARM core:
4.3.1.1. 拷贝 CPSR 到 SPSR_<mode> 
4.3.1.2. 设置适当的 CPSR 位
a. 改变处理器状态进入 ARM 态
b. 改变处理器模式进入相应的异常模式
c. 设置中断禁止位禁止相应中断 (如果需要)
4.3.1.3. 保存返回地址到 LR_<mode>
4.3.1.4. 设置 PC 为相应的异常向量
4.3.2. 返回时, 异常处理需要:
4.3.2.1. 从 SPSR_<mode>恢复CPSR
4.3.2.2. 从LR_<mode>恢复PC
Note: 1.这些操作只能在 ARM 态执行.
2. 以上说的是CPU设计时提供的异常向量表,一般成为一级向量表。有些CPU为了支持多个中断,还会提供二级中断向量表,处理思路类似于这里说的一级中断向量表。
参考《朱老师.1.2ARM裸机课件》
ARM编程模式和7钟工作模式的更多相关文章
- ROS的工作模式和ESXI网卡工作模式的关系
1.ROS网卡如果工作在桥接模式,那么ESXI网卡的工作模式必须设置为Promiscuous Mode(混杂模式)和Forged Transmits(伪传输)这两个必须都为开启状态,如下: 这种情况, ...
- 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_13.RabbitMQ研究-工作模式-header和rpc工作模式
header模式 header模式与routing不同的地方在于,header模式取消routingkey,使用header中的 key/value(键值对)匹配 队列. 案例: 根据用户的通知设置去 ...
- ARM处理器工作模式
学习ARM处理器参考的首选资料是ARM Architecture Reference Manual,是最专业权威的学习资料. ARM处理器共有7种工作模式,如表1-1和1-2所示: 表1-1 处理器工 ...
- ARM 寄存器 和 工作模式了解
一. ARM 工作模式 1. ARM7,ARM9,ARM11,处理器有 7 种工作模式:Cortex-A 多了一个监视模式(Monitor) 2. 用户模式:非特权模式,大部分任务执行在这种模式 ...
- ESP8266开发之旅 网络篇② ESP8266 工作模式与ESP8266WiFi库
在网络篇①中,博主主要讲解了Arduino上开发ESP8266的插件库 Arduino Core For ESP8266.但是,并没有讲到关于这个模块的工作模式,所以本篇讲着重讲解ESP826 ...
- 鸿蒙内核源码分析(工作模式篇) | CPU是韦小宝,七个老婆 | 百篇博客分析OpenHarmony源码 | v36.04
百篇博客系列篇.本篇为: v36.xx 鸿蒙内核源码分析(工作模式篇) | CPU是韦小宝,七个老婆 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CP ...
- apache 的工作模式
总结:访问量大的时候使用 worker模式: 每个进程,启动多个线程来处理请求,每个线程处理一次请求,对内存要求比较高. prefoek模式 : 每个子进程只有一个线程,一次请求一个进程. 什么是a ...
- 讨论.NET Core 配置对GC 工作模式与内存的影响
引出问题: Asp.net core应用在 Kubernetes上内存使用率过高问题分析 https://mp.weixin.qq.com/s/PqhUzvFpzopU7rVRgdy7eg 这篇文章中 ...
- 分组密码的工作模式--wiki
密码学中,块密码的工作模式允许使用同一个块密码密钥对多于一块的数据进行加密,并保证其安全性.[1][2] 块密码自身只能加密长度等于密码块长度的单块数据,若要加密变长数据,则数据必须先被划分为一些单独 ...
随机推荐
- 【BZOJ3931】[CQOI2015]网络吞吐量
Description 路由是指通过计算机网络把信息从源地址传输到目的地址的活动,也是计算机网络设计中的重点和难点.网络中实现路由转发的硬件设备称为路由器.为了使数据包最快的到达目的地,路由器需要选择 ...
- Android图片缩放 指定尺寸
//使用Bitmap加Matrix来缩放 public static Drawable resizeImage(Bitmap bitmap, int w, int h) { ...
- WKWebView使用指南|功能丰富的JXBWKWebView
github地址:JXBWKWebView,如果觉得项目不错可以点个star支持一下,谢谢~ 前言 目前iOS系统已经更新到iOS11,大多数项目向下兼容最多兼容到iOS8,因此,在项目中对WebVi ...
- Vue使用axios请求数据,默认post请求传参是json格式,但后台需要formData格式???
最简单的方式,post请求参数json转formData…代码如下: 使用node的 qs 模块(推荐使用) 就是这么简单,在结合element ui表单一键提交涉及到,希望遇到的同学少走弯路,加油~
- 数据结构和算法(Java版)快速学习(数组Array)
Java数组 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型. 用类封装数组实现数据结构 数据结构必须具有以下基本功能: ①.如何插入一条新的数据项 ②.如何寻找某一特定 ...
- 在SOUI3中使用预编译XML
传统的XML文件通常是utf8编码的文本文件.使用文本文件好处在于方便查阅及修改. SOUI使用XML做为布局描述语言,所有的布局资源都是XML.文本文件格式自由,XML解析器需要对文件中的字符逐个解 ...
- 对vi/vim的一些看法
早在网上看到别人如何把vi吹得神乎其神了,决定试着用一下.不过还是发现太麻烦了,因为我是在windows系统下面的,网络的原因无法使用linux系统(无校园电信客户端). 首先vim只是一个文本编辑器 ...
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第4节 maven生命周期和概念模型图_09maven概念模型图
项目自身的信息 项目运行所依赖的扎包 运行环境信息:tomcat啊,JDK啊这些都属于运行环境 一个jar包的坐标由三个最基本的信息组成. 第一部分就是依赖管理. 第二个部分
- java中? extends T 和? super T解析
转:https://blog.csdn.net/qq_25337221/article/details/81669630 PECS原则 最后看一下什么是PECS(Producer Extends Co ...
- apue 在 mac 环境编译错误
参考资料:https://unix.stackexchange.com/questions/105483/compiling-code-from-apue 笔者使用 mac 学习 apue, 在编译的 ...