1、1嵌入式系统原理与设计嵌入式系统原理与设计第四讲第四讲 ARMARM嵌入式处理器的体系结构嵌入式处理器的体系结构2本节提要本节提要ARM处理器体系结构处理器体系结构ARM处理器工作模式处理器工作模式S3C44B0X简介简介 ARM中断处理中断处理ARM系统启动过程系统启动过程ARM 微处理器的指令系统微处理器的指令系统34.1.1 ARM处理器概述处理器概述lARMARMAdvanced RISC MachinesAdvanced RISC MachineslARMARM3232位位RISCRISC结构结构IPIP核提供商核提供商4lARMARM即即Advanced RISC Machines
2、Advanced RISC Machines的缩写。的缩写。l19851985年年4 4月月2626日,第一个日,第一个ARMARM原型在英国剑桥的原型在英国剑桥的AcornAcorn计算机有限公司诞生。计算机有限公司诞生。l2020世纪世纪8080年代后期,年代后期,ARMARM很快开发成很快开发成AcornAcorn的台的台式机产品,形成英国的计算机教育基础。式机产品,形成英国的计算机教育基础。l19901990年成立了年成立了Advanced RISC Machines Advanced RISC Machines LimitedLimited。l2020世纪世纪9090年代,年代,AR
3、M32ARM32位嵌人式位嵌人式RISCRISC(Reduced Reduced Instruction Set ComputerInstruction Set Computer)处理器扩展到世)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。入式系统应用领域的领先地位。ARMARM的发展历程的发展历程-1-15l3232位位RISCRISC处理器受到青睐,领先的是处理器受到青睐,领先的是ARMARM嵌入式嵌入式微处理器系列微处理器系列.lARMARM公司虽然只成立公司虽然只成立2 20 0多年,但在多年,但在19991
4、999年因移动年因移动电话火爆市场,其电话火爆市场,其3232位位RISCRISC处理器占市场份额超处理器占市场份额超过了过了50%50%,20012001年初,年初,ARMARM公司的公司的3232位位RISCRISC处理器处理器市场占有率超过了市场占有率超过了75%75%。ARMARM公司是知识产权供应公司是知识产权供应商,是设计公司。由合作伙伴公司来生产各具特商,是设计公司。由合作伙伴公司来生产各具特色的芯片。色的芯片。6ARMARM的发展历程的发展历程-2-2l1991-1991-ARM ARM 推出第一款推出第一款RISCRISC嵌入式微处嵌入式微处理器核理器核 ARM6 ARM6l
5、1993-ARM 1993-ARM 推出推出 ARM7 ARM7 核核l1995 ARM1995 ARM的的ThumbThumb扩展指令集结构为扩展指令集结构为1616位系统增加了位系统增加了3232位的性能位的性能,提供业界领提供业界领先的代码密度先的代码密度7ARMARM的发展历程的发展历程-3-3ARM8,810ARM7D,7DMARM2,31985-90 1991 1992 1993 1994 1995 1996 1997ARM7TDMIARM6,60,610ARM7,710MIPS204060801000StrongARMARM9,9208ARMARM处理器的处理器的3 3大特点如下
6、:大特点如下:l小体积、低功耗、成本低、高性能;小体积、低功耗、成本低、高性能;l1616位位/32/32位双指令集;位双指令集;l全球众多的合作伙伴。全球众多的合作伙伴。ARMARM处理器系列提供的解决方案包括:处理器系列提供的解决方案包括:l在无线、消费电子和图像应用方面的开放平台;在无线、消费电子和图像应用方面的开放平台;l存储、自动化、工业和网络应用的嵌入式实时系统存储、自动化、工业和网络应用的嵌入式实时系统l智能卡和智能卡和SIMSIM卡的安全应用。卡的安全应用。ARMARM处理器的特点处理器的特点9ARMARM体系结构版本体系结构版本 -1-1lVersion 1(obsolete
7、)Version 1(obsolete)l基本数据处理基本数据处理l字节字节,字以及多字字以及多字 load/store load/storel软件中断软件中断l26 bit 26 bit 地址总线地址总线lVersion 2(obsolete)Version 2(obsolete)lMultiply&Multiply-accumulateMultiply&Multiply-accumulatel支持协处理器支持协处理器l支持线程同步支持线程同步l26 bit 26 bit 地址总线地址总线10ARMARM体系结构版本体系结构版本 -2-2lV3V3版本推出版本推出3232位寻址能力位寻址能力
8、,结构扩展变化为结构扩展变化为uT T1616位压缩指令集位压缩指令集uM M增强型乘法器增强型乘法器,产生全产生全6464位结果位结果(32X32(32X3264or32X32+64 64or32X32+64 64)64)lV4V4版本增加了半字版本增加了半字loadload和和storestore指令指令lV5V5版本改进了版本改进了ARMARM和和ThumbThumb之间的交互之间的交互,结构扩展变化为结构扩展变化为:uE-E-增强型增强型DSPDSP指令集指令集,包括全部算法操作和包括全部算法操作和1616位乘法位乘法操作操作uJ-J-支持新的支持新的JAVA,JAVA,提供字节代码执
9、行的硬件和优化软提供字节代码执行的硬件和优化软件加速功能件加速功能11ARM ARM 体系结构更新体系结构更新12ARMARM微处理器的应用领域微处理器的应用领域l工业控制领域工业控制领域l无线通讯领域无线通讯领域l网络应用网络应用l消费电子产品消费电子产品l成像和安全产品成像和安全产品13 在在ARM处理器内核中有多个功能模块可供生产厂商根据不同用户的不同处理器内核中有多个功能模块可供生产厂商根据不同用户的不同要求来配置生产。这些模块分别用要求来配置生产。这些模块分别用T、D、M、I、E、J、S等来表示,这些模等来表示,这些模块一般从处理器的内核版本上可以区分出来。块一般从处理器的内核版本上
10、可以区分出来。T:表示支持:表示支持Thumb指令,说明该内核可从指令,说明该内核可从16位位Thumb指令集扩充到指令集扩充到32位位ARM指令集。指令集。D:表示支持:表示支持Debug,说明该内核中放置了用于调试的结构,通常它为一个边,说明该内核中放置了用于调试的结构,通常它为一个边界扫描链界扫描链JTAG,可使,可使CPU进入调试模式,从而方便地进行断点设置、单步调进入调试模式,从而方便地进行断点设置、单步调试。试。M:表示:表示Multiplier,说明处理器内部带有,说明处理器内部带有8位乘法器。位乘法器。I:表示:表示Embedded ICE Logic,用于实现断点观测及变量观
11、测的逻辑电路部,用于实现断点观测及变量观测的逻辑电路部分,其中的分,其中的TAP控制器可接入到边界扫描链。控制器可接入到边界扫描链。除了以上一些特性外,除了以上一些特性外,ARM处理器内核中还有一些处理器内核带处理器内核中还有一些处理器内核带EJ-S模块。模块。E:表示:表示DSP Enhancement,即增加了前导零处理和饱和运算等一些常用的,即增加了前导零处理和饱和运算等一些常用的DSP运算指令,极大地改善音、视频处理程序的性能。运算指令,极大地改善音、视频处理程序的性能。J:表示:表示Jazelle DBX(Direct Bytecode eXecution),这是),这是ARM公司推
12、出公司推出的的Java加速解决方案。加速解决方案。Jazelle不是一个简单的加速硬件,它是融入于处理器不是一个简单的加速硬件,它是融入于处理器流水线之中的一项专门针对流水线之中的一项专门针对Java指令执行的硬件功能,使得指令执行的硬件功能,使得CPU可以直接接可以直接接收一部分收一部分Java指令,并加以译码执行。指令,并加以译码执行。144.1.2 ARM内核种类分类内核种类分类1.ARM71.ARM7系列系列lARM7处理器采用了处理器采用了ARMV4T(冯(冯诺依曼)体系结构诺依曼)体系结构 l分为三级流水分为三级流水,空间统一的指令与数据空间统一的指令与数据Cache,平均功耗为平
13、均功耗为0.6mW/MHz,时钟速度为时钟速度为66MHz,每条指令平均执行每条指令平均执行1.9个时个时钟周期。其中的钟周期。其中的ARM710,ARM720和和ARM740为内带为内带Cache的的ARM核。核。lARM7体系结构是小型、快速、低能耗、集成式的体系结构是小型、快速、低能耗、集成式的RISC内核内核结构。结构。l该产品的典型用途是数字蜂窝电话和硬盘驱动器该产品的典型用途是数字蜂窝电话和硬盘驱动器 l主流的主流的ARM7内核是内核是ARM7TDMI、ARM7TDMI-S、ARM7EJ-S、ARM720T l常用的有常用的有Samsung公司的公司的S3C44BOX与与S3C45
14、10处理器、处理器、Atmel公司的公司的AT91FR40162系列处理器、系列处理器、Cirrus公司的公司的EP73xx系列等系列等152.ARM92.ARM9系列系列lARM9处理器采用处理器采用ARMV4T(哈佛)体系结构(哈佛)体系结构 lARM9采用五级流水处理及分离的采用五级流水处理及分离的Cache结构,平均功耗为结构,平均功耗为0.7mW/MHz。时钟速度为。时钟速度为120MHz200MHz,每条指令平,每条指令平均执行均执行1.5个时钟周期个时钟周期 l与与ARM7处理器系列相似,其中的处理器系列相似,其中的ARM920、ARM940和和ARM9E处理器均为含有处理器均为
15、含有Cache的的CPU核,性能为核,性能为132MIPS(120MHz时钟,时钟,3.3V供电)或供电)或220MIPS(200MHz时钟)时钟)l常用于无线设备、仪器仪表、联网设备、机顶盒设备、高端常用于无线设备、仪器仪表、联网设备、机顶盒设备、高端打印机及数码相机应用中打印机及数码相机应用中 l主流的主流的ARM9内核是内核是ARM920T、ARM922T、ARM940 lSamsung公司的公司的S3C2510、S3C2410,Cirrus公司的公司的EP93xx系列等系列等 163.ARM10E3.ARM10E系列系列l ARM10E处理器采用处理器采用ARMVST体系结构体系结构l
16、可以分为六级流水处理,采用指令与数据分离的可以分为六级流水处理,采用指令与数据分离的Cache结构结构,平均功耗,平均功耗1000mW,时钟速度为,时钟速度为300MHz,每条指令平均,每条指令平均执行执行1.2个时钟周期个时钟周期 l其系统时钟高达其系统时钟高达300MHz时钟,指令时钟,指令Cache和数据和数据Cache分分别为别为32KB,数据宽度为,数据宽度为64位位 l能够支持多种商用操作系统,适用于下一代高性能手持式因能够支持多种商用操作系统,适用于下一代高性能手持式因特网设备及数字式消费类应用特网设备及数字式消费类应用 l主流的主流的ARM10内核是内核是ARM1020E、AR
17、M1022E、ARM1026EJ-S等等 174SecurCore处理器处理器lSecurCore系列处理器提供了基于高性能的系列处理器提供了基于高性能的32位位RISC技术技术的安全解决方案,该系列处理器具有体积小、功耗低、代码的安全解决方案,该系列处理器具有体积小、功耗低、代码密度大和性能高等特点。密度大和性能高等特点。l采用软内核技术,以提供最大限度的灵活性,以及防止外部采用软内核技术,以提供最大限度的灵活性,以及防止外部对其进行扫描探测,提供面向智能卡的和低成本的存储保护对其进行扫描探测,提供面向智能卡的和低成本的存储保护单元单元MPU,可以灵活地集成用户自己的安全特性和其他的协,可以
18、灵活地集成用户自己的安全特性和其他的协处理器处理器l目前含有目前含有SC100、SC110、SC200、SC210 4种产品。种产品。185.Intel5.Intel的的StrongARMStrongARMl采用采用ARMV4T的五级流水体系结构。的五级流水体系结构。l目前有目前有SA110、SA1100、SA1110等等3个版本。个版本。另外另外Intel公司的基于公司的基于ARMv5TE体系结构的体系结构的XScale PXA27x系列处理器,与系列处理器,与StrongARM相比增加了相比增加了I/D Cache,并且加入了,并且加入了部分部分DSP功能,更适合于移动多媒体应用。功能,更
19、适合于移动多媒体应用。目前市场上的大部分智能手机的核心处理器就是目前市场上的大部分智能手机的核心处理器就是XScale系列系列处理器。处理器。196.ARM11系列系列lARM11处理器系列可以在使用处理器系列可以在使用130nm代工厂技术、小至代工厂技术、小至2.2mm2芯片面积和低至芯片面积和低至0.24mW/MHz的前提下达到高达的前提下达到高达500MHz的性能表现。的性能表现。lARM11处理器系列以众多消费产品市场为目标处理器系列以众多消费产品市场为目标l主要的主要的ARM11处理器有处理器有ARM1136JF-S、ARM1156T2F-S、ARM1176JZF-S、ARM11 M
20、CORE等多种。等多种。20l这里对各类处理器核的这里对各类处理器核的ARM流水线做一下对比流水线做一下对比 21表表4-1 ARM处理器分类处理器分类22本节提要本节提要ARM处理器体系结构处理器体系结构ARM处理器工作模式处理器工作模式S3C44B0X简介简介 ARM中断处理中断处理ARM系统启动过程系统启动过程ARM 微处理器的指令系统微处理器的指令系统234.2.1 ARM和和Thumb状态状态lARM体系结构在体系结构在V4T及其以上版本定义了称为及其以上版本定义了称为Thumb指令集的指令集的16位指令集。位指令集。Thumb指令集的功能是指令集的功能是32位位ARM指令集的功能子
21、集。指令集的功能子集。l正在执行正在执行Thumb指令集的处理器是工作在指令集的处理器是工作在Thumb状状态下的。同样,正在执行态下的。同样,正在执行ARM指令集的处理器是工作指令集的处理器是工作在在ARM状态下。状态下。ARM状态下的处理器不能执行状态下的处理器不能执行Thumb指令,在指令,在Thumb状态下的处理器也不能执行状态下的处理器也不能执行ARM指令。必须确保处理器不接受对当前状态来说为指令。必须确保处理器不接受对当前状态来说为错误指令集的指令。每个指令集都包括切换处理器状错误指令集的指令。每个指令集都包括切换处理器状态的指令。态的指令。ARM处理器总是在处理器总是在ARM状态
22、下开始执行状态下开始执行代码。代码。24lTHUMBTHUMB指令集指令集 (T)(T)uTHUMB THUMB 指令集指令集:3232位位ARMARM指令集的子集,按指令集的子集,按1616位指位指令重新编码令重新编码u代码尺寸小代码尺寸小 (up to 40%compression)(up to 40%compression)u简化设计简化设计THUMBTHUMB指令的特点:指令的特点:1 1、THUMBTHUMB代码所需空间为代码所需空间为ARMARM代码的代码的70%70%;2 2、THUMBTHUMB代码所使用的指令数比代码所使用的指令数比ARMARM代码多代码多40%40%;3 3
23、、用、用3232位存储器,位存储器,ARMARM代码比代码比THUMBTHUMB代码快代码快40%40%;4 4、用、用1616位存储器,位存储器,THUMBTHUMB代码比代码比ARMARM代码快代码快45%45%;5 5、使用、使用THUMBTHUMB代码,外部存储器功耗比代码,外部存储器功耗比ARMARM代码少代码少30%30%254.2.2 ARM处理器模式处理器模式 除了用户模式以外,其他除了用户模式以外,其他6种处理器模式可以称为特权模式种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理
24、器模式的切换。其中除了系统模式外的其他地进行处理器模式的切换。其中除了系统模式外的其他5种特权种特权模式又称为异常模式。模式又称为异常模式。ARM处理器运行模式处理器运行模式处理器模式处理器模式描描 述述用户模式(用户模式(User,usrUser,usr)正常程序执行的模式正常程序执行的模式快速中断模式(快速中断模式(FIQ,fiqFIQ,fiq)用于高速数据传输和通道处理用于高速数据传输和通道处理外部中断模式(外部中断模式(IRQ,irqIRQ,irq)用户通常的中断使用用户通常的中断使用特权模式(特权模式(Supervisor,sveSupervisor,sve)供操作系统使用的一种保护
25、模式供操作系统使用的一种保护模式数据访问中止模式(数据访问中止模式(Abort,abtAbort,abt)用于虚拟存储及存储保护用于虚拟存储及存储保护未定义指令中止模式未定义指令中止模式(Undefined,undUndefined,und)用于支持通过软件仿真硬件的协处用于支持通过软件仿真硬件的协处理器理器系统模式(系统模式(System,sysSystem,sys)用于运行特权级的操作系统任务用于运行特权级的操作系统任务26ARM寄存器介绍寄存器介绍 27l通用寄存器通常又可以分为下面通用寄存器通常又可以分为下面3类。类。未备份寄存器:包括未备份寄存器:包括R0R7。备份寄存器:包括备份寄
26、存器:包括R8R14。程序计数器程序计数器PC:即:即R15。1.未备份寄存器未备份寄存器R0R7 对于每个未备份寄存器来说,在所有的处理器模式对于每个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器,在异常中断造成处理下指的都是同一个物理寄存器,在异常中断造成处理器模式切换时,由于不同的处理器模式使用相同的物器模式切换时,由于不同的处理器模式使用相同的物理寄存器,可能造成寄存器中数据被破坏。未备份寄理寄存器,可能造成寄存器中数据被破坏。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未备份寄存器。存器的
27、应用场合都可以使用未备份寄存器。282.备份寄存器备份寄存器R8R14 l备份寄存器中的每个寄存器对应于两个不同的物理寄存器。备份寄存器中的每个寄存器对应于两个不同的物理寄存器。l对于备份寄存器对于备份寄存器R13、R14来说,每个寄存器对应于来说,每个寄存器对应于6个不同个不同的物理寄存器,其中的一个是用户模式和系统模式共用的,的物理寄存器,其中的一个是用户模式和系统模式共用的,另外的另外的5个则对应于其他个则对应于其他5种处理器模式,采用下面的方法来种处理器模式,采用下面的方法来标识。标识。u寄存器寄存器R14又被称为连接寄存器(又被称为连接寄存器(LR),在),在ARM中有下中有下面两种
28、特殊用途。面两种特殊用途。每一种处理器模式在自己的物理每一种处理器模式在自己的物理R14中存放当前子程序中存放当前子程序的返回地址。当通过的返回地址。当通过BL或者或者BLX指令调用子程序时,指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器的值复制到程序计数器PC中时,就实现了子程序中时,就实现了子程序返回。具体的汇编调用方式是:返回。具体的汇编调用方式是:MOV PC,LR或或BX LR。当发生异常中断的时候,该模式下的特定物理当发生异常中断的时候,该模式下的特定物理R14被设被设置成该异常模式将要返回
29、的地址。置成该异常模式将要返回的地址。293.程序计数器程序计数器PCR15:l由于由于ARM处理器采用的是流水线机制,当正确地读取处理器采用的是流水线机制,当正确地读取了了PC值时,该值为当前指令地址值加值时,该值为当前指令地址值加8字节。也就是字节。也就是说对于说对于ARM指令来说,指令来说,PC指向当前指令的下两条指指向当前指令的下两条指令的地址,由于令的地址,由于ARM指令是字对齐的,指令是字对齐的,PC值的第值的第0位位和第和第1位总是为位总是为0。l当成功地向当成功地向PC写入一个地址数值时,程序将跳转到该写入一个地址数值时,程序将跳转到该地址执行。地址执行。304.程序状态寄存器
30、(程序状态寄存器(PSR)CPSR(当前程序状态寄存器)可以在任何处理器模式下(当前程序状态寄存器)可以在任何处理器模式下被访问。每一种模式下都有一个专用的物理状态寄存器,称为被访问。每一种模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常退出这个寄存器用于存放当前程序状态寄存器的内容。在异常退出时,可以用时,可以用SPSR中保存的值来恢复中保存的值来恢复CPSR。313029282726876543210NZCVQDNMLRAZIFIM4M3M2M0
31、311)条件标志位)条件标志位lN(Negative)、)、Z(Zero)、)、C(Carry)及)及V(oVerflow)统称为条件标志位。)统称为条件标志位。标标 志志含含 义义N本位设置成当前指令运算结果的本位设置成当前指令运算结果的bit31的值的值当两个补码表示的有符号整数运算时,当两个补码表示的有符号整数运算时,N1表示运算的结果为负数,表示运算的结果为负数,N0 表示结果为正数或零表示结果为正数或零ZZ1表示运算结果是表示运算结果是0,Z0表示运算结果不是零表示运算结果不是零对于对于CMP指令,指令,Z1表示进行比较的两个数大小相等表示进行比较的两个数大小相等C 在加法指令中(包
32、括比较指令在加法指令中(包括比较指令CMN),结果产生进位了,则),结果产生进位了,则C1,表,表示无符号数运算发生上溢出,其他情况下示无符号数运算发生上溢出,其他情况下C0 在减法指令中(包括比较指令在减法指令中(包括比较指令CMP),结果产生借位了,则),结果产生借位了,则C0,表示,表示无符号数运算发生下溢出,其他情况下无符号数运算发生下溢出,其他情况下C1 对于包含移位操作的非加对于包含移位操作的非加/减法运算指令,减法运算指令,C中包含最后一次被溢出的位中包含最后一次被溢出的位的数值,对于其他非加的数值,对于其他非加/减法运算指令,减法运算指令,C位的值通常不受影响位的值通常不受影响
33、V 对于加对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,号数时,V1表示符号位溢出表示符号位溢出,其他的指令通常不影响其他的指令通常不影响V位位322)Q标志位标志位l在在ARM v5的的E系列处理器中,系列处理器中,CPSR的的bit27称为称为Q标志位,主要用于指示增强的标志位,主要用于指示增强的DSP指令是否发生了溢指令是否发生了溢出,同样的,出,同样的,SPSR的的bit27也称为也称为Q标志位,用于在标志位,用于在异常中断发生时保存和恢复异常中断发生时保存和恢复CPSR中的中的Q标志位。标志位。333)
34、CPSR中的控制位中的控制位CPSR的低的低8位位I、F、T及及M4:0统称为控制位,当异常中断发生时这些统称为控制位,当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。中断禁止位中断禁止位当当I1时禁止时禁止IRQ中断。中断。当当F1时禁止时禁止FIQ中断。中断。通常一旦进入中断服务程序可以通过置位通常一旦进入中断服务程序可以通过置位I和和F来禁止中断,但是在来禁止中断,但是在本中断服务程序退出前必须恢复原来本中断服务程序退出前必须恢复原来I、F位的值。位的值。T控制位控制位用来控制指令执行的状态,即说
35、明本指令是用来控制指令执行的状态,即说明本指令是ARM指令还是指令还是Thumb指令。指令。对于不同版本的对于不同版本的ARM处理器,处理器,T控制位的含义是有些不同的。控制位的含义是有些不同的。对于对于ARM v4及更高版本的及更高版本的T系列处理器,系列处理器,T控制位含义如下。控制位含义如下。当当T0,表示执行,表示执行ARM指令。指令。当当T1,表示执行,表示执行Thumb指令。指令。34 M 控制位控制位M4:0处理器模式处理器模式可访问的寄存器可访问的寄存器 0b10000UserPC,R14R0,CPSR 0b10001FIQPC,R14_fiqR8_fiq,R7R0,CPSR,
36、SPSR_fiq 0b10010IRQPC,R14_irqR13_irq,R12R0,CPSR,SPSR_irq 0b10011SupervisorPC,R14_svcR13_svc,R12R0,CPSR,SPSR_svc 0b10111AbortPC,R14_abtR13_abt,R12R0,CPSR,SPSR_abt 0b11011UndefinedPC,R14_undR13_und,R12R0,CPSR,SPSR_und 0b11111SystemPC,R14R0,CPSR(ARM v4及更高版本)及更高版本)35本节提要本节提要ARM处理器体系结构处理器体系结构ARM处理器工作模式处理
37、器工作模式S3C44B0X简介简介 ARM中断处理中断处理ARM系统启动过程系统启动过程ARM 微处理器的指令系统微处理器的指令系统364.3 ARM中断处理中断处理4.3.1中断基础知识中断基础知识 中断和轮询方式不一样,在中断执行完成后需要恢中断和轮询方式不一样,在中断执行完成后需要恢复被中断的程序。复被中断的程序。1保存上下文和恢复上下文保存上下文和恢复上下文 在中断处理的前后需要对处理器被中断中止的现场在中断处理的前后需要对处理器被中断中止的现场进行保护和恢复,通常称为压栈和出栈。保护现场的目进行保护和恢复,通常称为压栈和出栈。保护现场的目的就是将当前程序处理的数据、程序执行被中断的位
38、置的就是将当前程序处理的数据、程序执行被中断的位置、工作状态等保存起来以便于中断返回能继续正常执行、工作状态等保存起来以便于中断返回能继续正常执行 372数据共享问题数据共享问题 在使用中断中都会遇到这样一个问题:中断程序可在使用中断中都会遇到这样一个问题:中断程序可能会与用户所写的其他任务代码通信。能会与用户所写的其他任务代码通信。通常来讲,要保证微处理器的实时性和中断的及时通常来讲,要保证微处理器的实时性和中断的及时响应,必须要求中断服务程序所占时间尽可能短。如果响应,必须要求中断服务程序所占时间尽可能短。如果把微处理器所做的工作全部放到中断程序中去做既不可把微处理器所做的工作全部放到中断
39、程序中去做既不可能也不合算。因此,中断程序需要通知任务代码来做后能也不合算。因此,中断程序需要通知任务代码来做后续工作处理。在这种情况下,中断程序和任务代码就必续工作处理。在这种情况下,中断程序和任务代码就必须共享一个或多个变量来实现它们之间的通信。须共享一个或多个变量来实现它们之间的通信。38经典的共享数据问题经典的共享数据问题 static int iTemperatures2;void interrupt vReadTemperatures(void)iTemperatures0=/从硬件中读出温度值iTemperatures1=/从硬件中读出温度值void main()int iTem
40、p0,iTemp1;while(TURE)iTemp0=iTemperatures0;iTemp1=iTemperatures1;if(iTemp0!=iTemp1)/发出报警;MOVE R1,(iTemperature0)MOVE R2,(iTemperature1)SUBTRACT R1,R2JCOND ZERO,TEMPRATURES_OK;发出警报TEMPRATURES_OK:39禁止中断来解决图禁止中断来解决图4-3中的共享数据问题中的共享数据问题 static int iTemperatures2;void interrupt vReadTemperatures(void)iTem
41、peratures0=/从硬件中读出温度值iTemperatures1=/从硬件中读出温度值void main()int iTemp0,iTemp1;while(TURE)disable();iTemp0=iTemperatures0;iTemp1=iTemperatures1;enable();if(iTemp0!=iTemp1)/发出报警;.DIMOV R1,(iTemperature0)MOV R2,(iTemperature1)EISUBTRACT R1,R2J C O N D Z E R O,TEMPRATURES_OK;发出警报TEMPRATURES_OK:403“原子区原子区”和
42、和“临界区临界区”l程序中不能被中断的部分代码成为程序中不能被中断的部分代码成为“原子的原子的”。任务是。任务是用用“原子的原子的”指不能被任何可能扰乱正在使用数据的指不能被任何可能扰乱正在使用数据的操作所中断。操作所中断。l更精确看法是:中断程序、任务代码共享数据和使用共更精确看法是:中断程序、任务代码共享数据和使用共享数据的任务代码不是原子的。只要在任务代码使用共享数据的任务代码不是原子的。只要在任务代码使用共享数据的时候禁止中断,就可以保证那些代码是原子的享数据的时候禁止中断,就可以保证那些代码是原子的。l我们把必须是我们把必须是“原子的原子的”以保证系统正常运转的指令的以保证系统正常运
43、转的指令的集合定义为临界区。集合定义为临界区。414中断延迟时间中断延迟时间 所谓中断延迟时间是指系统响应一个中断所需要花费的时间所谓中断延迟时间是指系统响应一个中断所需要花费的时间,主要取决于以下四个因素:,主要取决于以下四个因素:(1)中断被禁止的最长时间;)中断被禁止的最长时间;(2)任一个优先级更高的中断的中断服务程序执行时间;)任一个优先级更高的中断的中断服务程序执行时间;(3)处理器停止当前任务、保存必要的信息以及执行中断程序)处理器停止当前任务、保存必要的信息以及执行中断程序中的指令所需要花费的时间;中的指令所需要花费的时间;(4)从中断程序保存上下文到完成一次响应所需要的时间。
44、)从中断程序保存上下文到完成一次响应所需要的时间。425中断的一些常见问题中断的一些常见问题(1)在中断发生时,微处理器怎么知道去哪里执行中断服务程)在中断发生时,微处理器怎么知道去哪里执行中断服务程序呢?序呢?(2)使用中断向量表的微处理器怎么知道中断向量表在哪里呢)使用中断向量表的微处理器怎么知道中断向量表在哪里呢?(3)一条指令在执行过程中,微处理器能被中断吗?)一条指令在执行过程中,微处理器能被中断吗?(4)如果两个中断同时产生,微处理器会优先执行那一个中断)如果两个中断同时产生,微处理器会优先执行那一个中断服务程序呢?服务程序呢?(5)一个中断请求信号能够中断另外一个中断程序吗?)一
45、个中断请求信号能够中断另外一个中断程序吗?(6)在中断被禁止的时候发生中断请求会怎么样?)在中断被禁止的时候发生中断请求会怎么样?(7)可以用)可以用C语言写中断程序吗?语言写中断程序吗?434.3.2 ARM的异常类型的异常类型lARM处理器提供处理器提供7种可以使正常指令中止执行的异常种可以使正常指令中止执行的异常情况,按优先级从高到低排列如下:情况,按优先级从高到低排列如下:ResetData AbortFIQIRQPrefetch AbortSWIUndefined instruction44异常向量异常向量45l异常处理就是处理这些异常情况的方法。大多数异常异常处理就是处理这些异常情
46、况的方法。大多数异常都对应一个软件的异常处理程序都对应一个软件的异常处理程序一个在异常发生一个在异常发生时执行的软件程序。时执行的软件程序。l每种异常都导致内核进入一种特定的模式,如表每种异常都导致内核进入一种特定的模式,如表4-5。表表4-5 ARM处理器异常和其模式处理器异常和其模式异常异常模式模式目的目的快速中断请求快速中断请求FIQ快速中断请求处理快速中断请求处理中断请求中断请求IRQ 中断请求处理中断请求处理SWI和复位和复位SVC 操作系统的受保护模式操作系统的受保护模式预取指中止和数据中止预取指中止和数据中止 abort虚存或存储器保护处理虚存或存储器保护处理未定义指令未定义指令
47、undefined软件模拟硬件协处理器软件模拟硬件协处理器46ARM处理器的中断处理需要注意以下几个问题:处理器的中断处理需要注意以下几个问题:1.首先就是知道首先就是知道ARM状态下的通用寄存器和程序计数器,如状态下的通用寄存器和程序计数器,如图图4-2,带阴影的就是相应模式下的私有寄存器。,带阴影的就是相应模式下的私有寄存器。2.在模式切换的过程中,要保护系统和用户模式下的通用寄在模式切换的过程中,要保护系统和用户模式下的通用寄存器状态,以便在异常处理完成之后程序能正常返回。存器状态,以便在异常处理完成之后程序能正常返回。3.异常处理的动作。怎样触发异常并通知处理器是由相应的异常处理的动作
48、。怎样触发异常并通知处理器是由相应的硬件来自动完成。硬件来自动完成。474.3.3 ARM对异常的响应对异常的响应lARM对异常的响应过程是从中断向量表开始的。一般对异常的响应过程是从中断向量表开始的。一般来说,来说,ARM处理器中断向量表的地址是放在从处理器中断向量表的地址是放在从0开始开始的的32个字节内,如表个字节内,如表4-6所示。所示。表表4-6 ARM异常中断向量及优先级异常中断向量及优先级地址地址异常中断类型异常中断类型入口时处理器的操作模式入口时处理器的操作模式 优先级优先级0 x00000000复位复位超级用户超级用户00 x00000004未定义指令未定义指令未定义未定义6
49、0 x00000008软件中断软件中断超级用户超级用户50 x0000000c中止(预取指)中止(预取指)中止中止40 x00000010中止(数据)中止(数据)中止中止10 x00000014保留保留保留保留0 x00000018IRQIRQ30 x0000001cFIQ FIQ248对一个中断的操作过程包括:进入中断、中断执行对一个中断的操作过程包括:进入中断、中断执行和中断返回。和中断返回。当一个异常出现以后,当一个异常出现以后,ARM微处理器在进入异常处微处理器在进入异常处理程序之前会执行以下几步操作:(这些是中断发生时理程序之前会执行以下几步操作:(这些是中断发生时,处理器硬件自动处
50、理的),处理器硬件自动处理的)1、将下一条指令的地址存入相应连接寄存器、将下一条指令的地址存入相应连接寄存器LR,以便程,以便程序在处理异常返回时能从正确的位置重新开始执行。序在处理异常返回时能从正确的位置重新开始执行。2、将、将CPSR复制到相应的复制到相应的SPSR中。中。3、根据异常类型,强制设置、根据异常类型,强制设置CPSR的运行模式位。的运行模式位。4、强制、强制PC从相关的异常向量地址取下一条指令执行,从从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。而跳转到相应的异常处理程序处。49表表4-7 ARM进入进入/退出异常退出异常PC、LR值值异常或入口异常或