ARM七种运行模式
ARM单片机简介

电子产业链全程电子商务平台|旗下网站华强电子网华强LED网华强手机制造网华强电子交易所华强电子检测中心外贸通English|繁体|帮助中心|产品服务会员套餐诚易通600条竞价排名ISCP现货认证BCP品牌认证中国制造委托交易洽洽酷管家旺铺推介竞标推广服务在线交易诚信保证服务手机华强电子网华强手机制造网超级买家|进入互联商务系统上传IC库存参与竞价排名发布求购信息查看客户评价修改企业网站发布元器件发布推介信息管理询报价查看客户留言修改注册信息[当前1041位会员在线]华强电子网购物车首页供应信息中国制造求购信息诚信交易技术资料求职招聘商情资讯商友社区客服热线:400-887-3118位置:首页技术资料电子维基arm单片机电子维基arm单片机[浏览次数:334次]arm单片机是以ARM处理器为核心的一种单片微型计算机,是近年来随着电子设备智能化和网络化程度不断提高而出现的新兴产物。
ARM是一家微处理器设计公司的名称,ARM既不生产爱心篇也不销售芯片,是专业从事技术研发和授权转让的公司,世界知名的半导体电子公司都与ARM简历了合作伙伴关系,包括国内许多公司也从ARM购买芯核技术用于设计专用芯片。
arm单片机以其低功耗和高性价比的优势逐渐步入高端市场,成为了时下的主流产品。
目录arm单片机的优势arm单片机的结构特性arm单片机的工作状态和模式arm单片机的寄存器结构arm单片机的常见异常arm单片机的应用arm单片机的发展趋势arm单片机的优势ARM单片机采用了新型的32位ARM核处理器,使其在指令系统,总线结构,调试技术,功耗以及性价比等方面都超过了传统的51系列单片机,同时arm 单片机在芯片内部集成了大量的片内外设,所以功能和可靠性都大大提高。
arm单片机的结构特性具有统一和固定长度的指令域,使指令集和指令译码都大大简化具有一个大而统一的寄存器文件,大多数数据操作都在寄存器中完成,使指令执行速度更快采用加载/存储结构,使数据处理时只对寄存器操作,而不直接对存储器操作寻址方式简单而灵活,所有加载/存储的地址都只由寄存器的内容和指令域决定,执行效率高每一条数据处理指令都对算术逻辑单元和移位寄存器进行控制,以最大限度的提高算术逻辑单元和移存器的利用率采用自动增减地址的寻址方式,有利于优化循环程序的执行引入多寄存器加载/存储指令,有利于实现数据吞吐量的最大化arm单片机的工作状态和模式从编程的角度看,ARM处理器的工作状态通常有以下两种:1、ARM状态,此时处理器执行32位的字对齐的ARM指令2、Thumb状态,此时处理器执行16位的,半字对齐的Thumb指令当ARM处理器执行32位ARM指令集中的指令时,工作在ARM状态,执行16位Thumb指令集中的指令时,工作在Thumb状态,通常在刚加点开始执行代码时处于ARM状态,然后在程序的执行过程中,只要满足一定条件,随时可以在两种工作状态间切换,并且这种切换并不影响处理器的工作模式和相应寄存器中的内容。
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)的值是固定的,另外寄存器的值是随机的。
ARM7跟ARM9的区别跟ARM体系结构新

ARM7与ARM9的区别及ARM体系结构一、 ARM7与ARM9的区别新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。
这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。
1 时钟频率的提高ARM7处理器采用3级流水线,而ARM9采用5级流水线。
增加的流水线设计提高了时钟频率和并行处理能力。
5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。
在同样的加工工艺下,ARM9TDMI处理器的时钟频率是ARM7TDMI的1.8~2.2倍。
2 指令周期的改进指令周期的改进对于处理器性能的提高有很大的帮助。
性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。
对于采用最高级的语言,一般来说,性能的提高在30%左右。
2.1 loads 指令矛n stores指令指令周期数的改进最明显的是loads指令和stores指令。
从ARM7到ARM9这两条指令的执行时间减少了30%。
指令周期的减少是由于ARM7和ARM9两种处理器内的两个基本的微处理结构不同所造成的。
(1)ARM9有独立的指令和数据存储器接口,允许处理器同时进行取指和读写数据。
这叫作改进型哈佛结构。
而ARM7只有数据存储器接口,它同时用来取指令和数据访问。
(2)5级流水线引入了独立的存储器和写回流水线,分别用来访问存储器和将结果写回寄存器。
以上两点实现了一个周期完成loads指令和stores指令。
2.2 互锁(interlocks)技术当指令需要的数据因为以前的指令没有执行完而没有准备好就会产生管道互锁。
当管道互锁发生时,硬件会停止这个指令的执行,直到数据准备好为止。
虽然这种技术会增加代码执行时间,但是为初期的设计者提供了巨大的方便。
编译器以及汇编程序员可以通过重新设计代码的顺序或者其他方法来减少管道互锁的数量。
2.3 分枝指令ARM9和ARM7的分枝指令周期是相同的。
ARM微处理器的七种运行模式

