1、page2022-8-9计算机学院1第第2章章 ARM7体系结构体系结构 page计算机学院22022-8-91.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统10 嵌入式系统体系结构设计page计算机学院32022-8-92.1 ARM简介nARM公司简介 ARM是Advanced RISC Machines的缩写,它是一家微处理 器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC 处理器。ARM公司的特点
2、是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM(Original Equipment Manufacturer,原始设备生产商)厂商,并提供服务。OEM:定牌生产合作,俗称“贴牌”。这种委托他人生产的合作方式即为OEM,承接这加工任务的制造商就被称为OEM厂商,其生产的产品就是OEM产品。page计算机学院42022-8-9ARM授权费IPARM 创造和设计IPPartner产品,例如:芯片Partner把ARM IP 和其他 IP 集成进产品OEM Customer版权费单价OEM 用来自ARM Partner的芯片设计制造最终用户产品业务拓展/市场格局ARMAR
3、M的业务模型的业务模型page计算机学院52022-8-92.1 ARM简介nARM公司简介将技术授权给其它芯片厂商形成各具特色的形成各具特色的ARMARM芯片芯片.page计算机学院62022-8-9 两种存储器结构:两种存储器结构:冯冯诺依曼体系结构,也称诺依曼体系结构,也称普林斯顿结构。普林斯顿结构。80868086、ARM7ARM7等。等。指令寄存器指令寄存器控制器控制器数据通道数据通道输入输入输出输出中央处理器中央处理器存储器存储器程序程序指令指令0 0指令指令1 1指令指令2 2指令指令3 3指令指令4 4数据数据数据数据0 0数据数据1 1数据数据2 2page计算机学院7202
4、2-8-9 两种存储器结构:两种存储器结构:哈佛体系结构,哈佛体系结构,MCS51,MC68,Z8MCS51,MC68,Z8,ARM9ARM9等。等。指令寄存器指令寄存器控制器控制器数据通道数据通道输入输入输出输出中央处理器中央处理器程序存储器程序存储器指令指令0指令指令1指令指令2数据存储器数据存储器数据数据0数据数据1数据数据2地址地址指令指令地址地址数据数据page计算机学院82022-8-9两种指令系统:两种指令系统:CISCCISC和和RISCRISCCISCCISC:复杂指令集(:复杂指令集(Complex Instruction Set ComputerComplex Instr
5、uction Set Computer)p具有大量的指令和寻址方式具有大量的指令和寻址方式p8/28/2原则:原则:80%80%的程序只使用的程序只使用20%20%的指令的指令p大多数程序只使用少量的指令就能够运行。大多数程序只使用少量的指令就能够运行。RISCRISC:精简指令集(:精简指令集(Reduced Instruction Set Computer)Reduced Instruction Set Computer)p在通道中只包含最有用的指令在通道中只包含最有用的指令p确保数据通道快速执行每一条指令确保数据通道快速执行每一条指令p使使CPUCPU硬件结构设计变得更为简单硬件结构设计
6、变得更为简单 page计算机学院92022-8-92.1 ARM简介RISC结构特性 两种体系结构:CISC(Complex Instruction Set Computer),即“复杂指令系统计算机”PC机系列;RISCRISC(reduced instruction set computer)是精简指令集计算机的缩写,其目标是设计出在高时钟频率下单周期执设计出在高时钟频率下单周期执行,简单而有效的指令集行,简单而有效的指令集。ARM内核采用RISC体系结构,因此具有RISC的结构特点:具有大量的通用寄存器;具有大量的通用寄存器;独特的装载独特的装载/保存(保存(load-storeload
7、-store)结构;)结构;简单的寻址模式;简单的寻址模式;统一和固定长度的指令格式。统一和固定长度的指令格式。page计算机学院102022-8-9ARMARM体系结构还有以下特点:体系结构还有以下特点:每条数据处理指令可同时包含算术逻辑单元(ALU)的运算 和移位处理,实现ALU和移位器的最大利用;使用地址自增和自减地址自增和自减的寻址方式优化程序循环;装载装载/保存保存指令对数据的批量传输,数据吞吐量大;多数指令的依条件执行,实现最快速的代码执行。n体系结构体系结构(architecture):包括一组部件以及部件之间的联系。规定处理器的功能性行为,是处理器设计的规范。2.1 ARM简介
8、体系结构page计算机学院112022-8-9n常用常用ARMARM处理器系列处理器系列 ARM公司开发了很多系列的ARM处理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已经很罕见了。当前应用比较多的ARM处理器核系列有:ARM7ARM9ARM10EXscaleARM11CortexARM9E本课程主要介绍本课程主要介绍ARM7ARM7系列。系列。2.1 ARM简介page计算机学院122022-8-9ARMARM内核分类与系列内核分类与系列1994-2004年发布的年发布的ARM内核内核page计算机学院132022-8-9处理器内核处理器内核 内核分类内核分类ARM7 A
9、RM7DMI(-S)ARM720T ARM7EJ-SARM9 ARM920T ARM922TARM9E ARM926EJ-S ARM946E-S ARM966E-S ARM968E-SARM10E ARM1020E ARM1022E ARM1026EJ-S处理器内核处理器内核内核分类内核分类ARM11 ARM1136J(F)-S ARM1156T2(F)-S ARM1176JZ(F)-SSecurCore SC100 SC110 SC200 SC210Strong ARMXscale2.1 ARM简介分类分类page计算机学院142022-8-9nCortexTM-M3处理器简介(针对低端市场
10、)处理器简介(针对低端市场)该处理器是首款基于ARMv7-M架构的处理器,采用了纯Thumb2指令的执行方式,具有极高的运算能力和中断相应能力。Cortex-M3主要应用于汽车车身系统,工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域。nCortexTM-R4处理器简介处理器简介 该处理器是首款基于ARMv7架构的高级嵌入式处理器,其主要目标为产量巨大的高级嵌入式应用系统,如硬盘,喷墨式打印机,以及汽车安全系统等等。2.1 ARM简介page计算机学院152022-8-9nCortexTM-R4F处理器简介处理器简介 该处理器在CortexTM-R4处理器的基础上加入了代码错误校正(E
11、CC)技术,浮点运算单元(FPU)以及DMA综合配置的能力,增强了处理器在存储器保护单元、缓存、紧密耦合存储器、DMA访问以及调试方面的能力。nCortexTM-A8处理器简介处理器简介 该处理器是ARM公司所开发的基于基于ARMv7ARMv7架构架构的首款应用级处理器,其特色是运用了可增加代码密度和加强性能的技术、可支持多媒体以及信号处理能力的NEONTM技术、以及能够支持Java和其他文字代码语言的提前和即时编译的JazelleRTC技术。众多先进的技术使其适用于家电以及电子行业等各种高端的应用领域。2.1 ARM简介page计算机学院162022-8-9nARM7系列简介系列简介 该系列
12、包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle(Java加速器)的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。该系列包括ARM9TDMI、ARM920T和带有高速缓存处理器宏单元的ARM940T。除了兼容ARM7系列,而且能够更加灵活的设计。ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。nARM9系列简介系列简介
13、2.1 ARM简介page计算机学院172022-8-9 该系列为含有DSP指令集的综合处理器,包括ARM926EJ-S、带有高速缓存处理器宏单元的ARM966E-S/ARM946E-S。其内核在ARM7处理器内核的基础上使用了Jazelle增强技术,该技术支持一种新的Java操作状态,允许在硬件中执行Java字节码。ARM9E系列主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。nARM9E系列简介系列简介2.1 ARM简介page计算机学院182022-8-9nARM10E系列简介系列简介 该系列包括ARM1020E和ARM1020E处理器核,其核心在于使
14、用向量浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能。可以用于视频游戏机和高性能打印机等场合。nXscale简介简介 Intel Xscale微控制器则提供全性能、高性价比、低功耗的解决方案,支持16位Thumb指令并集成数字信号处理(DSP)指令。主要应用于手提式通讯和消费电子类设备。2.1 ARM简介page计算机学院192022-8-91.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.AR
15、M体系的存储系统10 嵌入式系统体系结构设计page计算机学院202022-8-92.2 ARM7TDMIn简介简介 ARM7TDMI是基于ARM体系结构V4版本的低端ARM核。其弥补了ARM6很难在低于5V电压下稳定工作的不足,还增加了后缀所对应的功能:注意:“ARM核”并非芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能构成现实的芯片。ARM7TDMI-S支持高密度16位的Thumb指令集;支持片上调试;支持64位乘法;支持EmbededICE观察硬件;ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致;
16、page计算机学院212022-8-9各后缀的含义各后缀的含义标志含义说明T支持Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6TD片上调试M支持长乘法32位乘32位得到64位,32位的乘加得到64位IEmbedded ICEEDSP指令增加了DSP算法处理器指令:16位乘加指令,饱和的带符号数的加减法,双字数据操作,cache预取指令JJava加速器Jazelle提高java代码的运行速度S可综合提供VHDL或Verilog语言设计文件page计算机学院222022-8-9n存储器的字与半字存储器的字与半字p 从偶数地址开始的
17、连续2个字节构成一个半字;p 以能被4整除的地址开始的连续4个字节构成一个字;p ARM指令的长度刚好是一个字,p Thumb指令的长度刚好是一个半字。2.2 ARM7TDMIpage计算机学院232022-8-92.2 ARM7TDMI 如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字对齐;如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。方式方式半字对齐半字对齐字对齐字对齐地址地址0 x40020 x40020 x40040 x40040 x40040 x40040 x40080 x4008特征特征Bit0=0Bit0=0其他位为任
18、意值其他位为任意值Bit1=0,Bit0=0Bit1=0,Bit0=0其他位为任意值其他位为任意值n存储器的存储方式存储器的存储方式page计算机学院242022-8-92.2 ARM7TDMIn三级流水线三级流水线 ARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。ARM7TDMI的流水线分3级,分别为:取指译码执行取指译码执行处理指令并将结果写回寄存器识别将要被执行的指令从寄存器装载一条指令 正常操作过程中,在执行一条指令的同时对下一条(第二条)指令进行译码,并将第三条指令从存储器中取出。在A
19、RM状态下,流水线上各指令的地址为:在Thumb状态下,流水线上各指令的地址为:PCPC-4PC-8PCPC-2PC-4page计算机学院252022-8-9n三级流水线结构的指令执行顺序三级流水线结构的指令执行顺序PC指令1指令2指令3指令4程序存储器PC-4PC-8PC+4周期1周期2周期3周期4周期5周期6取指 译码 执行取指 译码 执行取指 译码 执行取指 译码 执行周期周期2周期周期1周期周期3周期周期4 在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。1 在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。2 在第3个周期,PC指向指
20、令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。3 在第4个周期,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理。4处理器执行一条指令的三个阶段2.2 ARM7TDMIpage计算机学院262022-8-9 执行ADD PC,PC,#4指令后,PC的值为多少?n思考题思考题ADD PC,PC,#40 x40000 x40040 x40080 x400C地址指令PC取指取指译码译码执行执行PCPC-4PC-8ARM7的3级流水线ADD 程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或“正在译码”的指令。一般来说,
21、人们习惯性约定将“正在执行”的指令作为参考点,则:PC值当前程序执行位置8 注:ARM状态时,每条指令为4字节长。PC指向0 x4000地址,取指ADD指令。PC指向0 x4004地址,译码ADD指令。PC指向0 x4008地址,执行ADD指令,所以指令执行的结果为:PC=PC+40 x400840 x400C。2.2 ARM7TDMIpage计算机学院272022-8-91.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统
22、10 嵌入式系统体系结构设计page计算机学院282022-8-9CPU扫描链1扫描链1数据总线1扫描链2协处理器信号接口EmbeddedICE-RTTAP 控制器EmbeddedICE-RT宏单元DBGTCKENDBGTMSDBGnTRSTDBGTDIDBGTDORDATA31:0WDATA31:0ADDR31:0TRANS1:0PROT1:0SIZE1:0WRITELOCKDBGRNG(0)DBGRNG(1)DBGEXT(1)DBGEXT(0)2.3 ARM模块框图CPU协处理接口信号EmbedICE硬件仿真功能模块片上调试系统读写总线page计算机学院292022-8-92.3 ARM内
23、核框图地址寄存器寄存器组31*32位寄存器(6个状态寄存器)地址增加器乘法器桶形移位器32位ALU写数据寄存器指令管线读数据寄存器Thumb指令译码器指令译码和控制逻辑ADDR31:0CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE1:0PROT1:0TRANS1:0DBG输出DBG输入CP控制CP握手WDATA31:0RDATA31:0扫描调试控制page计算机学院302022-8-92.3 ARM功能框图ARM7TDMI-S处理器LOCKCLKCLKENnIRQnFIQnRESETCFGBIGENDDBGRQDMOREDBGINSTRVAIL
24、DDBGBREAKDBGACKDBGnEXECDBGEXT1DBGEXT0DBGENDBGCOMMTXDBGCOMMRXDBGRNG0DBGRNG1DBGTCKENDBGTMSDBGTDIDBGnTRSTDBGTDODBGnTDOENADDR31:0WDATA31:0RDATA31:0ABORTWRITESIZE1:0PROT1:0TRANS1:0CPnTRANSCPnOPCCPnMREQCPSEQCPTBITCPnICPACPB同步的扫描调试访问接口存储器接口存储器管理接口协处理器接口时钟中断总线控制仲裁调试page计算机学院312022-8-91.ARM简介2.ARM7TDMI3.ARM的
25、模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统10 嵌入式系统体系结构设计page计算机学院322022-8-92.4 ARM处理器状态n处理器状态处理器状态 ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处理器的状态:ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;Thumb状态:16位,处理器执行半字方式的Thumb指令。注意:注意:两个状态之间的切换并不影响处理器模式 或寄存器内容。pa
26、ge计算机学院332022-8-9q THUMB指令是ARM指令的子集ARMARM微处理器的工作状态微处理器的工作状态:ARMARM与与THUMBTHUMBq 可以相互调用,只要遵循一定的调用规则q Thumb指令与ARM指令的时间效率和空间效率关系为:存储空间约为ARM代码的6070 指令数比ARM代码多约3040 存储器为32位时ARM代码比Thumb代码快约40 存储器为16位时Thumb比ARM代码快约4050 使用Thumb代码,存储器的功耗会降低约30page计算机学院342022-8-92.4 ARM处理器状态n状态切换的一个例子地址最低位为0,表示切换到ARM状态 使用BX指令
27、将ARM内核的操作状态在ARM状态和Thumb状态之间进行切换。ARM指令集Thumb指令集CODE32LDRR0,=Lable+1BX R0CODE16Lable MOV R1,#12CODE16LDR R0,=LableBX R0CODE32LableMOV R1,#10地址最低位为1,表示切换到Thumb状态跳转地址标号执行完BX指令,处理器切换到Thumb状态,开始执行Thumb指令程序代码指令集关系 从ARM状态切换到Thumb状态的程序代码如下:从Thumb状态切换到ARM状态的程序代码如下:执行完BX指令,处理器切换到ARM状态,开始执行ARM指令page计算机学院352022-
28、8-91.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统10 嵌入式系统体系结构设计page计算机学院362022-8-92.5 ARM处理器模式n简介ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式
29、。page计算机学院372022-8-9 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。处理器模式处理器模式说明说明备注备注 用户(usr)正常程序运行的工作模式不能直接从用户模式切换到其它模式特权模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权异常模式快中断(fiq)快速中断请求处理只有在FIQ异常响应时,才进入此模式中断(irq)中断请求处理只有在IRQ异常响应时,才进入此模式管理(svc)供操作
30、系统使用的一种保护模式只有在系统复位和软件中断响应时,才进入此模式中止(abt)用于虚拟内存和/或存储器保护在ARM7内核中没有多大用处未定义(und)支持软件仿真的硬件协处理器只有在未定义指令异常响应时,才进入此模式n处理器模式 这两种模式都不能由异常进入,想要进入必须修改CPSR,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。何时进入异常模式,具体规定如下:处理器复位之后进入管理模式,操作系统内核通常处于管理模式;当处理器访问存储器失败时,进入数据访问中
31、止模式;当处理器遇到没有定义或不支持的指令时,进入未定义模式;中断模式与快速中断模式分别对ARM处理器2种不同级别的中断作出响应。这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。page计算机学院382022-8-91.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统10 嵌入式系
32、统体系结构设计page计算机学院392022-8-92.6 ARM内部寄存器n简介 在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。SPSRSPSR:普通模式和系统模式下是看不见SPSR这个寄存器的!只有当进入异常模式的时候,SPSR才会保存当前CPSR的状态,便于退出异常时恢复使用。page计算机学院402022-8-9ARM状态各模式下的寄存器寄存器寄存器类别类别寄存器在汇寄存器在汇编中的名称编中的名称各模式下实际访问的寄存器各模式下实际访问的寄存
33、器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通通用用寄寄存存器器和和程程序序计计数数器器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15
34、(PC)R15状态状态寄存器寄存器CPSRCPSRSPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq 所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。page计算机学院412022-8-9ARM状态各模式下可以访问的寄存器寄存器寄存器类别类别寄存器在汇寄存器在汇编中的名称编中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通通用用寄寄存存器器和和程程序序计计数数器器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6
35、(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态状态寄存器寄存器CPSRCPSRSPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqpage计算机学院422022-8-9未分组的通用寄存器寄存器寄存器类别
36、类别寄存器在汇寄存器在汇编中的名称编中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通通用用寄寄存存器器和和程程序序计计数数器器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14
37、(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15状态状态寄存器寄存器CPSRCPSRSPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq寄存器R0R7为未分组的通用寄存器,它们在任何处理器模式都对应于相同的32位物理寄存器。第一类分组的通用寄存器寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。在发生FIQ中断后,处理器不必为保护寄存器而浪费时间,从而加速了FIQ的处理速度。第二类分组的通用寄存器寄存器R13、R14分别有6个分组的物理寄存器。1个用
38、于用户和系统模式,其余5个分别用于5种异常模式。寄存器R13通常作为堆栈指针(SP),用于保存待使用的寄存器的内容。寄存器R14称为链接寄存器(LR),在结构上有两个特殊功能:当使用BL指令调用子程序时,返回地址将自动存入R14中;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。程序计数器寄存器R15称为程序计数器(PC),它指向正在“取指”的指令。状态寄存器寄存器CPSR为当前程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢
39、复CPSR。page计算机学院432022-8-92.6 ARM内部寄存器n在Thumb状态各模式下实际访问的寄存器 Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);当前程序状态寄存器(Current Program State Register,CPSR)。page计算机学院442022-8-9在Thumb状态各模式下的寄存器寄存器寄存器类别类别寄存器在汇寄存器在汇编中的名称编中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快
40、中断快中断通通用用寄寄存存器器和和程程序序计计数数器器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4,WR)R7SPR13R13_scvR13_abtR13_undR13_irqR13_fiqLRR14R14_svcR14_abtR14_undR13_irqR14_fiqPCR15状态状态寄存器寄存器CPSRCPSRn未分组的通用寄存器n第二类分组的通用寄存器在汇编语言中寄存器R0R7为通用寄存器,对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存器。堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都
41、有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。注意:在发生异常时,处理器自动进入ARM状态。链接寄存器LR对应ARM状态寄存器R14。注意:在发生异常时,处理器自动进入ARM状态。page计算机学院452022-8-9ARM状态ThumbThumb寄存器在寄存器在ARMARM状态寄存器上的映射状态寄存器上的映射R0R1R2R3R4R5R6R7R8R9R10R11R12堆栈指针(R13)连接寄存器(R14)程序计数器(R15)CPSRSPSRR0R1R2R3R4R5R6R7堆栈指针(SP)连接寄存器(LR)程序计数器(PC)CPSRThumb状态 Thumb状态R0R7与ARM状态
42、R0R7相同;1 Thumb状态CPSR(无SPSR)与ARM状态CPSR相同。5 Thumb状态SP映射到ARM状态R13;2 Thumb状态LR映射到ARM状态R14;3 Thumb状态PC映射到ARM状态R15(PC);4低端寄存器高端寄存器 在Thumb状态中,高端寄存器的访问是受到限制的,只有MOV、CMP和ADD指令可以对其访问,可以用于数据的快速暂存。page计算机学院462022-8-9ARMThumbARMResetBXBXARM中断服务程序正常程序事件ARMARMISR1ISR2ISRnn状态切换过程状态切换过程异常发生进入退出 系统复位,自动切换到ARM状态。1 通过BX
43、和BLX指令改变当前处理器模式,使之从ARM状态切换到Thumb状态。2 在Thumb状态下,正常程序执行时产生中断异常。3 处理器进入中断异常,自动的将模式切换到ARM状态。4 异常处理完毕,返回正常程序,此时处理器自动的将模式切换到Thumb状态。5 再次通过BX和BLX指令改变当前处理器模式,使之从Thumb状态切换到ARM状态。6 程序在正常运行的过程中,复位事件产生,导致系统复位。page计算机学院472022-8-91.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.
44、ARM体系的异常、中断及其向量表9.ARM体系的存储系统10 嵌入式系统体系结构设计page计算机学院482022-8-92.7 当前程序状态寄存器当前程序状态寄存器(CPSR)n简介 ARM内核包含1个CPSR和5个仅供异常处理程序使用的SPSR。CPSR反映当前处理器的状态,其包含:4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V);2个中断禁止位(IRQ禁止与FIQ禁止);5个对当前处理器模式进行编码的位(M4:0);1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。page计算机学院492022-8-92.7 当前程序状态寄存器当前程序状态寄存器(CPSR)n程
45、序状态寄存器的格式NZCV IM0M1M2M3M4TF.31 30 29 28 27 8 7 6 5 4 3 2 1 0条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVIM0M1M2M3M4TFpage计算机学院502022-8-92.7 当前程序状态寄存器当前程序状态寄存器(CPSR)n条件代码标志各标志位的含义如下:负标志负标志N N:运算结果的第31位值,记录标志设置操作的结果;零标志零标志Z Z:如果标志设置的操作为0,则置位;进位标志进位标志C C:记录无符号加法溢出,减法无借位,循环移位;溢出标志溢出标志V V:记录标志设置操作的有符号
46、溢出。page计算机学院512022-8-9 警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无法预测的状态。2.7 当前程序状态寄存器当前程序状态寄存器n控制位1、中断禁止控制位I和F;2、处理器状态位T;3、处理器模式位M0M4。当控制位I置位时,IRQ中断被禁止;当控制位F置位时,FIQ中断被禁止。当控制位T置位时,处理器正在Thumb状态下运行;当控制位T清零时,处理器正在ARM状态下运行。M4:0模式模式可见的可见的Thumb状态寄存器状态寄存器可见的可见的ARM状态寄存器状态寄存器10000用户R0R7,SP,LR,PC,CPSRR0R14,PC,CP
47、SR 10001快速中断R0R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiq R0R7,R8_fiqR14_fiq,PC,CPSR,SPSR_fiq 10010中断R0R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiq R0R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq 10011管理R0R7,SP_svc,LR_svc,PC,CPSR,SPSR_svc R0R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc 10111中止R0R7,SP_abt,LR_abt,PC,CPSR,SPSR_abt R0R12,R13
48、_abt,R14_abt,PC,CPSR,SPSR_abt 11011未定义R0R7,SP_und,LR_und,PC,CPSR,SPSR_und R0R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系统R0R7,SP,LR,PC,CPSR R0R14,PC,CPSR 注意:不是所有模式位的组合都定义了有效的处理器模式,如果将非法值写入M4:0中,处理器将进入一个无法恢复的模式。page计算机学院522022-8-92.7 当前程序状态寄存器当前程序状态寄存器n保留位 CPSR中的保留位被保留将来使用。当改变CPSR标志和控制位时,请确认没有改变这些保留位。另
49、外,请确保您的程序不依赖于包含特定值的保留位,因为将来的处理器可能会将这些位设置为1或者0。SPSRSPSR(Saved Program Status RegisterSaved Program Status Register):):普通模式和系统模式下是看不见SPSR这个寄存器的!只有当进入异常模式的时候,SPSR就会保存当前CPSR的状态,便于退出异常时恢复使用。page计算机学院532022-8-91.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及
50、其向量表9.ARM体系的存储系统10 嵌入式系统体系结构设计page计算机学院542022-8-92.8 ARM体系的异常体系的异常n异常简介 只要正常的程序流被暂时中止,处理器就进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常。page计算机学院552022-8-9n异常入口异常入口/出口汇总出口汇总 下表所示为异常返回地址值以及退出异常处理程序所推荐使用的指令。异常或入口异常或入口返回指令返回指令返回地址返回地址SWIMOVS PC,R14_svcR14未定义的指令MOV