ARM体系结构-模式与异常
复习3
ARM状态的寄存器_ARM状态通用寄存器
不分组寄存器R0~R7 :
R0~R7是不分组寄存器。这意味着在所有 处理器模式下,它们每一个都访问的是同 一个物理寄存器。它们是真正并且在每种 状态下都统一的通用寄存器。 必须注意对同一寄存器在不同模式下使用 时的数据保护。
ARM状态的寄存器_ARM状态通用寄存器
ARM寄存器组成概述 ARM状态下的寄存器组织 Thumb状态下的寄存器组织
ARM寄存器组成概述
ARM处理器总共有37个寄存器,这37个寄存 器按它在用户编程中的功能划分,可以分为以 下两类寄存器
31个通用寄存器 在这31个通用寄存器中包括了程序计数器 (PC),这些寄存器都是32位的。 6个状态寄存器。
ARM状态的寄存器_ARM状态通用寄存器
通用寄存器(R0~R15)可分为3类:
不分组寄存器(The unbanked registers): R0~R7; 分组寄存器(The banked registers): R8~R14; 程序计数器:R15(PC)
程序计数器:R15(PC)
ARM状态下的寄存器组织
一.ARM状态的寄存器简介 二.ARM状态的通用寄存器 三.ARM程序状态寄存器
ARM程序状态寄存器
所有处理器模式下都可以访问当前的程 序状态寄存器CPSR。CPSR包含条件码 标志、中断禁止位、当前处理器模式以 及其它状态和控制信息。 在每种异常模式下都有一个对应的物理 寄存器——程序状态保存寄存器SPSR。 当异常出现时,SPSR用于保存CPSR的 状态,以便异常返回后恢复异常发生时 的工作状态。
中止 R0
未定义
普通中断
快速中断
R1
ARM的七种异常类型
ARM7支持六种操作模式:(1)用户模式(usr):正常的程序执行状态(2)FIQ模式(fiq):支持数据传送或通道处理(3)IRQ模式(irq):用于通用的中断处理(4)管理模式(svc):用于操作系统的保护模式(5)异常模式(abt):数据或者指令预取异常时进入(6)无定义模式(und):当无定义指令被执行时进入(7)软件控制,外部中断,异常处理都可以改变操作模式。
大部分的应用程序在用户模式下执行。
其他模式,比如管理模式,在中断、异常服务、或者访问被保护资源时进入。
ARM 的中央寄存器集是16 个用户寄存器R0 – R15。
这些寄存器均是32 位宽度,R0 – R12 没有其他特殊功能,寄存器R13 – R15在CPU中有特殊功能。
R13被用作栈指针(stack pointer,SP)。
R14被称为链接寄存器(link register, LR),当调用一个函数时返回地址被自动保存到链接寄存器,在函数返回时有效。
这使得快速进入和返回“叶”函数(不调用其他函数的函数)成为可能。
如果函数是分支的一部分(即该函数将调用另一个函数),链接寄存器必须入栈(R13)。
R15 是程序计数器(program counter, PC)。
有趣的是,许多指令也可以在R13 – R15中执行,就像它们是标准的用户寄存器。
ARM中断的问题ARM的七种异常类型---------1> 复位异常2> 数据访问中止异常3> 快速中断请求异常4> 一般中断请求5> 预取指令异常6> 软件中断异常7> 未定义异常-------------------------问题:1> 为什么除了进入复位异常模式外,在别的异常处理模式中都允许FIQ中断?2> 数据访问中止异常的优先级大于 FIQ异常,为什么在数据访问异常处理模式中,还允许 FIQ中断?这样不就成了:在高优先级异常处理中允许低优先级的中断发生?即使这样,因为FIQ中断的优先级 < 数据异常中断优先级,也不会进入 FIQ中断处理程序啊,这样不就更没有用处了??ARM体系的各种异常的分析(学习日记)- [ARM7TDMI]版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明/logs/10669519.html1.复位异常(1)当内核的nRESET信号被拉低时,ARM处理器放弃正在执行的指令,当nRESET信号再次变高时,ARM处理器进行复位操作;(2)系统复位后,进入管理模式对系统进行初始化,复位后,只有PC(0x00000000)和CPSR (nzcvqIFt_SVC)的值是固定的,另外寄存器的值是随机的。
ARM体系结构与编程
和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小 ,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的 主流。微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制 器。
嵌入式微控制器
嵌入式微控制器目前的品种和数量最多,比较有代表性的通用 系列包括8051、P51XA、MCS-251、MCS-96/196/296、 C166/167、MC68HC05/11/12/16、68300等。另外还有许多半通 用系列如:支持USB接口的MCU 8XC930/931、C540、C541; 支持I2C、CAN-Bus、LCD及众多专用MCU和兼容系列。目前
2021/2/5
ARM分类
基于指令集体系结构(构架ISA)的分类 ARM V1 体系是最初版本,只有26位的寻址空间,没有乘法指 令,最终没有商业化 ARM V2 体系与V1体系同为26位寻址空间,具有乘法和加法指 令,支持协处理器 ARM V3 体系的寻址范围扩展到32位,具有乘法和加法指令, 支持协处理器 ARM V4 体系增加了半字存储操作,对调试的支持以及支持嵌 入的ICE ARM V5 体系增加了DSP指令支持和对Java指令的支持 ARM V6 体系增加了媒体指令,ARMv6指令集合中加入了超过 60条SIMD单指令多数据指令 ARM V7 体系定义了三种独立的内核型--A(应用领域), R( 实时领域),M(控制领域)
单片机课件第二章 ARM体系结构
2.5
ARM微处理器指令系统
2.5.1 基本寻址方式
寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地 址的方式,ARM处理器有9 种基本寻址方式。
1.寄存器寻址
操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编 号,指令执行时直接取出寄存器值操作。
例如指令: MOV R1,R2 SUB R0,R1,R2
11111
系统模式
PC,R14~R0,CPSR(ARM v4及以上版本)
并非所有的模式位组合都能定义一种有效的处理器模式。其他组合的 结果不可预知。
2.2 ARM微处理器的寄存器结构
2.2.4 Thumb状态的寄存器集
2.2 ARM微处理器的寄存器结构
2.2.4 Thumb状态的寄存器集
Thumb 状态的寄存器在ARM 状态的寄存器上的映射
在Thumb状态下,程序计数器PC(Program Counter)使用位[1]选 择另一个半字。ARM处理器在两种工作状态之间可以切换。
Thumb状态:当操作数PSR控制位T为1时,执行BX指令进入Thumb 状态。如果处理器在Thumb状态进入异常,则当异常处理(IRQ、 FIQ、Undef、Abort和SWI)返回时,自动转换到Thumb状态。(异 常都是在ARM 状态中执行) ARM状态:当操作数PSR控制位T为0时,执行BX指令进入ARM状态 ;处理器发生异常(IRQ、FIQ、Reset、Undef、Abort和SWI)。在 此情况下,把PC内容复制到异常模式的链接寄存器中,并且异常处 理将从异常向量地址开始。
sys(系统模式):运行具有特权的操作系统任务。
und(未定义指令中止模式):当未定义的指令执行时进入该 模式,可用于支持硬件协处理器的软件仿真。
ARM 处理器工作状态与工作模式 ARM 体系结构所支持的异常
深入内核逻辑一个宇宙通用的事实是:结构决定功能!我们以典型的ARM嵌入式处理器内核的一般特征为例,,看看ARM设想的功能是如何被“构造”出来的。
主要说两个内容:•ARM处理器工作状态与工作模式•ARM体系结构所支持的异常基础概念字(Word):在ARM体系结构中,字的长度为32位(在8位/16位处理器体系结构中,字的长度一般为16位)。
•半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。
•字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。
问:计算机存储设备是按______ (A:字Word,B:半字Half-Word,C:字节Byte)编址的。
处理器工作状态ARM状态:正在执行ARM指令的处理器的状态。
Thumb状态:正在执行Thumb指令的处理器的状态。
不同的状态下,代码密集度不同,,ARM状态按字(32位)存储代码,Thumb状态按半字(16位)存储代码,这种特性有利于我们在必要的时候调整单位存储空间的代码容量,压缩代码占用空间。
这两个状态可以根据情况软件切换,,,后面我们还会再次提到这个话题,,,Note:对于ARM 32位处理器,两种状态下代码存储密集度不同,但在执行时仍是32位的!这就是说,代码可以压缩,但执行效率并不会下降,CPU仍是按字执行的啊!不过,Thumb状态下的指令的使用有某些限制,属于ARM状态下的指令的一个子集。
另外,调整代码密集度的优点在后来的ARM一些版本中可以自动切换,,,不需要程序员再过多费神,这就是所谓Thumb2状态:一种混合型指令集,降低功耗具有高代码压缩性处理器工作模式回顾,前面说过ARM内核采用了大量内部寄存器的特性,,以便有利于支持流水线技术,,,那么这些“大量内部寄存器”如何运作?工作模式本质上就是指内核中的这堆寄存器的功能分配和使用方法ARM处理器内部寄存器一起看,,这里一共有37个32位寄存器•其中,31个通用寄存器,包括程序寄存器(PC);•6个状态寄存器:。
ARM体系结构详解精
ARM嵌入式系统第2章ARM体系结构ARM微处理器的编程模型♦ARM徴处理器的工作状态♦ARM体系结构的存储器格式♦ARM体系结构的指令长度及数据宽度♦ARM微处理器的处理器模式♦ARM体系结构的寄存器组织♦ARM微处理器的异常状态字、半字、字节字(Word)在ARM体系结构中,字的长度为32位半字(Half-Word)在ARM体系结构中,半字的长度为16位字节(Byg)在ARM体系结构中,字节的长度为8位。
ARM微处理器的工作状态(1)字对齐:四字节对齐半字对齐:两字节对齐两种状态:♦ARM状态:处理器执行32位的字对齐的令♦Thumb状态:处理器执行16位的、半字对齐的Thumb指令处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。
I ARM微处理器的工作状态(2 )状态切换:BX {<cond>} <Rm><cond>指令的条件码。
忽略时无条件执行。
<Rm>子存器中为跳转的目标地址,当<Rm><存器的bit[O]为0时, 目标地址处的指令为ARM指令;当<Rm>^存器的bit[O]为1时,目标地址处的指令为Thumb 指令。
伪代码:if ConditionPassed(cond) thenT Flag=Rm[O]PC=Rm AND OxFFFFFFFEARM微处理器在复位或上电时处于ARM状态,发生异常时处于ARM状态。
右ARM体系结构的存储器格式(1)ARM体系结构所支持的最大寻址空间为4GB (2^字节)♦大端格式(Big Endian)字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
♦小端格式(Little Endian)低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
字地址字地址右ARM 体系结构的存储器格式(2)(0H)=0123H (4H)=4567H (8H)=89ABHBig Endian(0H)=3210H (4H)=7654H (8H)=BA98HLittle Endian右ARM 体系结构的存储器格式(3)8 9 AB4 5 6 7 0123一 “A ・■ • rO= 0x11223344 I 11 I 22 33 : 44 ILittle endian Big endianR2 =异FI*右 ARM 体系结构的指令长度及数据宽度♦指令长度:32位(在ARM 状态下) 16位(在Thumb 状态下)♦数据宽度: 字节(8位) 半字(16位) 字(32位)三种数据宽度对存储器及外部设备的访问。
ARM7体系结构
2.1 ARM简介
ARM10E系列简介
该系列包括ARM1020E和ARM1020E处理器核, 其核心在于使用向量浮点(VFP)单元VFP10提供高性 能的浮点解决方案,从而极大提高了处理器的整型和 浮点运算性能。 可以用于视频游戏机和高性能打印机等场合。
ARM7体系结构
1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储 系统
2.1 ARM简介
2.1 ARM简介
ARM9系列简介
该系列包括ARM9TDMI、ARM920T和带有高速 缓存处理器宏单元的ARM940T。除了兼容ARM7系列, 而且能够更加灵活的设计。 ARM9系列主要应用于引擎管理、仪器仪表、安 全系统和机顶盒等领域。
2.1 ARM简介
ARM9E系列简介
该系列为含有DSP指令集的综合处理器,包括 ARM926EJ-S、带有高速缓存处理器宏单元的 ARM966E-S/ARM946E-S。其内核在ARM7处理器内核 的基础上使用了Jazelle增强技术,该技术支持一种新 的Java操作状态,允许在硬件中执行Java字节码。
2.1 ARM简介
CortexTM-A8处理器简介
该处理器是ARM公司所开发的基于ARMv7架构的 首款应用级处理器,其特色是运用了可增加代码密度 和加强性能的技术、可支持多媒体以及信号处理能力 的NEONTM技术、以及能够支持Java和其他文字代码语 言的提前和即时编译的Jazelle@RTC技术。 众多先进的技术使其适用于家电以及电子行业等各 种高端的应用领域。
ARM处理器模式
ARM处理器共有七种运行模式:
除了用户模式之外的其他6种处理器模式称为特权模式(privileged mode),在这些模式下,程序可以访问所有的资源,也可以任意进行处理其模式的切换。
除了系统模式之外,其他5种模式又称为异常模式。
处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理进行切换,大多数的用户程序运行在用户模式下,这时,应用程序不能访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。
当需要进行处理器模式切换时,应用程序可以产生异常,在异常处理过程中进行处理器模式的切换,这种体系结构可以使操作系统控制整个系统资源。
当应用程序发生异常中断时,处理器进入相应的一场模式,在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器(保存了程序的运行状态)不被破坏。
系统模式并不是itongguo一场过程进入的,他和用户模式具有完全一样的寄存器,但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式的切换,它主要供操作系统使用。
操作系统的任务任然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。
[哈尔滨工程大学硕士论文基于ARM的嵌入式linux移植与裁剪研究]。
ARM架构
R13(SP)
R13
R13
R13_svc R13_svc R14_svc R14_svc
2-3-1 ARM状态下的寄存器组织
寄存器类别 寄存器在汇编中的名 称 用户 用户 R0(a1) R1(a2) R2(a3) R3(a4) R4(v1) R5(v2) R6(v3) 通用寄存器 和程序计数 器 R7(V4) R8(V4) R9(SB,v6) R0 R0 R1 R1 R2 R2 R3 R3 R4 R4 R5 R5 R6 R6 R7 R7 R8 R8 R9 R9 R10 R10 R11 R11 R8 R9 各模式下实际访问的寄存器 系统 系统 管理 管理 中止 中止 R0 R1 R2 R3 R4 R5 R6 R7 R8_fiq R8_fiq R9_fiq R9_fiq R10_fiq R10_fiq R11_fiq R11_fiq 未定义 未定义 中断 中断 快中断 快中断
1-4-1 常见ARM微处理器系列介绍
ARM9系列微处理器在高性能和低功耗特性方面提供 最佳的性能:
5级整数流水线,指令执行效率更高。 提供1.1MIPS/MHz的哈佛结构。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。 全性能的MMU,支持Windows CE、Linux、Palm OS 等多种主流 嵌入式操作系统。 MPU支持实时操作系统。 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。
2-1 ARM微处理器的工作状态
处理器状态: ARM9处理器内核使用V4T版本的ARM结构,具有 两种操作状态:
ARM状态:32位,这种状态下执行的是字方式的ARM指令 Thumb状态:16位,这种状态下执行半字方式的ARM指令。
第3章体系结构与指令系统
西南林学院计算机系 贺金平
2.6 ARM寄存器组成
2.6.1ARM寄存器组成概述 2.6.2ARM状态下的寄存器组织 2.6.3Thumb状态下的寄存器组织
西南林学院计算机系 贺金平
2.6.1 ARM寄存器组成概述
ARM处理器总共有37个寄存器,可以分为以下两 类寄存器 : 1) 31个通用寄存器 :
3.3 Thumb技术介绍
3.4 ARM处理器工作状态
3.5 ARM处理器工作模式
3.6 ARM寄存器组成
3.7 ARM异常中断
西南林学院计算机系 贺金平
本章的主要内容为:
3.8 ARM组织结构简介
3.9 ARM存储器接口及存储器层次
3.10 ARM协处理器
3.11 ARM片上总线AMBA
3.12 ARM核综述
西南林学院计算机系 贺金平
2.3.1 Thumb的技术概述
Thumb是ARM体系结构的扩展。它有从标准32位 ARM指令集抽出来的36条指令格式,可以重新编成 16位的操作码。这能带来很高的代码密度 ARM7TDMI是第一个支持Thumb的核,支持 Thumb的核仅仅是ARM体系结构的一种发展的扩展, 所以编译器既可以编译Thumb代码,又可以编译 ARM代码 支持Thumb的ARM体系结构的处理器状态可以方 便的切换、运行到Thumb状态,在该状态下指令集 是16位的Thumb指令集 。
西南林学院计算机系 贺金平
ARM体系结构的基本版本
ARM体系结构总结
核 ARM1 ARM2 ARM2aS,ARM3 ARM6,ARM600,ARM610 ARM7,ARM700,ARM710 ARM7TDMI,ARM710T,ARM720T ARM740T Strong ARM,ARM8,ARM810 ARM9TDMI,ARM920T,ARM940T 体系结构 V1 V2 V2a V3 V3 V4T V4 V4T
arm处理器异常模式有哪些
arm 处理器异常模式有哪些
ARM 处理器异常处理
所谓异常就是正常的用户程序被暂时中止,处理器就进入异常模式,例如响应一个来自外设的中断,或者当前程序非法访问内存地址都会进入相应异常模式。
1.1.1 异常分类
(1)复位异常
当CPU 刚上电时或按下reset 重启键之后进入该异常,该异常在管理模式下处理。
(2)一般/快速中断请求
CPU 和外部设备是分别独立的硬件执行单元,CPU 对全部设备进行管理和资源调度处理,CPU 要想知道外部设备的运行状态,要幺CPU 定时的去查看外部设备特定寄存器,要幺让外部设备在出现需要CPU 干涉处理时打断CPU,让它来处理外部设备的请求,毫无疑问第二种方式更合理,可以让CPU 专心去工作,这里的打断操作就叫做中断请求,根据请求的紧急情。
第2课 ARM体系结构的理解
第2课 ARM体系结构的理解作者:刘正翔接触过单片机或者DSP的同学,可能不难理解啥叫体系结构。
简单地说,体系结构即CPU内部是按照什么样的规范来工作的。
我们很熟悉X86架构,这就是一类属于CISC的体系结构。
我们这里谈到的是ARM的体系结构,是与CISC相对立的RISC体系结构。
先来看下CISC与RISC的区别。
CISC是复杂指令系统计算机的简称,而RISC是精简指令集计算机的简称。
在这里,我们关心的是RISC体系结构。
既然号称精简,就自然有自己的精简指令系统,流水线硬件执行,设置大量寄存器。
很多运算用到的操作数直接在寄存器里相互操作,加快了速度。
否则还得在存储器和寄存器之间来回跑,复杂的很。
我是RISC 的追随者,比较赞同RISC的体系结构。
其实CISC也有自己的优点。
否则RISC推出来十几年了,一直都没把CISC干倒。
这说明CISC有自己存在的理由和优势。
本课简单总结ARM体系的几个重点部分:ARM处理器模式,寄存器,异常中断,存储系统等。
初学单片机时候,还记得吗?我们也在了解这些寄存器和中断的东西,今天也不例外。
不过只是概述而已!这里面还有很多内容,不是一个总结就能说明白的。
1、ARM处理器模式ARM处理器共有7种运行模式,大家需要牢记。
我把这些模式归纳成表格的形式:表2.1 ARM处理器的7种运行模式处理器模式简略描述用户模式(User,usr)正常程序执行的模式快速中断模式(FIQ,fiq)高速数据传输和通道处理外部中断模式(IRQ,irq)通常的中断处理超级用户模式(Supervisor,sve)供操作系统os使用的一种保护模式数据访问中止模式(Abort,abt)用于虚拟存储及存储保护未定义指令中止模式(Undefined,und)用于支持软件仿真硬件的写处理器系统模式(System,sys)运行特权级的操作系统任务注意,《ARM体系结构与编程》这本书里的相应部分,把Supervisor写成了特权模式,笔者认为,翻译成超级用户模式更恰当。
第三节ARM体系结构
一般的通用寄存器
寄存器类别 寄存器在汇编中的名称
用户
系统
R0(a1)
R1(a2)
R2(a3)其中R0~R7为
R3(a4)
未R分4(v1) 组的寄存器,也
通用寄存器 和程序计数
器
就R是5(v2) 说对于任何处理 R6(v3)
器R模7(v4) 式,这些寄存器 都对应于相同的32位 R8(v5)
管理 (svc) 操作系下统保访护问代码用户模系统式复位的和寄软件存中器断响就应比时进较入方此模式
中止 (abt) 未定义 (und)
用或于存支储便 可持器虚 保,以拟护而使内存且用和操这/ 作个在A系模RM统式7TD的访MI一问没有些一大用特 些处权 受任 控务 的 支软持件硬仿资件真协源处。理器的 未定义指令异常响应时进入此模式
各模式下实际访问的寄存器
用户
系统
管理
中止
未定义
RR00
在汇编语言中寄存
R1
器R0~R13为保存数据
R2
或地址值的通用寄存器。
R3
它们是完全通用的寄存器, R4
不会被体系结构作为特殊
R5
用途,并且可用于任何使
R6
用通用寄存器的指令。
R7
R8
R9
R10
R11
R12
R13
RR1133__ssvc
R13_abt
SSPPSSRR__fifqiq
ARM状态各模式下可以访问的寄存器
寄存器类别 寄存器在汇编中的名称
通用寄存器和 程序计数器
状态寄存器
R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13(SP) R14(LR) R15(PC) CPSR SPSR
异常与MMU
2.6 ARM异常和中断 异常和中断
异常处理模式
异常类型 复位 未定义指令 软件中断( 软件中断(SWI) ) 预取中止(取指令存储器中止) 预取中止(取指令存储器中止) 模式 管理 未定义 管理 中止 正常地址 0x00000000 0x00000004 0x00000008 0x0000000C 0x00000010 0x00000018 0x0000001C 高端向量地址 0xFFFF0000 0xFFFF0004 0xFFFF0008 0xFFFF000C 0xFFFF0010 0xFFFF0018 0xFFFF001C
<MTSE1.0>
2.7 ARM存储器结构 存储器结构 2.7.1 ARM存储器管理单元MMU
实现虚拟地址空间到物理存储空间的映射; 实现虚拟地址空间到物理存储空间的映射; 存储器访问权限的控制; 存储器访问权限的控制; 设置虚拟存储空间的缓冲特性。 设置虚拟存储空间的缓冲特性。 页表是实现上述功能的一个重要手段, 页表是实现上述功能的一个重要手段,它实际上是位于内 存中的一个对照表。 存中的一个对照表。
嵌入式与ARM体系结构 体系结构 嵌入式与
知识回顾
了解嵌入式系统的历史与特点
嵌入式系统概述
熟悉嵌入式处理器的分类 了解SE1.0>
第
2
章
ARM体系结构概述
<MTSE1.0>
本章目标
了解ARM结构的特点 了解ARM结构的特点 ARM 熟悉ARM系列微处理器 熟悉ARM系列微处理器 ARM 掌握ARM处理器的模式 掌握ARM处理器的模式 ARM 掌握ARM存储器用途及结构 掌握ARM存储器用途及结构 ARM
<MTSE1.0>
简述arm处理器异常处理过程
简述arm处理器异常处理过程ARM处理器是一种常用的嵌入式处理器架构,广泛应用于移动设备、嵌入式系统和物联网等领域。
在ARM处理器的运行过程中,会出现各种异常情况,如硬件故障、软件错误等。
为了保证系统的稳定性和可靠性,ARM处理器采用了异常处理机制来处理这些异常情况。
ARM处理器的异常处理过程可以分为两个阶段:异常发生阶段和异常处理阶段。
异常发生阶段是指异常事件发生时的处理过程,而异常处理阶段是指异常事件被捕获后的处理过程。
在异常发生阶段,ARM处理器会首先检测到异常事件的发生,并保存当前的处理状态。
然后,根据异常事件的类型,ARM处理器会进入相应的异常处理程序。
ARM处理器支持的异常类型包括中断、数据终止、指令终止、外部中断等。
每种异常类型都有对应的异常处理程序。
在异常处理阶段,ARM处理器会根据异常事件的类型执行相应的异常处理程序。
异常处理程序的执行过程包括以下几个步骤:首先,ARM处理器会保存当前的处理状态,包括程序计数器、寄存器等。
然后,ARM处理器会根据异常事件的类型执行相应的异常处理代码。
异常处理代码可以是硬件中断处理程序、软件异常处理程序或操作系统内核的异常处理程序等。
在执行异常处理代码时,ARM处理器会根据异常事件的优先级进行中断屏蔽,以保证异常处理的顺序和可靠性。
最后,ARM处理器会恢复保存的处理状态,并继续执行异常处理之前的程序。
在异常处理过程中,ARM处理器还提供了一些特殊的异常处理指令,用于处理特定的异常情况。
例如,ARM处理器提供了异常返回指令,用于从异常处理程序返回到之前的程序。
此外,ARM处理器还提供了一些特殊的异常处理寄存器,用于保存异常处理过程中的状态信息。
ARM处理器的异常处理过程是一个复杂而精细的机制,能够有效地处理各种异常情况。
通过异常处理机制,ARM处理器可以保证系统的稳定性和可靠性,提高系统的容错能力和可维护性。
同时,ARM 处理器的异常处理机制也为开发者提供了一种方便和灵活的异常处理方式,可以根据实际需求进行异常处理程序的编写和调试。
ARM体系架构解析
ARM体系架构解析
ARM体系架构是由英国ARM公司推出的常见的32位RISC处理器架构,其在移动设备、嵌入式系统和服务器市场上有广泛应用。
其发展历史源远
流长,经过数十年的发展,其功能也在不断扩展,ARM体系架构已经成为
一种标准处理器架构。
ARM体系架构主要由四大部分组成,分别是内核、外设、中断和指令集。
其中,内核是ARM体系架构的核心,负责处理计算机的所有功能,包
括控制、数据存储和算法处理等。
外设又称外围设备,是处理器与外部世
界的桥梁,可以操控外部设备,比如键盘、显示器、磁盘和网络等。
中断
则是处理器如何处理外部设备发出的信号,其中有多重中断,监听外部设
备的信号,基于不同的中断模式,让处理器运行起来。
指令集是ARM体系
架构的核心,指令集是一组程序指令,它们描述了处理器如何处理和操作
数据,ARM有自己的专有指令集,被广泛应用到移动设备和嵌入式系统中。
ARM体系架构的另一个重要组成部分就是嵌入式软件,由于ARM的低
功耗、低成本和安全性,使得ARM广泛应用于很多嵌入式系统,而这些嵌
入式系统也需要嵌入式软件的支持,嵌入式软件具有低功耗、低功耗和嵌
入式系统的高稳定性等优点,此外。
ARM体系结构ARM简介
;从Arm形状(xíngzhuàn)切换到 Thumb形状(xíngzhuàn)
LDR R0,=Lable+1
BX
R0
;从Thumb形状(xíngzhuàn)切换到 ARM形状(xíngzhuàn)
LDR R0,=Lable
BX
R0
Lable
ADD
R0,R1,第R二十2一页,共43页。
跳转地址标号(偶数〕
尾执行也可进入ARM外形
BX Rm
第二十二页,共43页。
;从ARM外形(wài xínɡ)转变为 Thumb外形(wài xínɡ)
;从Thumb ARM外形(wài xínɡ) 转变为ARM外形(wài xínɡ)
勇于开始,才能找到成功的路
CODE32 LDR R0,=Label+1 BX R0
第九页,共43页。
ARM体系结构还采用一些特别的技术(jìshù),在保证高功用的 前提下尽量添加芯片的面积,并降低功耗
一切的ARM指令都可以依据前面的执行结武断议能否被执行, 从而提高指令的执行效率
可用加载/存储指令批量传输数据,以提高数据的传输效率。 可在一条数据处置指令中同时完成逻辑处置和移位功用。 在循环处置中运用地址的自动增减来提高运转效率
ARM Thumb
PC
PC
Fetch
从存储器中读取指令(zhǐlìng)
PC - 4 PC-2
PC - 8
PC - 4
Decode
Execute
解码(jiěmǎ)指令
寄存器读〔从寄存器Bank〕 移位及ALU操作 寄存器写〔到寄存器Bank 〕
PC指向正被取指的指令(zhǐlìng),而非正在执行的指令(zhǐlìng)
arm体系结构支持的异常类型
arm体系结构支持的异常类型
ARM体系结构支持的异常类型包括以下几种:
1. 中断异常(Interrupt Exception):由外部设备或其他处理器引发的异常,例如外部中断、时钟中断等。
2. 陷阱异常(Trap Exception):由软件中断指令(例如,系统调用)引发的异常。
3. 数据终止异常(Data Abort Exception):在访问内存时发生的异常,例如访问不存在的内存区域、访问不可读的内存等。
4. 指令终止异常(Prefetch Abort Exception):在取指令时发生的异常,例如访问不存在的指令地址、执行非法指令等。
5. 未定义指令异常(Undefined Instruction Exception):执行未定义指令时发生的异常。
6. SVC指令异常(Supervisor Call Exception):执行特权级别的系统调用指令时发生的异常。
7. FIQ指令异常(Fast Interrupt Request Exception):针对ARM体系结构中的快速中断请求(FIQ)的异常处理。
需要注意的是,不同的ARM处理器可能会有稍微不同的异常类型支持,具体的异常类型及其处理方式要参考相关处理器的技术文档。
arm工作模式
arm工作模式ARM工作模式。
ARM(Advanced RISC Machines)是一种基于精简指令集(RISC)架构的处理器架构,广泛应用于移动设备、嵌入式系统和消费电子产品中。
ARM处理器具有低功耗、高性能和灵活的特点,支持多种工作模式,本文将介绍ARM处理器的工作模式及其特点。
1. 用户模式。
用户模式是ARM处理器的普通工作模式,也是处理器上电后的初始工作模式。
在用户模式下,处理器可以执行大多数指令和访问大多数资源,但受到一定的限制,无法直接执行特权指令或者访问特权资源。
用户模式下的程序运行在用户空间,只能访问自己的地址空间,不能直接访问操作系统或者其他程序的地址空间。
用户模式是保护系统安全和稳定性的重要手段,有效隔离了不同程序和用户之间的资源访问,防止恶意程序对系统造成破坏。
2. 特权模式。
特权模式是ARM处理器的特殊工作模式,也称为监管模式或者系统模式。
在特权模式下,处理器可以执行特权指令和访问特权资源,例如修改控制寄存器、访问系统内存等。
特权模式通常由操作系统内核或者系统软件使用,用于管理系统资源、处理异常和中断、执行特权操作等。
特权模式下的程序运行在内核空间,拥有更高的权限和更广泛的资源访问能力,可以对系统进行更深层次的控制和管理。
3. 异常模式。
异常模式是ARM处理器的响应异常事件的工作模式,也称为异常处理模式。
在异常模式下,处理器响应异常事件,暂停当前程序的执行,转而执行异常处理程序,处理异常事件并恢复正常的程序执行。
异常事件包括中断、陷阱、系统调用等,可以由硬件、软件或者外部设备触发。
异常模式是保证系统安全和稳定性的重要手段,有效处理和响应异常事件,防止系统崩溃或者数据丢失。
4. 睡眠模式。
睡眠模式是ARM处理器的低功耗工作模式,也称为休眠模式或者省电模式。
在睡眠模式下,处理器暂停大部分工作,降低主频和电压,以减少功耗和延长电池续航时间。
睡眠模式通常由操作系统或者应用程序使用,用于在设备空闲或者长时间不使用时,自动进入低功耗状态。
ARM体系的7种工作模式
ARM体系的7种工作模式一、ARM体系的CPU有以下7种工作模式:1、用户模式(usr):正常的程序执行状态2、快速中断模式(fiq):3、中断模式(irq):4、管理模式(svc):操作系统使用的保护模式5、系统模式(sys):运行具有特权的操作系统任务6、数据访问终止模式(abt):数据或指令预取终止时进入该模式7、未定义指令终止模式(und):未定义的指令执行时进入该模式注解:可以通过软件来进行模式切换,或者发生各类中断、异常时CPU自动进入相应的模式;除用户模式外,其余6种工作模式都属于特权模式;特权模式中除了系统模式以外的其余5种模式称为异常模式;大多数程序运行于用户模式;进入特权模式是为了处理中断、异常、或者访问被保护的系统资源;二、ARM体系的CPU有两种工作状态1、ARM2、THumbCPU上电处于ARM状态三、寄存器ARM有31个通用的32位寄存器,6个程序状态寄存器,共分为7组,有些寄存器是所有工作模式共用的,还有一些寄存器专属于每一种工作模式;R13——栈指针寄存器,用于保存堆栈指针;R14——程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15的备份,而当发生中断或异常时,R14保存R15的返回值;R15——程序计数器;快速中断模式有7个备份寄存器R8—R14,这使得进入快速中断模式执行很大部分程序时,甚至不需要保存任何寄存器;其它特权模式都含有两个独立的寄存器副本R13、R14,这样可以令每个模式都拥有自己的堆栈指针和连接寄存器;四、当前程序状态寄存器(CPSR)CPSR中各位意义如下:T位:1——CPU处于Thumb状态,0——CPU处于ARM状态;I、F(中断禁止位):1——禁止中断,0——中断使能;工作模式位:可以改变这些位,进行模式切换;五、程序状态保存寄存器(SPSR)当切换进入某一个特权模式时,SPSR保存前一个工作模式的CPSR值,这样,当返回前一个工作模式时,可以将SPSR的值恢复到CPSR中;六、模式切换当异常发生,CPU进入相应的异常模式时,以下工作是由CPU自动完成的:1、在异常模式的R14中保存前一工作模式的下一条即将执行的指令地址;2、将CPSR的值复制到异常模式的SPSR中;3、将CPSR的工作模式设为该异常模式对应的工作模式;4、令PC值等于这个异常模式在异常向量表中的地址,即跳转去执行异常向量表中的相应指令;从异常工作模式退回到之前的工作模式时,需要由软件来完成以下工作:1、将异常模式的R14减去一个适当的值(4或8)后赋给PC寄存器;2、将异常模式SPSR的值赋给CPSR;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;
R10(SL,v7)
R11(FP,v8) 6个状态寄存器。
R12(IP) R13(SP) R14(LR)
R14
R14_svc
R14_abt
R15 CPSR
R14_und
R14_irq
R14_fiq
R15(PC)
状态寄 Confidential 存器 CPSR SPSR 无 SPSR_svc SPSR_abt
R10(SL,v7)
R11(FP,v8) R12(IP) R13(SP) R14(LR) R15(PC) 状态寄存器
Confidential
R10
R11 R12 R13 R14 R13_svc R14_svc R13_abt R14_abt R15 CPSR 无 SPSR_svc SPSR_abt SPSR_und SPSR_irq R13_und R14_und R13_irq R14_irq
快中断 (fiq) (fiq) 快中断 中断 中断 管理 管理 中止 中止 (irq) (irq) (svc) (svc) (abt) (abt)
未定义 未定义 (und) (und)
除用户模式外,其它模式均 支持高速数据传输及通 FIQ异常响应时进入此模式 为特权模式。ARM 内部寄存器 道处理 (如CPSR)和一些片内外设在硬件 用于通用中断处理 IRQ异常响应时进入此模式 设计上只允许(或者可选为只允许) 系统复位和软件中断响应时进 操作系统保护代码 入此模式 特权模式下访问。此外,特权模式 用于支持虚拟内存和 /或 可以自由的切换处理器模式,而用 在ARM7TDMI没有大用处 存储器保护 户模式不能自由切换到别的模式。 支持硬件协处理器的软 未定义指令异常响应时进入此
R4(v1)
R5(v2) 寄存器 R8~R14为分组 R6(v3) 通用寄 寄存器。它们所对应的物理 R7(v4) 存器和 寄存器取决于当前的处理器 程序计 R8(v5) 数器 R9(SB,v6) 模式,几乎所有允许使用通 R10(SL,v7) 用寄存器的指令都允许使用 R11(FP,v8) 分组寄存器 R12(IP) R13(SP) R14(LR) R13 R14
R3
R4 R5 R6 R7 R8_fiq
R9
R10 R11 R12 R13_svc R14_svc R13_abt R14_abt R13_und R14_und R13_irq R14_irq
R9_fiq
R10_fiq R11_fiq R12_fiq R13_fiq R14_fiq
R15(PC)
状态寄 Confidential 存器 CPSR SPSR 无 SPSR_svc
快中断 (fiq) (fiq) 快中断 中断 中断 (irq) (irq)
管理 管理
中止 中止
(svc) (svc)
(abt) (abt)
未定义 未定义 (und) (und)
这五种模式称为异常模式。 支持高速数据传输及通 FIQ异常响应时进入此模式 它们除了可以通过程序切换进入外, 道处理 也可以由特定的异常进入。当特定 用于通用中断处理 IRQ异常响应时进入此模式 的异常出现时,处理器进入相应的 系统复位和软件中断响应时进 操作系统保护代码 入此模式 异常模式。每种异常模式都有一些 用于支持虚拟内存和 /或 独立的寄存器,以避免异常退出时 在ARM7TDMI没有大用处 存储器保护 用户模式的状态不可靠。 支持硬件协处理器的软 未定义指令异常响应时进入此
这两种模式都不能由异常进入,
不能直接切换到其它模式
快中断 (fiq)
支持高速数据传输及通 系统模式是特权模式,不受用户模 FIQ异常响应时进入此模式 道处理
中断
管理 中止
(irq)
(svc) (abt)
式的限制。操作系统在该模式下访问用 用于通用中断处理 IRQ异常响应时进入此模式 户模式的寄存器就比较方便,而且操作 系统复位和软件中断响应时进 操作系统保护代码 系统的一些特权任务可以使用这个模式 入此模式 访问一些受控的资源,而不必担心异常 用于支持虚拟内存和/或 在ARM7TDMI没有大用处 存储器保护 出现时任务状态变得不可靠。
通用寄 存器和 程序计 数器
R15(PC)
状态寄 Confidential 存器 CPSR SPSR 无 SPSR_svc SPSR_abt
R15
CPSR SPSR_abt SPSR_und SPSR_irq SPSR_fiq
2.6.3 一般的通用寄存器
寄存器 寄存器在汇编 类别 中的名称 R0(a1) R1(a2) R2(a3) R3(a4) 各模式下实际访问的寄存器 用户 系统 管理 中止 R0 R1 未定义 中断 快中断
在ARM7TDMI没有大用处
未定义指令异常响应时进入此模式
未定义 (und)
Confidential
2.5.1 特权模式
处理器模式 用户 系统 系统 (usr) (sys) (sys) 说明 正常程序工作模式 用于支持操作系统的特 权任务等 备注 不能直接切换到其它模式 与用户模式类似,但具有可以 直接切换到其它模式等特权
件仿真 模式
Confidential
当特定的异常出现的时候,程序就会进入到相应的异 常模式中 。不同的模式 对应于应用程序的 不同的阶 段:比如正常运行,中断等
2.5.3 用户和系统模式
处理器模式 用户 用户 系统 系统 (usr) (usr) (sys) (sys) 说明 备注
正常程序工作模式
用于支持操作系统的特 与用户模式类似,但具有可以 而且它们使用完全相同的寄存器组。 权任务等 直接切换到其它模式等特权
件仿真 模式
Confidential
它们之间的区别在于有些操作只能在特权模式下 才被允许,如直接改变模式和中断使能等;系统模 式实际上相当于用户模式的特权方式
2.5.2 异常模式
处理器模式 说明 备注
用户
系统
(usr)
(sys)
正常程序工作模式
用于支持操作系统的特 权任务等
不能直接切换到其它模式
与用户模式类似,但具有可以 直接切换到其它模式等特权
R4(v1)
R5(v2) R6(v3) 37个寄存器,分 所有的 R7(v4) 成两大类: R8(v5)
R4
R5 R6 R7 R8 R9 R10 R11 R12 R13 R13_svc R13_abt R13_und R13_irq R8_fiq R9_fiq R10_fiq R11_fiq R12_fiq R13_fiq
R4(v1)
R5(v2) R6(v3) R7(v4) R8(v5) R9(SB,v6) R10(SL,v7) R11(FP,v8) R12(IP) R13(SP) R14(LR) R13 R14 R8 R9 R10 R11 R12 R13_svc R14_svc
R4
R5 R6 R7 R8_fiq R9_fiq R10_fiq R11_fiq R12_fiq R13_abt R14_abt R13_und R14_und R13_irq R14_irq R13_fiq R14_fiq
R4
R5 R6 R7 R8 R8_fiq
R9 R10
R11 R12 R13_svc R14_svc R13_abt R14_abt R13_und R14_und R13_irq R14_irq
R9_fiq R10_fiq
R11_fiq R12_fiq R13_fiq R14_fiq
R15(PC)
状态寄 Confidential 存器 CPSR SPSR 无 SPSR_svc
支持硬件协处理器的软 件仿真 未定义指令异常响应时进入此 模式
未定义 (und)
Confidential
2.6 ARM状态下内部寄存器
寄存器类别 用户 系统 管理 中止 未定义 中断 快中断 在ARM7TDMI 处理器内部有 37个用户可见的寄存器。 R0(a1) R0 在不同的工作模式和处理器状态下,程序员可以访问的寄存器 R1(a2) R1 也不尽相同。 R2(a3) R2 R3(a4) R4(v1) R5(v2) R6(v3) 通用寄存器 和程序计数 器 R7(v4) R8(v5) R9(SB,v6) R8 R9 R3 R4 R5 R6 R7 R8_fiq R9_fiq 寄存器在汇编 中的名称 各模式下实际访问的寄存器
R10_fiq
R11_fiq R12_fiq R13_fiq R14_fiq
CPSR SPSR
SPSR_fiq
2.6.1 ARM状态各模式下的寄存器
寄存器 寄存器在汇编 类别 中的名称 R0(a1) R1(a2) R2(a3) R3(a4) 各模式下实际访问的寄存器 用户 系统 管理 中止 R0 R1 R2 R3 未定义 中断 快中断
R15
CPSR SPSR_abt SPSR_und SPSR_irq SPSR_fiq
2.6.3 一般的通用寄存器(续)
寄存器 寄存器在汇编 类别 中的名称 R0(a1) R1(a2) R2(a3) R3(a4) 各模式下实际访问的寄存器 用户 系统 管理 中止 R0 R1 未定义 中断 快中断
在汇编语言中寄存 器R0R4(v1) ~R12为保存数据 R5(v2) 或地址值的通用寄存器。 R6(v3) 它们是完全通用的寄存 通用寄 R7(v4) 存器和 器,不会被体系结构作 程序计 R8(v5) 数器 为特殊用途,并且可用 R9(SB,v6) 于任何使用通用寄存器 R10(SL,v7) R11(FP,v8) 的指令。
备注
不能直接切换到其它模式
与用户模式类似,但具有可以直接 切换到其它模式等特权 FIQ异常响应时进入此模式 IRQ异常响应时进入此模式 系统复位和软件中断响应时进入此 模式
(usr)