ARM微处理器的七种运⾏模式
ARM微处理器的七种运⾏模式:
1. ⽤户模式(usr):正常的程序执⾏状态
2. 快速中断模式(fiq):⽤于处理快速中断,对⾼速数据传输或通道处理。
3. 中断模式(irq):对⼀般情况下的中断进⾏处理。
4. 管理模式(svc):操作系统使⽤的保护模式,处理软件中断swi reset。
5. 系统模式(sys):运⾏具有特权的操作系统任务
6. 数据访问终⽌模式(abt):数据或指令预取终⽌时进⼊该模式,可⽤于处理存储器故障、实现虚拟存储器和存储器保护。
7. 未定义指令终⽌模式(und):未定义的指令执⾏时进⼊该模式,处理未定义的指令陷阱,当未定义的指令执⾏时进⼊该模式,可⽤于
⽀持硬件协处理器的软件仿真。
特别说明
运⾏模式可以通过软件来进⾏模式切换,或者发⽣各类中断、异常时CPU⾃动进⼊相应的模式。
除⽤户模式外,其余6种⼯作模式都属于特权模式。
特权模式中除了系统模式以外的其余5种模式称为异常模式。
⼤多数程序运⾏于⽤户模式。
进⼊特权模式是为了处理中断、异常、或者访问被保护的系统资源。
嵌入式课后习题答案

