ARM7体系结构概述2583.pptx
《ARM7体系结构概述2583.pptx》由会员分享,可在线阅读,更多相关《ARM7体系结构概述2583.pptx(93页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、周立功单片机2.1 ARM简介ARM体系结构 ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典RISC的特点:寄存器:具有更多的通用寄存器;装载/保存结构:处理器操作只针对寄存器的内容,而不直接对存储器进行操作;流水线:将指令处理过程分为多步,提高效率;指令长度:统一长度的指令域,简化指令译码。周立功单片机2.1 ARM简介ARM体系结构ARM体系结构的特点,使其非常适用于嵌入式系统:低功耗:对于电池供电的设备,功耗无疑是重点;高代码密度:小的代码量可以减小存储成本;小面积:芯片内可以集成更多的外设,使系统硬件更紧凑简洁;方便的硬件调试技术:降低
2、开发难度和成本。周立功单片机2.1 ARM简介各ARM体系结构版本 ARM体系结构从最初开发到现在有了巨大的改进,并仍在完善和发展。为了清楚的表达每个ARM应用实例所使用的指令集,ARM公司定义了6种主要的ARM指令集体系结构版本,以版本号V1V6表示。其中V1V3已经停止使用,常用的ARM7为V4版本。周立功单片机2.1 ARM简介各ARM体系结构版本V4 不在为了与以前的版本兼容而支持26位体系结构,并明确了哪些指令会引起未定义指令异常发生,它相对V3版本作了以下的改进:增加半字加载/存储指令;字节和半字的加载和符号扩展指令;具有可以转换到具有可以转换到ThumbThumb状态的指令状态的
3、指令;增加使用用户模式寄存器的系统模式系统模式。周立功单片机2.1 ARM简介各ARM体系结构版本V5 在V4版本的基础上,对现在指令的定义进行了必要的修正,对V4版本的体系结构进行了扩展并并增加了指令,具体如下:改进了ARM/Thumb状态之间的切换效率;允许非T变量和T变量一样,使用相同的代码生成技术;增加计数前导零指令和软件断点指令;对乘法指令如何设置标志作了严格的定义。周立功单片机2.1 ARM简介ARM处理器核简介 ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:ARM7ARM9ARM9EA
4、RM10Cortex-M3XscaleARM11周立功单片机2.1 ARM简介ARM处理器核简介ARM7 该系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。周立功单片机2.1 ARM简介ARM处理器核简介ARM9 该系列包括ARM9TDMI、ARM920T、ARM926和带有高速缓存处
5、理器宏单元的ARM940T。除了兼容ARM7系列,而且能够更加灵活的设计。PHILIPS最近推出的LPC3180就是基于ARM926的微处理器,即将推出的开发套件SmartARM3180支持Linux 2.4、WinCE4.2,还有PC104等工控机系列产品。ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。周立功单片机2.1 ARM简介ARM处理器核简介Cortex-M3 该系列主要针对MCU市场,改进了代码密度,减少了中断延迟,并有更低的功耗,支持Thumb-2指令集。开发套件:Keil RealView(包含ULINK仿真器),支持ARM7、ARM9以及CortexM3,
6、ADS将停止支持CortexM3,预计市场上第一颗基于CortexM3的MCU将于第四季度上市。周立功单片机第2章 目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.中断延迟q11.复位q12.存储器及存储器映射I/O周立功单片机2.2 ARM7TDMI简介 ARM7TDMI支持32位寻址范围,并弥补了ARM6不能在低于5V电源电压下工作的不足。ARM7TDMI的后缀意义为:支持高密度16位的Thumb指令集;支持片上调试;支持64位乘法;支持Embed
7、edICE观察硬件;ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致;ARM7 T D M I-S周立功单片机2.2 ARM7TDMI三级流水线正在执行的指令正在译码的指令正在预取的指令内核流水线 LDR R0,AddInstr STR R0,NextInstr SUB R1,R1,#1 .ADD R1,R1,#1(1)(2)(4)(3)源程序周立功单片机第2章 目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程
8、序状态寄存器q9.异常q10.中断延迟q11.复位q12.存储器及存储器映射I/O周立功单片机2.7 内部寄存器R14寄存器与异常发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。周立功单片机程序计数器R15(PC)寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。周立功单片机2.7 内部寄存器读R15的限制 正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在
9、执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。内核流水线内核流水线 取指取指 译码译码 执行执行MOVMOVADDADD源程序源程序PCPC(R15)(R15)PCPCPC-4PC-4PC-8PC-8周立功单片机MOV R0,PCMOV R0,PC ADDADDSUBSUB2.7 内部寄存器读R15的限制内核流水线内核流水线 取指取指 译码译码 执行执行 SUB SUB ADD ADD MOV MOV程序代码程序代码PC-8PC-4PC地址地址注意:注意:执行一条执行一条PCPC读取指令时,读取指令时,读取的值并不是该行指
10、令的地读取的值并不是该行指令的地址值。址值。周立功单片机 0 x4000 ADD PC,PC,#4 0 x4004 0 x4008 0 x400C 思考与练习?假设CPU正在运行以下的程序,并正在执0 x4000处的指令(它的作用是将PC值加4后写入PC),请问指令执行后请问指令执行后PCPC值是什么?值是什么?正被执行正被译码PC指向指令执行结果PC=PC+4周立功单片机2.7 内部寄存器读R15的限制 当使用STRSTR或STMSTM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于
11、一个确定的芯片,这个值是一个常量。所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。周立功单片机2.7 内部寄存器读R15的限制计算偏移量程序代码:SUBR1,PC,#4;R1=下面STR指令的地址STRPC,R0;保存STR指令地址+偏移量LDRR0,R0;然后重装SUBR0,R0,R1;计算偏移量周立功单片机2.7 内部寄存器写R15的限制 正常操作时,写入R15 的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。周立功单片机2.7 内部寄存器写R15的限制 由于ARM指令以字为边界,因此写入R15的值最低两位通
12、常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0 xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。周立功单片机程序状态寄存器CPSR 寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在因为异常事件而进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。详细描述参看2.8小节。周立功单片机2.7 内部寄存器Thumb状
13、态寄存器 Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);有条件访问程序状态寄存器(CPSR)。周立功单片机Thumb状态各模式下的寄存器CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快
14、中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别注意:括号内为ATPCS中寄存器的命名,可以使用RN汇编伪指令将寄存器定义多个名字。其中ADS1.2的汇编程序直接支持这些名称,但注意a1a4,v1v4必须用小写。周立功单片机Thumb状态下的通用寄存器CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2
15、)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R7为保存数据或地址值的通用寄存器。对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊的用途,并且可用于任何使用通用寄存器的指令。周立功单片机Thumb状态下的堆栈指针寄存器(SP)CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR
16、13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别 堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。注意:在发生异常时,处理器自动进入ARM状态。R13_fiqR13_irqR13_undR13_abtR13_svcR13周立功单片机Thumb状态下的链接寄存器R14(LR)CPSRCPSR状态寄存器R15PCR14
17、_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别 链接寄存器LR对应ARM状态寄存器R14,在结构上有两个特殊功能,详见“ARM状态下的链接寄存器LR”。注意:在发生异常时,处理器自动进入ARM状态。R14_fiqR14_irqR14_undR14_a
18、btR14_svcR14周立功单片机2.7 内部寄存器ARM状态和Thumb状态之间寄存器的关系 Thumb状态寄存器与ARM状态寄存器有如下的关系:Thumb状态R0R7与ARM状态R0R7相同;Thumb状态CPSR与ARM状态CPSR相同;Thumb状态SP映射到ARM状态R13;Thumb状态LR映射到ARM状态R14;Thumb状态PC映射到ARM状态PC(R15)。周立功单片机Thumb状态寄存器在Arm状态寄存器上的映射低寄存器高寄存器 R1 R2 R3 R4 R5 T humb R6 R7(C PSR)R1 R2 R3 R4 R5 A R M R6 R7 R8(C PSR)R9
19、 R10 R11 R12 R0 R0 状态 状态堆栈指针(SP)连接寄存器(LR)程序计数器(PC)当前程序状态寄存器 堆栈指针(R13)连接寄存器(R14)程序计数器(R15)当前程序状态寄存器 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆栈指针(R13)连接寄存器(R14)程序计数器(R15)周立功单片机2.7 内部寄存器在Thumb状态中访问高寄存器 在Thumb状态中,高寄存器(R8R15)不是标准寄存器集的一部分。汇编语言程序员对它们的访问受到限制,但可以将它们用于快速暂存。可以使用MOV、CMP和ADD指令对高寄存器操作,详见第4章。周立功
20、单片机第2章 目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.中断延迟q11.复位q12.存储器及存储器映射I/O周立功单片机2.8 程序状态寄存器简介 ARM7TDMI内核包含1个CPSR和5个供异常处理程序使用的SPSR。CPSR反映了当前处理器的状态,其包含:4个条件代码标志(负(N)、零(Z)、进位(C)和溢出(V));2个中断禁止位,分别控制一种类型的中断;5个对当前处理器模式进行编码的位;1个用于指示当前执行指令(ARM还是Thumb)的位
21、。周立功单片机NZCVIM0M1M2M3M4TF.31 30 29 28 27 26 8 7 6 5 4 3 2 1 02.8 程序状态寄存器简介条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVIM0M1M2M3M4TFCPSR寄存器的格式周立功单片机2.8 程序状态寄存器简介 每个异常模式还带有一个程序状态保存寄存器(SPSR),它用于保存在异常事件发生之前的CPSR。CPSR和SPSR通过特殊指令进行访问。详细信息请参阅第3章。注意:如果通过程序修改CPSR寄存器中的模式位进入异常模式,那么硬件将不会把CPSR保存至SPSR中。周立功单片机2.
22、8 程序状态寄存器条件代码标志 大多数“数值处理指令”可以选择是否影响条件代码标志位。通常如果指令带S后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。N、Z、C和V位都是条件代码标志。通过算术操作、逻辑操作、MSR或者LDM指令可以对这些位进行设置。所有ARM指令都可按条件来执行,而Thumb指令中只有分支指令可按条件执行。周立功单片机2.8 程序状态寄存器条件代码标志各标志位的含义如下:N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;Z 指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;周立功
23、单片机2.8 程序状态寄存器条件代码标志各标志位的含义如下:C 当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP 指令),并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;V当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。周立功单片机2.8 程序状态寄存器控制位 CPSR的最低8位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式时,可用软件操作这些位。它们分别是:中断禁止位;T位;模式位。周立功单片机2.8 程序状态寄存
24、器控制位中断禁止位包括I和F位:当I位置位时,IRQ中断被禁止;当F位置位时,FIQ中断被禁止。T位反映了正在操作的状态:当T位置位时,处理器正在Thumb状态下运行;当T位清零时,处理器正在ARM状态下运行。周立功单片机2.8 程序状态寄存器控制位模式位包括M4、M3、M2、M1和M0,这些位决定处理器的操作模式。注意:不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误。周立功单片机CPSR模式位设置表周立功单片机2.8 程序状态寄存器保留位 CPSR中的保留位被保留将来使用。为了提高程序的可移植性,当改变CPSR标志和控制位时,请不要改变这些保留位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM7 体系结构 概述 2583
限制150内