




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统及开发应用第二讲ARM体系结构Outline2、ARM体系结构3、ARM编程模型工作状态CPU工作模式寄存器组织异常内存与IO1、嵌入式微处理器主流的嵌入式微处理器目前主流的嵌入式微处理器系列主要有ARM系列、MIPS系列、PowerPC系列、Super H系列和X86系列等。属于这些系列的嵌入式微处理器产品很多,有上千种以上。Units (millions)Source: Andrew Allison, Inside The New Computer Industry, January 2001Embedded RISC Processor Shipments32位浪潮的到来Sou
2、rce: Semico Research Corp. and SIA/WSTSTotal MCU, by Sub-Category (excl. DSP) Total Embedded Control Market Shipments by Type 总共约26亿个32位处理器付运,占总数96亿的27%2005年ARM为17亿个,约占32位总量的70%左右X86系列主要由AMD,Intel,NS,ST等公司提供,如:Am186/88、Elan520、嵌入式K6,386EX、STPC等。 主要应用在工业控制、通信等领域。 国内由于对X86体系比较熟悉,得到广泛应用,特别是嵌入式PC的应用非常广泛
3、。MPC/PPC系列Motorola推出的MPC系列,如MPC8XX。IBM推出PPC系列,如PPC4XX。主要应用在通信、消费电子及工业控制、军用装备等领域。MPC/PPC系列IBM PowerPC 集成10/100Mbps以太网控制器、串行和并行端口、内存控制器以及其它外设的高性能嵌入式处理器。Motorola MPC 高度综合的SOC设备,它结合了PPC微处理器核心的功能、通信处理器和单硅成分内的显示控制器。这个设备可以在大量的电子应用中使用,特别是在低能源、便携式、图象捕捉和个人通信设备。技术0.25微米CMoS SA-12E282 Dhrystone 2.1 MIPS 200MHz3
4、75 Dhrystone 2.1 MIPS 266MHz200/100/66/50 MHz266/133/66/66 MHz晶体数量480万电源消耗1.1瓦信号I/O300温度范围-40到80度电源供应2.5V (逻辑电路),3.3V (I/O),支持5V I/Os456-Ball,Enhanced PBGA (35mm x 35mm)性能频率(CPU /SDRAM /PCI /EBC)封装PowerPC 405 GP技术规格*Dhrystone是一个综合性的基准测试程序,它是为了测试编译器和CPU处理整数指令和控制功能的有效性,人为地选择一些“典型指令综合起来形成的测试程序。 ARM系列AR
5、M(Advanced RISC Machine)公司是一家专门从事芯片IP设计与授权业务的英国公司,其产品有ARM内核以及各类外围接口。ARM内核是一种32位RISC微处理器,具有功耗低、性价比高、代码密度高等三大特色。目前,90%的移动电话、大量的游戏机、手持PC和机顶盒等都已采用了ARM处理器,许多一流的芯片厂商都是ARM的授权用户(Licensee),如Intel、Samsung、TI、Motorola、ST等,ARM已成为业界公认的嵌入式微处理器标准。ARM FamilyARM7 FamilyARM9 FamilyARM10 FamilyARM11 Family150DMIPS300
6、DMIPS500 DMIPS1000 DMIPSARM Cortex FamilyARM720TARM1136J ARM1176JZARM1026EARM920T/ARM922T ARM926EJCortex AApplication ProcessorARM7TDMIARM1156T2ARM1026EARM946ECortex REmbedded RT ControllerARM7TDMIARM966E ARM968ECortex MMicro-controllerARM Architecture当前的主流ARM处理器ARM7世界上最为广泛使用的 CPU 之一100MHzARM9100-30
7、0MHz1.7B ARM Powred shipment in year of 2005, 31% is ARM9 based.ARM11 芯片已经面世ARM11300-700+ MHzSIMD 指令扩展支持更丰富的多媒体应用40家授权芯片公司,一些已开始量产FOMA N902iFirst ARM11 based phoneOMAP2420i.MX31/i.MX31L目前最快的嵌入式处理器最快的处理器提供超过2000 DMIPS 的性能运行于 1GHz 频率 (90nm or 65nm 制造工艺)功耗小于 300mWARM Cortex A8 Application ProcessorCort
8、ex-M3 实现 $1 ARM芯片ARM Cortex ArchitectureThumb-2 ISA3 Stage Pipeline1.22 DMIPS/MHz 30% over ARM7TDMI33K gates 30% smaller than ARM7TDMILuminary Micro的Stellaris系列MCU产品售价仅1美元ARM Cortex-M3 微控制器内核,专门针对MCU应用领域而设计,突出低成本、低功耗和高效率。领先嵌入式处理器技术发展讨论多处理器技术单处理器技术的性能提升终有一天会遭遇瓶颈对嵌入式系统而言,尤其要考虑付出的代价把任务进行并行分解是理想的选择ARM M
9、Pcore可以集成1-4个ARM11处理器关键是要提供给软件开发者一个友好的编程界面64位处理器?哪儿是系统性能瓶颈?是需要64位地址还是64位数据?嵌入式系统比PC有更好的条件来解决系统性能和带宽问题PC系统在主板上,扩展系统带宽需要扩大每个组件的接口带宽SoC只需扩展片内总线,非常容易实现AMBA支持8-1024位总线宽度许多SoC设计以及ARM处理器内部已经使用64位数据总线如何选择嵌入式微处理器微处理器内核的选择有无MMUOS的考虑系统的工作频率芯片存储器的容量片内外设的考虑实际应用的要求接口时序Outline2、ARM体系结构3、ARM编程模型工作状态CPU工作模式寄存器组织异常内存
10、与IO1、嵌入式微处理器图2.1.1 ARM体系结构方框图ARM处理器的分类结构体系版本(Architecture)ARM v4TARM v5TE ARM v6ARM Cortex (v7)Processor FamilyARM7 ARM9ARM10ARM11ARM Cortex按应用特征分类应用处理器 Application Processor实时控制处理器 Real-time Controller微控制器 Micro-controller特征:MMU, Cache 最快频率、最高性能、合理功耗 特征:MPU, Cache 实时响应、合理性能、较低功耗 特征:no sub-memory sy
11、stem 一般性能、最低成本、极低功耗 ARM体系结构的命名规则ARMXyzTDMIEJF-Sx系列y存储管理/保护单元zCacheTThumb16位译码器DJTAG调试器M快速乘法器I嵌入式跟踪宏单元E增强DSP指令JJazelleF向量浮点单元S可综合版本,以源代码形式提供的ARM核v4 v5TESA110v4TARM720TARM7TDMI-SARM920TARM940TARM922TARM966E-SARM946E-SARM1020Ev5TEJ / Jazellev6 / JazelleARM7EJ-SARM926EJ-SARM1026EJ-SARM11 Micro-Architect
12、ure Roadmap of ARM V4/V5/V6系列相应产品性能特点ARM7系列ARM7TDMI,ARM7TDMI-S,ARM720T,ARM7EJ三级流水性能:0.9MIPS/MHz, 可达到130MIPs (Dhrystone2.1) ARM9系列ARM920T, ARM922T 五级流水,性能:1.1MIPS/MHz,可达300 MIPS (Dhrystone 2.1),单32-bit AMBA bus接口,支持MMU ARM9E系列ARM926EJ-S, RM946E-S, ARM966E-S, ARM968E-S,ARM996HS 五级流水,支持DSP指令。性能:1.1MIPS
13、/MHz,可达300 MIPS (Dhrystone 2.1),高性能AHB, 软核(soft IP) ARM10系列ARM1020E, ARM1022EARM1026EJ-S 6级流水支持分支预测(branch prediction),支持DSP指令。性能:1.35 MIPS/MHz,可达430+ Dhrystone 2.1 MIPS,可选支持高性能浮点操作,双64位总线接口,内部64位数据通路 系列相应产品性能特点ARM11 系列ARM11MPCore,ARM1136J(F)-S, ARM1156T2(F)-S,ARM1176JZ(F)-S 8级流水线(9级ARM1156T2(F)-S),
14、独立的load-store和arithmetic流水线,支持分支预测和返回栈(Return Stack)。强大的ARMv6 指令集,支持DSP, SIMD (Single Instruction Multiple Data) 扩展,支持ARM TrustZone 、Thumb-2核心技术。740 Dhrystone 2.1 MIPS,低功耗0.6mW/MHz (0.13m, 1.2V) Cortex系列Cortex-A8, Cortex-M3,Cortex-R4 Cortex-A系列: 面向用于复杂OS和应用的应用处理器(applications processors),支持ARM, Thum
15、b and Thumb-2指令集。Cortex-R系列:面向嵌入式实时领域的嵌入式处理器,支持ARM, Thumb,和Thumb-2 指令集。Cortex-M系列:面向深嵌入式价格敏感的嵌入式处理器, 只支持Thumb-2指令集 SecurCore 系列SecurCore SC100,SecurCore SC200 用于Smart Card和Secure IC的32-bit解决方案。支持ARM和Thumb指令集,软核。具有安全特征和低成本安全存储保护单元 ARM V4ARMV4是目前支持的最老的架构,是基于32-bit地址空间的32-bit指令集。ARMv4除了支持ARMv3的指令外还扩展了:
16、支持halfword的存取支持byte和halfword的符号扩展读支持Thumb指令提供Thumb和Normal状态的转换指令进一步的明确了会引起Undefined异常的指令 对以前的26bits体系结构的CPU不再兼容 ARMv4TARMv4T增加了16-bit Thumb指令集,这样使得编译器能产生紧凑代码(相对于32-bit代码,内存能节省到35%以上)并保持32-bit系统的好处。Thumb在处理器中仍然要扩展为标准的32位ARM指令来运行。用户采用16位Thumb指令集最大的好处就是可以获得更高的代码密度和降低功耗。 ARM V5TE1999年推出ARMv5TE其增强了Thumb体
17、系,增强的Thumb体系增加了一个新的指令同时改进了Thumb/ARM相互作用、编译能力和混合及匹配ARM与Thumb例程,以更好地平衡代码空间和性能并在ARM ISA上扩展了增强的DSP指令集: 增强的DSP指令包括支持饱和算术(saturated arithmetic), 并且针对Audio DSP应用提高了70%性能。E扩展表示在通用的CPU上提供DSP能力。 ARMv5TEJ2000年推出ARMv5TEJ,增加了Jazelle扩展以支持Java加速技术。Jazelle技术比仅仅基于软件的JVM性能提高近8倍的性能减少了80的功耗。 ARMv62001年推出ARMv6,它在许多方面做了改
18、进如内存系统、异常处理和较好地支持多处理器。SIMD扩展使得广大的软件应用如Video和Audio codec的性能提高了4倍。Thumb-2和TrustZone 技术也用于ARMv6中。ARMv6第一个实现是2002年春推出的ARM1136J(F)-STM处理器,2003年又推出了ARM1156T2(F)-S和ARM1176JZ(F)-S处理器。ARMv7ARMv7定义了3种不同的处理器配置(processor profiles): Profile A是面向复杂、基于虚拟内存的OS和应用的Profile R是针对实时系统的Profile M是针对低成本应用的优化的微控制器的。所有ARMv7
19、profiles实现Thumb-2技术,同时还包括了NEON技术的扩展提高DSP和多媒体处理吞吐量400,并提供浮点支持以满足下一代3D图形和游戏以及传统嵌入式控制应用的需要。ARM7TDMIThumb 架构扩展, 提供两个独立的指令集:ARM 指令,均为 32位Thumb指令,均为 16位两种运行状态,用来选择哪个指令集被执行内核具有Debug扩展结构增强乘法器 (32x8) 支持64位结果EmbeddedICE 逻辑3 级流水线冯诺依曼架构CPI(Cycle Per Instruction) 约为1.9图2.2.3 ARM720T内核结构 图2.2.1 ARM7TDMI内核结构 ARM7T
20、DMI指令流水线为增加处理器指令流的速度,ARM7 系列使用3级流水线。允许多个操作同时处理,而非顺序执行。 PC指向正被取指的指令,而非正在执行的指令。FetchDecodeExecute从存储器中读取指令解码指令中用到的寄存器寄存器读(从寄存器Bank)移位及ALU操作寄存器写(到寄存器Bank )PCPCPC - 4PC-2PC - 8PC - 4ARMThumbARM7TDMI指令流水线 操作周期 1 2 3 45 6 ADD SUB MOV AND ORR EOR CMP RSBFetchDecode。FetchExecuteDecodeFetchExecuteDecodeFetch
21、ExecuteDecodeFetchFetchExecuteDecodeExecuteDecodeFetchExecuteDecodeFetch最佳流水线该例中用6个时钟周期执行了6条指令所有的操作都在寄存器中(单周期执行)指令周期数 (CPI) = 1ARM9TDMIHarvard架构增加了可用的存储器宽度指令存储器接口数据存储器接口可以实现对指令和数据存储器的同时访问5 级流水线实现了以下改进:改进 CPI 到 1.5提高了最大时钟频率ARM9TDMIInstructionFetch Shift + ALUMemoryAccessRegWriteRegReadRegDecodeFETCHD
22、ECODEEXECUTEMEMORYWRITEARM9TDMIARM or ThumbInst DecodeReg SelectRegReadShiftALURegWriteThumbARMdecompressARM decodeInstructionFetchFETCHDECODEEXECUTEARM7TDMI流水线ARM9TDMIARM9TDMID CacheI CacheMMUGLUE外部存储器ARM940T2x 4K caches MPU写缓冲ARM9xxTARM920T2x 16K caches MMU支持虚拟地址和内存保护 写缓冲带Cache的ARM9TDMI 图2.2.4 ARM
23、920T内核结构ARM9E-S 系列概述ARM9E 基于 ARM9TDMI 内核,有以下扩展和增强单周期 32x16 乘法器EmbeddedICE 逻辑 RT改进的 ARM/Thumb 交互操作新的32x16和 16x16 乘法指令新的计数到零指令新的饱和算术指令ARM946E-SARM9E-S 内核指令和数据cache, 大小可选择指令和数据RAM,大小可选择保护单元AHB 总线接口ARM966E-S与 ARM946E-S相似, 但无 cacheARM926EJ-S系列概述Jazelle状态允许直接执行Java 8位码ARM926EJ-SARM9E-S 内核可配置的cache和 TCM内存管
24、理单元双重 32位 AHB 总线接口 (多层)ARM10E 系列概述v5TE架构CPI 1.36 级流水线静态分支预测32kB 指令cache和32kB数据cache支持“Hit under miss”非阻塞的执行单元每周期64 位的 LDM / STM操作EmbeddedICE逻辑 - RT-II支持新的 VFPv1 结构同ARM1020E,除了cache大小为16kB对SUDL(single user design license )有效ARM1020EARM1022EARM9 vs ARM10流水线的对比 Intel StrongARM 概述ARM V4 架构 (无Thumb支持)5级流
25、水线,降低跳转损耗-stage pipeline,reduced branch penalty改进的乘法器(典型地比ARM9TDMI 快2个周期)不支持 Multi-ICE 调试 (JTAG限制在连通性测试)无外部协处理器接口SA-110: 16K 指令和数据 caches, 8 x 16 字节写缓冲.SA-1100/1110:片上外设,存储器控制器更小的 cache 容量PID 寄存器(作控制用)指令断点,通过 CP15Intel XScale 概述V5TE 兼容架构7-8级流水线带统计分支预测32k的数据和指令 Cache, 外加2k的数据Minicache8口写缓冲,4口填充和追加缓冲完
26、整的32位协处理器接口调试和性能监控逻辑(通过CP14 )乘-加模块(作为CP0 )可配置的内核时钟速度100-733MHz ,来自 33-66MHz 输入时钟异步输入总线时钟可到100 MHz (最大总线内核时钟的1/3 )Outline2、ARM体系结构3、ARM编程模型工作状态CPU工作模式寄存器组织异常内存与IO1、嵌入式微处理器ARM微处理器:编程模型处理器工作状态CPU工作模式寄存器组织异常内存与IOARM微处理器:处理器工作状态(PROCESSOR OPERATING STATES)处理器有两种工作状态:ARM:32位,执行字对准的ARM指令Thumb:16位,执行半字对准的Th
27、umb指令ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容ARM微处理器:处理器工作状态进入Thumb状态:执行BX指令,并设置操作数寄存器的状态(位0)为1。在Thumb状态进入异常(IRQ, FIQ, UNDEF, ABORT,SWI etc.),当异常处理返回时自动转换到Thumb状态进入ARM状态:执行BX指令,并设置操作数寄存器的状态(位0)为0。进入异常时,将PC放入异常模式链接寄存器中,从异常向量地址开始执行也可进入ARM状态ARM微处理器:处理器工作状态Thumb-2:增加了混合模式能力定义了一个新的32-bit指令集能在传统的16-bit指令运行的Thumb状
28、态下同时运行。这样能在一个系统中更好地平衡ARM和Thumb代码的能力,使系统能更好地利用ARM级别的性能和Thumb代码的密度的优势 ARM微处理器:存储器格式ARM 的寻址空间是线性的地址空间,为232=4G Bytes 0 to 3 存储第一个word, bytes 4 to 7存储第二个wordARM支持大端(Big-endian)和小端(Little-endian)的内存数据方式,可以通过硬件的方式设置(没有提供软件的方式)端模式ARM微处理器:存储器格式大端的数据存放格式低地址高地址地址A地址A+1地址A+2地址A+3最高有效字节的地址就是该word的地址最高有效字节位于最低地址w
29、ord a=0 x f6 73 4b cdf6734bcdARM微处理器:存储器格式小端的数据格式 低地址高地址地址A地址A+1地址A+2地址A+3最低有效字节的地址就是该word的地址最低有效字节位于最低地址word a=0 x f6 73 4b cdf6734bcdARM微处理器:存储器格式大端: 小端:0 xb32045000 xddddddd00 xb32045000 xddddddd0 f6 f6 73 73 4b 4b cd cd0000dada 实例变量A:word A=0 x f6 73 4b cd,在内存中的起始地址为0 x b3 20 45 00变量B:half word
30、B=218,在内存中的起始地址为0 x dd dd dd d0问题:half word B=218与word C=218在内存中的存放方式有何不同?请分大端和小端两种情况说明。ARM微处理器:编程模型数据类型的约定 字节型数据(Byte):数据宽度为8bits 半字数据类型(HalfWord):数据宽度为16bits,存取式必须以2字节对齐的方式 字数据类型(Word):数据宽度为32bits,存取式必须以4字节对齐的方式 ARM微处理器:CPU模式(processor mode)7种CPU模式 CPU模式的转变:软件控制异常外部中断ARM微处理器:CPU模式User模式程序不能访问有些受保护
31、的资源只能通过异常的形式来改变CPU的当前运行模式特权模式可以存取系统中的任何资源System模式与User模式的运行环境一样但是它可以不受任何限制的访问任何资源该模式主要用于运行系统中的一些特权任务FIQ模式IRQ模式Supervisor模式Abort模式Undefined模式异常模式:主要是在外部中断或者程序执行非法操作时会触发ARM微处理器:寄存器组织ARM处理器有37个寄存器 31个通用寄存器:程序计数器、堆栈及其他通用寄存器 6个状态寄存器这些寄存器不能同时看到,同时只有17个不同的处理器状态和工作模式确定哪些寄存器是对编程者是可见的ARM微处理器: ARM State寄存器ARM微
32、处理器: Thumb State寄存器R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆栈指针(R13) 连接寄存器(R14) 程序计数器(R15) 低寄存器高寄存器ARM State 与Thumb State寄存器关系寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq *R9(SB,v6)R9R9_fiq *R10(SL,v7)R10R10_fi
33、q *R11(FP,v8)R11R11_fiq *R12(IP)R12R12_fiq *R13(SP)R13R13_svc*R13_abt *R13_und *R13_irq *R13_fiq *R14(LR)R14R14_svc *R14_abt *R14_und *R14_irq *R14_fiq *R15(PC)R15状态寄存器R16(CPSR)CPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM状态各模式下的寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R
34、0R1(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_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_
35、fiqARM状态各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R
36、1(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_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fi
37、q无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_ir
38、qR12R11R10R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断ARM状态各模式下可以访问的寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_fiqR
39、11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1
40、R0 在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svc
41、R13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器
42、都对应于相同的32位物理寄存器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_undR1
43、4_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄
44、存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无S
45、PSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_
46、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状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器 寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_f
47、iqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_ab
48、tR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆栈指针寄存器R13(SP) 寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2
49、)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_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq链接寄
50、存器R14(LR) R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_fiq
51、R12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序计数器R15(PC) 寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。ARM微处理器:通用寄存器R1
52、5用作程序计数器(PC),可以被读写ARM state: bits 1:0为0,bits31:2即为 PC. THUMB state:bit 0为0,bits31:1即为 PCARM微处理器:程序状态寄存器CPSR(当前程序状态寄存器)在所有的模式下都是可以读写的,它主要包含:条件标志中断使能标志当前处理器的模式其它的一些状态和控制标志ARM微处理器:程序状态寄存器置0表示执行32bit的ARM指令置1表示执行16bit的Thumb指令 NegativeZeroCarryOverflowIRQ中断的响应:置1:禁止响应置0:允许响应FIQ中断的响应:置1:禁止响应置0:允许响应条件标志模式控制
53、位ARM/Thumb控制标志中断标志ARM微处理器:程序状态寄存器模式控制位M0-M4ARM微处理器:异常异常是由内部或者外部原因引起的,当异常发生时CPU将暂停执行当前指令自动到指定的向量地址读取指令并且执行。在X86上,当有异常发生时CPU是到指定的向量地址读取要执行的程序的地址而ARM是到向量地址的地方读取指令,也就是ARM的向量地址处存放的是一条指令(一般是一条跳转指令) ARM微处理器:异常ARM CPU将引起异常的类型分为7种ARM微处理器:异常当异常出现时,异常模式分组的R14和SPSR用于保存状态,即: R14_=return link SPSR_=CPSR CPSR4:0=e
54、xception mode number CPSR5=0 /*在ARM状态执行*/ if=Reset or FIQ then CPSR6=1 /*禁止快速中断*/ CPSR7=1 /*禁止正常中断*/PC=exception vector address当处理异常返回时,将SPSR传送到CPSR,R14传送到PC异常的优先级异常向量Vector Table异常处理当异常产生时, ARM core:拷贝 CPSR 到 SPSR_设置适当的 CPSR 位: 改变处理器状态进入 ARM 态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断 (如需要)保存返回地址到 LR_设置 PC 为相应的
55、异常向量返回时, 异常处理需要:从 SPSR_恢复CPSR从LR_恢复PC Note:这些操作只能在 ARM 态执行.Vector table can be at 0 xFFFF0000 on ARM720T and on ARM9/10 family devicesFIQIRQ(Reserved)Data AbortPrefetch AbortSoftware InterruptUndefined InstructionReset0 x1C0 x180 x140 x100 x0C0 x080 x040 x0084进入异常的操作R14_=Return LinkSPSR_=CPSRCPSR4:0
56、=Exception Mode NumberCPSR5=0 ;当运行于ARM状态时IF=Reset or FIQ then ;当响应FIQ异常时,禁止新的FIQ异常 CPSR6=1; CPSR7=1;PC=Exception Vector Address当异常结束时,异常处理程序必须:1.将LR( R14 )中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断禁止标志。注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。退出异常例子: 用户模式到 FIQ模式*spsr_fiqcpsrr7r4r5r2r1r0r3r6r15 (pc)r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiqr14 (lr)r13 (sp)r12r10r11r9r8用户模式 CPSR 复制到 FIQ 模式 SPSRcpsrr15 (pc)r14 (lr)r13 (sp)r12r10r11r9r8r7r4r5r2r1r0r3r6r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiq返回一个从用户模式计算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省杭州八中2025届高三下学期期末学习能力诊断数学试题含解析
- 吉林省白城市洮南十中2024-2025学年高三第五次教学质量检测试题考试数学试题含解析
- 新疆维吾尔自治区2025年初三下学期第四次月考英语试题含答案
- 统编版二年级语文下册期末测试卷(D)(含答案)
- 部编版2024-2025学年五下语文期中模拟卷(1-4)(有答案)
- 收割机操作员劳务合同
- 工程承包合同税务处理框架协议
- 合同履行担保制度探索与实践
- 中医内科学与中医临证方法课件
- 3《这是我们的校园》公开课一等奖创新教学设计(表格式)-1
- 动物医学毕业论文
- 2023年河南测绘职业学院单招职业适应性测试笔试模拟试题及答案解析
- 甘肃省甘南藏族自治州各县区乡镇行政村村庄村名明细及行政区划代码
- (完整word版)高考英语作文练习纸(标准答题卡)
- 二年级科学下册教案 -《3 可伸缩的橡皮筋》 冀人版
- 分析化学第三章酸碱滴定法课件
- 结核病防治知识培训试题带答案
- 心血管疾病医疗质量控制指标(2020年版)
- 培训(微机保护基础)课件
- 《生物冶金》课程教学大纲
- DB22-T 5118-2022 建筑工程资料管理标准
评论
0/150
提交评论