第八章
一、填空题。
1、Makefile、配置文件、配置工具。
2、配置命令解释器、配置用户界面。
arch:arch目录包括了所有和体系结构相关的核心代码。include:include目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下;init:init目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件;mm:mm目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下;drivers:drivers目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound;ipc:ipc目录包含了核心进程间的通信代码;modules:modules目录存放了已建好的、可动态加载的模块;fs:fs目录存放Linux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext3文件系统对应的就是ext3子目录;Kernel:Kernel内核管理的核心代码放在这里。同时与处理器结构相关代码都放在arch/*/kernel目录下;net:net目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面;lib:lib目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下;scripts:scripts目录包含用于配置核心的脚本文件;documentation:documentation目录下是一些文档,是对每个目录作用的具体说明。
ARM应用系统开发详解(入门资料)

ARM应用系统开发详解(入门资料)第1章ARM微处理器概述本章简介ARM微处理器的一些基本概念、应用领域及特点,引导读者进入ARM技术的殿堂。
本章主要内容:- ARM及相关技术简介- ARM微处理器的应用领域及特点- ARM微处理器系列- ARM微处理器的体系结构- ARM微处理器的应用选型1.1 ARM-ADV ANCED RISC MachinesARM(ADV ANCED RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。
1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。
目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。
ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。
目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。
1.2 ARM微处理器的应用领域及特点1.2.1 ARM微处理器的应用领域到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域:1、工业控制领域:作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。
最新嵌入式期末考试试卷

1、 ARM 微处理器有 7种工作模式,它们分为两类 非特权模式 、 特权模式 。
其中用户模式属于 非特权模式ARM 处理器有两种总线架构,数据和指令使用同一接口的是 冯诺依曼 ,数据和指令分开使用不同接口的是 哈佛结 4、 ARM 微处理器复位后,PC 的地址通常是 0x0 ,初始的工作模式是Supervisor 。
5、 ARM 微处理器支持虚拟内存,它是通过系统控制协处理器 CP15 和MMU (存储管理部件)来进行虚拟内存的存储和管理。
当系统发生 数据 异常和指令领取 异常时,异常处理程序透过嵌入式操作系统的内存管理机制,通过MMU 交换物理内存和虚拟内存的页面,以保证程序正常执行。
6、 编译链接代码时,有两种存储代码和数据的字节顺序,一种是 小端对齐 ,另一种是 打断对齐7、 构建嵌入式系统开发环境的工具链有多种,其中开放源码的工具链是 GNU 工具链 ,ARM 公司提供的工具链是 ADS工具链计算机有CISC 和RISC 两种类型,以ARM 微处理器为核心的计算机属于 RISC 类型,其指令长度是 定长的 1、 目前使用的嵌入式操作系统主要有哪些?请举出六种较常用的。
Windows CE/Windows Mobile 、VxWork 、Linux 、uCos 、Symbian 、QNX 任选六2、ARM 系统中的堆栈有四种,如下图。
请按图标出四种堆栈的类型。
ATPCS 编程规范约定使用的堆栈是哪一种?答:FD 、FA 、ED 、EA 。
A TPCS 编程规范约定使用的堆栈是FD3、Boot Loader 在嵌入式系统中主要起什么作用?完成哪些主要的工作?答:Boot Loader 是在嵌入式系统复位启动时,操作系统内核运行前,执行的一段程序。
通过Boot Loader ,初始化硬件设备,建立内存和I/O 空间映射图,为最终加载操作系统内核调整好适当的系统软硬件环境。
4、搭建嵌入式开发环境,连接目标板,一般使用什么通信接口连接?在Windows 主机上使用什么软件建立连接?在Linux 主机上使用什么软件建立连接?1、 答:RS-232,以太网口、并口在Windows 主机上使用超级终端软件 在Linux 主机上使用Minicom 软件 5嵌入式开发环境主要包括哪些组件?嵌入式系统开发需要交叉编译和在线调试的开发环境,主要包括● 宿主机 ● 目标机(评估电路板) ● 基于JTAG 的ICD 仿真器、或调试监控软件、或在线仿真器ICE ● 运行于宿主机的交叉编译器和链接器、以及开发工具链或软件开发环境 ● 嵌入式操作系统6 在进行基于ARM 核的嵌入式系统软件开发时,调用如下函数:int do_something(int arg1,void *arg2,char arg3,int *arg4)这四个参数通过什么方式从调用程序传入被调函数?根据ATPCS 编程规范,调用函数和子程序通过R0——R3四个寄存器传递参数,超过四个参数使用堆栈传递。
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个状态寄存器:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
s3c2440中断体系结构:如何用中断?1.中断发生:保存别人的状态如何中断可以事先设置,对程序初始化,使能中断。
中断发生后,进入中断模式2.中断处理分辨中断源进行不同的处理清理工作3.恢复别人的状态过程:外界信号上升沿、下降沿,高电平、低电平都可以设置成信号引脚设置,再进入状态寄存器。
状态寄存器连接屏蔽寄存器进入第二个状态寄存器,储存各种中断,可以储存多个中断进入优先级寄存器,判断中断运行顺序再进入屏蔽使能寄存器和模式寄存器进入优先级寄存器进入cpu处理cpu的处理:进入入口地址 b handleIRQ计算返回地址,被中断处地址保存现场,即各寄存器状态调用处理函数函数运行完后恢复现场函数的处理:分辨终端处理中断清除数据,即清除中断1.中断寄存器arm的七种模式r 用户模式r0-r152.fiq 快中断模式r0-r7专用寄存器r8-r15,3.svc 管理模式专用寄存器r13-r14,4.abt 数据访问终止模式5.sys 系统模式6.und 未定义指令终止模式7.irq 中断模式几种模式的区别:嵌入式的中断:a.不同的寄存器b.不同的权限c.触发条件不一样何时使用几种模式:usr 用户模式:arm处理器正常的程序执行状态fiq 快中断模式:高速数据传输和通道处理svc 管理模式:操作系统使用的保护模式abt 数据访问终止模式:数据或者指令终止时进入,用于虚拟存储或者存储保护sys 系统模式:运行具有特权的操作系统任务und 未定义指令终止模式:未定义的指令执行时进入该模式,用于支持硬件处理器的软件仿真.irq 中断模式:用于通用的中断处理后六种是特权模式,用于处理中断、异常和特殊权限处理用户模式是最常见的模式2.中断中的异常中断是一种异常。
当发生中断时,cpu进入中断模式cpu进入异常入口,异常入口是硬件规定的一个地址运行模式ARM920T 支持7 种运行模式:●用户(usr)):正常ARM 程序执行状态●快中断(fiq)):为支持数据传输或通道处理设计●中断(irq)):用于一般用途的中断处理●管理(svc)):操作系统保护模式●中止(abt ): 数据或指令预取中止后进入●系统(sys)):操作系统的特权用户模式●未定义(und)):执行了一个未定义指令时进入模式的改变可由软件控制,或者由外部中断或进入异常引起。
大部分应用程序都将在用户模式执行。
被称为特权模式的非用户模式,都将进入到中断服务或异常中去,或者访问受保护的资源。
内部寄存器ARM920T 总共有37 个寄存器,其中31 通用32 位寄存器和6 个状态寄存器,但不能在同一时刻对所有的寄存器可见。
处理器状态和运行模式决定了哪些寄存器对程序员可见。
ARM状态时内部寄存器集在ARM 状态,16 个通用寄存器和一个状态寄存器在任意时刻都可见。
在特权(非用户)模式下,将切换到指定模式的分组(banked)寄存器。
图2-3 显示了哪些寄存器在各模式下是可见的:分组寄存器被标记了阴影三角形。
ARM 状态时寄存器被设为包含16 个直接可以访问的寄存器:R0 到R15。
除了R15,其他全部寄存器都为通用寄存器,如可能用于保存数据或地址值。
除此之外,还有第17 个寄存器用于存储状态信息。
FIQ 模式包含7 个分组寄存器,分别映射到R8-14(R8_fiq-R14_fiq)。
在ARM 状态,有很多不需要保存寄存器的FIQ 处理程序。
用户,IRQ,管理中止和未定义模式都包含两个分组寄存器映射到R13 和R14,允许这些模式都都包含私有堆栈指针和链接寄存器。
Thumb 状态时内部寄存器集Thumb 状态时的寄存器集为ARM 状态时的寄存器的分配的一个子集。
程序员能够直接访问8 个通用寄存器R0 至R7,还有程序计数器(PC),一个堆栈指针寄存器(SP),一个链接寄存器(LR)和CPSR。
各自特权模式还分别有分组堆栈指针,链接寄存器和进程保存状态寄存器(SPSR)。
如图2-4 所示。
Thumb 状态访问高寄存器(Hi-Registers )在Thumb 状态,寄存器R8-R15(“Hi registers”)不是标准的寄存器集的一部分。
然而,汇编语言程序员可以受限的对它们的进行访问,可以将它们用于快速暂存。
使用MOV 指令的特殊变量可以将一个值从R0-R7(“Lo register”)范围内的寄存器传送到高寄存器或从高寄存器到第低寄存器。
使用CMP 和ADD 指令也可以对高寄存器的值与寄存器的值进行比较以或相加。
更多内容请参考表3-34。
程序状态寄存器ARM920T 包含了一个当前程序状态寄存器(Current Program Status Register-CPSR),还有5 个用于异常程序处理的程序状态保存寄存器(Saved Program Status Registers-SPSR)。
这些寄存器的功能为:●保存最近已处理的ALU 操作的信息●控制中断的使能与禁止●设置处理器的运行模式图2-6 显示了各位的编排状态代码标志位N,Z,C 和V 位为状态代码标志位。
算术或逻辑操作结果可能会改变这些位,并检验以决定是否应该执行某条指令。
在ARM 状态,所有指令都可能为条件执行:详情见表3-2。
在Thumb 状态,只有分支指令才能条件执行:详情见表3-46。
控制位PSR (包含I,F,T 和M[4:0])的末端8 位,统称为控制位。
当发生异常时将会改变这些位。
如果处理器运行在特权模式,它们也可由软件控制。
异常:程序暂时停止当正常程序流程被暂时停止发生异常,例如响应一个来自外设的中断。
在处理异常前,必须保护当前的处理器状态,以便在完成处理程序后能恢复到原来的程序。
如果同时发生好几个异常,将会按照固定的顺序来分配,见P2-13 的异常优先级。
进入异常行为当处理一个异常时,ARM920T 将会进行以下活动:1. 相应链接寄存器保存下条指令的地址。
如果在ARM 状态进入异常,下条指令的地址将会复制到链接寄存器(当前PC+4 或PC+8,由异常决定。
详情见表2-2)中。
如果在Thumb 状态进入异常,写入链接寄存器的值则为当前PC 偏移一个值,这样异常返回后程序能从正确的位置恢复。
这意味着异常处理不需要确定异常是从什么状态进入的。
例如,在SWI 的情况,无论是在ARM 状态还是Thumb 状态执行SWI,MOVS PC,R14_svc 语句都将返回到下一条指令。
2. 复制CPSR 的内容到相应SPSR 中。
3. 根据异常类型强制将CPSR 模式位设为某一个值。
4. 强制PC 从相关异常向量处取下条指令。
通常也会置位中断禁止标志位,以防止不同的难处理的异常嵌套。
如果一个异常发生时处理器处于Thumb 状态,当装载异常向量地址到PC 时会自动切换到ARM 状态。
离开异常行为:当异常结束,异常处理程序将会:1. 将链接寄存器适当减去一个偏移量并放入到PC 中。
(偏移量由异常类型决定)2. 复制SPSR 的内容返回给CPSR 中。
3. 如果在异常进入时置位了中断禁止标志位异常,清除中断禁止标志位。
注意:不需要在异常结束时切换回Thumb 状态,因为在异常前会立刻保存CPSR 中T 位的值到SPSR 中,并在退出异常时从SPSR 恢复到CPSR 中。
异常进入/ 退出总结表2-2 总结了进入异常时保存在相关R14 中的PC 值和被推荐的退出异常的指令。
注释:1. 此处PC 为含预取中止的BL/SWI/未定义指令取指令的地址。
2. 此处PC 为由于FIQ 或IRQ 抢先而未执行的指令地址。
3. 此处PC 为发生了数据中止的Load 或Store 指令的地址。
4. 当复位时保存在R14_svc 的值将是不可预测的。
快中断FIQFIQ(快中断请求)异常是为支持数据传输或通道处理而设计的,在ARM 状态拥有足够的私有寄存器来消除对寄存器保存的需求(这样最小化了对上下文的切换的开销)。
将nFIQ 输入端拉低可以实现外部产生FIQ。
由ISYNC 输入信号端的状态决定是同步还是异步传输。
当ISYNC 为低电平,认为nFIQ 和nIRQ 为异步,中断前会引起同步周期延迟并影响处理器流程。
无论是从ARM 还是Thumb 状态进入的异常,FIQ 处理时执行SUBS PC,R14_fiq,#4 时,都应该避免中断。
如果设置CPSR 的F 标志位,FIQ 将会被禁止(但主义这不可能在用户模式中发生)。
如果F 标志位为零,ARM920T将在每条指令末检测FIQ 同步发生器的输出是否为低电平。
中断IRQIRQ(中断请求)异常是一个由nIRQ 输入端的低电平产生的一个普通中断。
IRQ 的优先级低于FIQ,当进入了相关的FIQ,会屏蔽IRQ。
除非是在特权(非用户)模式,其他任何时刻都禁止设置CPSR 内的I 位。
无论是从ARM 还是Thumb 状态进入的异常,IRQ 处理时执行SUBS PC,R14_fiq,#4 时,都应该避免中断。
中止中止表示不能完成当前对存储器的访问。
通过外部ABORT 输入端指示的。
ARM920T 在存储器访问周期期间检测中止异常。
有两种类型的中止:●预取中止(Prefetch Abort):发生在指令预取期间●数据中止(Date Abort):发生在数据访问期间如果发生预取中止,将屏蔽预取指并为无效,但并不会立刻带来异常,直到指令到达流水线的执行阶段才发生。
若未执行该指令,将不会发生中止,因为流水线发生了分支。
如果发生数据中止,由指令类型决定其行为:●单一的数据转移指令(LDR,STR)回写到被修改的基址寄存器:中止处理程序必须意识到这点。
●交换指令(SWP)执行失败,就如同没有被执行。
●块数据转移指令(LDM,STM)完成。
如果设置了回写,基址寄存器将被更新。
如果指令会覆盖基址寄存器数据(转移列表中包含基址),覆盖将会被阻止。
表明了中止后所有寄存器的覆盖都会被阻止,特别是R15(通常是最后转移的寄存器)在一个被中止的LDM 指令会被阻止覆盖。
中止机制使得分页虚拟存储器系统可以被实现。
在这样一个系统中允许处理器产生任意地址。
当无法获取某一地址上的数据时,内存管理单元(Memory Management Unit-MMU)将表明产生一个中止。
中止处理程序必须紧接着找出中止原因,使得被请求的数据可用并重试被中止的指令。
应用程序并不需要了解可以使用的内存总量,也不需要关心中止对其状态以任何方式被影响。
当确定中止原因后,处理程序应该不顾状态(ARM 或Thumb)执行下列语句:SUBS PC,R14_abt,#4 ; 预取中止SUBS PC,R14_abt,#8 ; 数据中止这将恢复PC 和CPSR,并重试被中止的指令。
软件中断SWI软件中断指令(Software Interrupt Instruction-SWI)用于进入管理模式,通常请求一个特定的管理功能。