嵌入式课件1概要_第1页
嵌入式课件1概要_第2页
嵌入式课件1概要_第3页
嵌入式课件1概要_第4页
嵌入式课件1概要_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 ARM体系结构 ARM7TDMI-S1.1 简介1.1.1 ARM ARM即Advanced RISC Machines的缩写。 ARM公司是知识产权(IP)供应商,成立于1990。 ARM公司本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。 1.1 简介1.1.1 ARM 全球众多合作伙伴保证供应。ARM作为32位嵌入式RISC微处理器业界的领先供应商,商业模式的强大之处在于它在世界范围有超过100个合作伙伴包括半导体工业的著名公司,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM处理器核的设计可以很快投入市场。1.1 简介1.1.1 ARM

2、功耗低、成本低、功能强; 16/32位双指令集; 全球众多合作伙伴保证供应。1.1 简介1.1.2 ARM的RISC结构特性 基于精简指令集计算机(RISC)原理 传统的CISC指令集计算机随着计算机的发展引入了各种各样的复杂指令,使得指令集和为实现这些指令的计算机体系结构越来越复杂,已经不堪重负。 经过大量的研究和分析,发现在CISC的指令集中,各种指令的使用频度相差悬殊。1.1 简介1.1.2 ARM的RISC结构特性 基于精简指令集计算机(RISC)原理 大概有20%的指令被反复使用,使用量约占整个程序的80%; 而有80%左右的指令则很少使用,其使用量约占整个程序的20%。这就是所谓的

3、20%80%规律。1.1 简介1.1.2 ARM的RISC结构特性RISC指令集和相关的译码机制比复杂指令集计算机(CISC)的设计更简单。这种简单性得到了: 高指令吞吐率; 出色的实时中断响应; 体积小、性价比高的处理器宏单元。1.1 简介1.1.2 ARM的RISC结构特性 中央控制器没有采用微程序的方式。采用了硬接线PLA的方式。 减少复杂功能的指令,选用使用频度最高的指令; 简化处理器的结构,减少处理器的集成度; 采用32位定长指令。除了单机器周期执行1条指令外,每条指令具有多种操作功能,提高了指令使用效率。1.1 简介1.1.2 ARM的RISC结构特性 采用流水线结构,使每一条指令

4、平均在一个机器周期内完成,以提高处理器的速度。 采用多寄存器的结构,使指令的操作尽可能在寄存器之间进行。 采用Load/Store结构,即只有Load/Store(加载存储)指令可与存储器打交道,减少访问存储器的频度,节约指令执行时间。 为了进一步提高指令和数据的存取速度,有的还增加指令快存ICache和数据快存DCache。1.1 简介1.1.2 ARM的RISC结构特性例:下列叙述中,不属于RISC特点的是( )A. 采用多周期指令,从而实现一条指令的多种功能B. 采用大量寄存器,数据处理指令只对寄存器的内容进行操作C. 采用3级、5级或6级流水线,提高指令执行的并行程度D. 指令规整、对

5、称、简单,基本寻址方式少1.1 简介1.1.3 ARM7TDMI T -支持16位压缩指令集Thumb; D -支持片上Debug; M -内嵌硬件乘法器; I-嵌入式ICE,支持片上断点和调试点。1.1 简介1.1.3 ARM7TDMI T: 新型ARM体系结构在32位指令集的基础上又定义了16位的Thumb指令集,可以使程序存储器更小。Thumb指令集比通常的8位和16位CISC/RISC处理器具有更好的代码密度,而芯片面积只增加6。1.1 简介1.1.3 ARM7TDMI I: 由于ICERT逻辑的支持,便于通过JTAG来仿真调试ARM体系结构芯片,从而可以省去价格昂贵的在线仿真器。 在

6、处理器核中还集成了嵌入式跟踪宏单元(ETM), ETM可以用于监控内部总线,实时跟踪指令和数据的执行。1.1 简介1.1.4 ARM的流水线结构1条指令的执行可分为若干个阶段: 取指,从存储器中取出指令; 译码,指令译码; 取操作数,假定从寄存器组中取操作数;1.1 简介1.1.4 ARM的流水线结构1条指令的执行可分为若干个阶段: 执行运算; 存储器访问,操作数与存储器有关; 结果写回寄存器。各个阶段的操作相对都是独立的。因此,采用流水线的重叠技术可以大大提高系统性能。1.1 简介1.1.4 ARM的流水线结构 ARM体系结构的单周期3级流水线取指译码执行取指译码执行取指译码执行时间1231

7、.1 简介1.1.4 ARM的流水线结构 ARM体系结构的单周期3级流水线例:设指令由取指、分析、执行3个子部件完成,每个子部件的工作周期为t,采用常规标量单流水线处理机。若连续执行10条指令,则共需要多少时间?1.1 简介1.1.5 ARM灵活和方便的接口 ARM体系结构具有协处理器接口,这样既可以使基本的ARM处理器内核尽可能小,又可以方便地扩充各种功能。ARM允许接16个协处理器。 ARM处理器核具有片上总线AMBA(Advanced Micro controller Bus Architecture)。1.1 简介1.1.5 ARM灵活和方便的接口 AMBA定义了3组总线: 先进高性能

8、总线AHB(Advanced High performance Bus); 先进系统总线ASB(Advanced System Bus); 先进外围总线APB(Advanced Peripheral Bus)。1.1 简介1.1.5 ARM灵活和方便的接口 通过AMBA可以方便地扩充各种处理器及I/O,这样,可以把DSP、其他处理器和I/O接口(如UART、定时器和接口等)集成在一块芯片中。1.1 简介1.1.5 低电压低功耗的设计低电压低功耗的设计lCMOSCMOS电路的功耗关系:电路的功耗关系:Pc = (1/2)Pc = (1/2)f fV VDDDD2 2AgAgCLgCLg 式中,式

9、中,f f为时钟频率;为时钟频率;V VDDDD为工作电源电压;为工作电源电压;AgAg是逻辑门在是逻辑门在1 1个时钟周期内翻转的次数个时钟周期内翻转的次数( (通常通常为为2)2);CLgCLg为门的负载电容。为门的负载电容。1.1 简介1.1.5 低电压低功耗的设计低电压低功耗的设计为降低功耗所采取的措施为降低功耗所采取的措施 降低电源电压,可工作在降低电源电压,可工作在3 30V0V以下。以下。 减少门的翻转次数,当某个功能电路不减少门的翻转次数,当某个功能电路不需要时,禁止门翻转。需要时,禁止门翻转。 减少门的数目,即降低芯片的集成度。减少门的数目,即降低芯片的集成度。 降低时钟频率

10、(但也会损失系统的性降低时钟频率(但也会损失系统的性能)能)。1.2 ARM7TDMI-S的模块和内核框图 见书1.3 体系结构直接支持的数据类型 Byte 字节,8位;(A31A0)32位地址均有效. Halfword 半字,16位(半字必须与2字节边界对准)。(A31A1,0)偶数地址,A0为0 ; Word 字,32位(字必须与4字节边界对准)。(A31A2,0,0)地址是4的倍数,A1,A0均为0. 1.4 处理器工作状态 ARM:这种状态下执行32位字对准的ARM指令;取指时程序计数器的PC.1和PC.0均为0 Thumb:这种状态下执行半字对准的16位Thumb指令。取指时程序计数

11、器的PC.0为0,而使用PC.1位选择另一个半字。1.4 处理器工作状态 ARM处理器可以在两种工作状态之间切换。ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。1.4 处理器工作状态工作状态切换 进入Thumb状态。当操作数寄存器的状态位(位0)为1时,执行BX指令进入Thumb状态。如果处理器在Thumb状态进入异常,则当异常处理(IRQ、FIQ、Undef、Abort和SWI)返回时,自动转换到Thumb状态。1.4 处理器工作状态工作状态切换 进入ARM状态。当操作数寄存器的状态位(位0)为0时,执行BX指令进入ARM状态。处理器进行异常处理(IRQ、FIQ、Rese

12、t、Undef、Abort和SWI)时,把PC放入异常模式链接寄存器中,从异常向量地址开始执行也可以进入ARM状态。1.4 处理器工作状态工作状态切换举例;从ARM状态转变为Thumb状态LDR R0, =Lable + 1BXR0;从Thumb状态转变为ARM状态LDR R0, =LableBXR01.5 处理器模式处理器处理器 模模 式式说说 明明用户用户user 正常程序执行模式正常程序执行模式FIOFIOfiq 支持高速数据传送或通道处理支持高速数据传送或通道处理IRQIRQirq 用于通用中断处理用于通用中断处理管理管理svc 操作系统保护模式操作系统保护模式 系统复位后系统复位后

13、的缺省模式的缺省模式中止中止abt 实现虚拟存储器和或实现虚拟存储器和或 存储器保护存储器保护 未定义未定义und 支持硬件协处理器的软件仿真支持硬件协处理器的软件仿真系统系统sys 运行特权操作系统任务运行特权操作系统任务异异常常模模式式特特权权模模式式1.5 处理器模式 模式的改变 在软件控制下可以改变模式; 外部中断或异常处理也可以引起模式发生改变。1.5 处理器模式 大多数应用程序在用户模式下执行。 当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源; 用户模式下不能改变模式,除非异常(Exception)发生。这允许操作系统来控制系统资源的使用。1.5 处理器模式

14、除用户模式外的其他6种模式称为特权模式。 特权模式服务于中断或异常; 特权模式可以访问被保护的资源; 特权模式下可以改变模式。1.5 处理器模式 系统模式。 不能由任何其他模式进入该模式; 它与用户模式拥有完全相同的寄存器。然而它是特权模式,不受用户模式的限制。 它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄存器。避免使用附加寄存器保证了当任何异常出现时,都不会使任务的状态不可靠。1.5 处理器模式 除用户模式和系统模式之外的5种模式称作异常模式。 当特定的异常出现时,进入相应的模式。 每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。1.6 内

15、部寄存器 ARM7TDMI处理器总共有37个寄存器: 31个通用寄存器,包括程序计数器PC。这些寄存器是32位的。 6个状态寄存器。这些寄存器也是32位的,但只使用了其中的12位。 37个寄存器不能被同时看到,处理器状态和工作模式决定哪些寄存器编程者可见。SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPRSCPRSCPRSCPRSCPRSCPRSCPRSR15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14R13_fiqR13_irq

16、R13_undR13_abtR13_svcR13R13R12_fiqR12R12R12R12R12R12R11_fiqR11R11R11R11R11R11R10_fiqR10R10R10R10R10R10R9_fiqR9R9R9R9R9R9R8_fiqR8R8R8R8R8R8R7R7R7R7R7R7R7R6R6R6R6R6R6R6R5R5R5R5R5R5R5R4R4R4R4R4R4R4R3R3R3R3R3R3R3R2R2R2R2R2R2R2R1R1R1R1R1R1R1R0R0R0R0R0R0R0快中断模式快中断模式中断模式中断模式未定义模式未定义模式中止模式中止模式管理模式管理模式系统模式系统

17、模式用户模式用户模式异常模式异常模式特权模式特权模式*白色白色表明用户或系统模式使用的一般寄存器已被异常模式特定的另一寄存器所替代表明用户或系统模式使用的一般寄存器已被异常模式特定的另一寄存器所替代 1.6 内部寄存器通用寄存器 通用寄存器(R0R15)可分成3类: 不分组寄存器R0R7 分组寄存器R8R14 程序计数器R151.6 内部寄存器不分组寄存器R0R7 R0R7是不分组寄存器,在所有的处理器模式下,它们每一个都访问同样的32位物理寄存器。它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。1.6 内部寄存器分组寄存器R8R14 R8R14是分组寄存器。它们每一个访问的物理寄存器取

18、决于当前的处理器模式。每种处理器模式有专用的分组寄存器用于快速异常处理。 若要访问特定的物理寄存器而不依赖于当前的处理器模式,则要使用规定的名字。1.6 内部寄存器 寄存器R8R12各有两组物理寄存器。一组为FIQ模式,另一组为除FIQ以外的其他模式。独立的FIQ模式允许快速中断处理。 第1组访问R8_fiqR12_fiq 第2组访问R8_usrR12_usr。1.6 内部寄存器 寄存器R13、R14各有6个分组的物理寄存器。1个用于用户模式和系统模式,而其他5个分别用于5种异常模式。访问时需要指定其模式名。名字形式如下: R13_ R14_其中,可以从usr、svc、abt、und、irq和

19、fiq 6种模式中选取一个。 1.6 内部寄存器 寄存器R13通常用作堆栈指针,称作SP。 每种异常模式都有自己的分组R13。 通常R13应当被初始化成指向异常模式分配的堆栈。 在异常处理程序的入口将用到的其他寄存器的值保存到堆栈中。返回时,重新将这些值加载到寄存器。这种异常处理方法保证了异常出现后不会导致执行程序的状态不可靠。1.6 内部寄存器 寄存器R14用作子程序链接寄存器,也称为链接寄存器LR(Link Register)。 当执行带链接转移(BL)指令时, R14得到R15的拷贝。 在其他情况下,将R14当做通用寄存器。 类似地,当中断或异常出现时,或中断或异常程序执行BL指令时,相

20、应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。 1.6 内部寄存器应用提示: FIQ模式有7个分组的寄存器R8R14映射为R8_fiq R14_fiq。在ARM状态下,FIQ处理中使用R8R14没必要保存。 User、IRQ、Supervisor、Abort和Undefined模式每一种都包含两个分组的寄存器R13和R14的映射,允许每种模式都有自己的堆栈和链接寄存器。 1.6 内部寄存器程序计数器R15 寄存器R15用作程序计数器PC。在ARM状态,位1:0为0,位31:2保存PC。在Thumb状态下,位0为0,位31:1

21、保存PC。程序计数器用于特殊场合。1.6 内部寄存器程序计数器R15 读程序计数器。指令读出的R15的值是指令地址加上8个字节。由于ARM指令始终是字对准的,所以读出结果值的位1:0总是0(在Thumb状态下,情况有所变化)。读PC主要用于快速地对临近的指令和数据进行位置无关寻址,包括程序中的位置无关转移。1.6 内部寄存器程序计数器R15 写程序计数器。写R15的通常结果是将写到R15中的值作为指令地址,并以此地址发生转移。由于ARM指令要求字对准,通常希望写到R15中值的位1:0=0b00。1.6 内部寄存器 程序状态寄存器CPSR Current Program Status Regis

22、ter 所有模式共享 程序状态保存寄存器SPSR 每种异常模式都有一个程序状态保存寄存器SPSR (Saved Program Status Register)。当异常出现时,SPSR用于保存CPSR的状态。1.6 内部寄存器 ARM7TDMI的37个寄存器 R0R7 一组 R8R12 二组 R13R14 六组 R15 一组 CPSR R15 一组 SPSR 五组8 + 52 + 26 + 1 + 1 + 5 = 371.7 程序状态寄存器M0M1M2M3M4TFIDNM(RAZ)VCZN31 30 29 28 8 7 6 5 4 3 2 1 0条件码状态标志位条件码状态标志位中断禁止控制位中

23、断禁止控制位Thumb控制位控制位模式控制位模式控制位保留位,用保留位,用做扩展做扩展 1.7 程序状态寄存器条件码标志 N、Z、C、V(Negative、Zero、Carry、overflow)位称作条件码标志(Condition Code Flag),经常以标志(Flag)引用。CPSR中的条件码标志可由大多数指令检测以决定指令是否执行。1.7 程序状态寄存器条件码标志 通常条件码标志通过执行下述指令进行修改 比较指令(CMN、CMP、TEQ、TST) 一些算术运算、逻辑运算和传送指令,它们的目的寄存器不是R15。这些指令中大多数同时有标志保留变量和标志设置变量,后者通过在指令助记符后加上

24、字符“S”来选定。加“S”表示进行标志设置。1.7 程序状态寄存器控制位 程序状态寄存器CPSR()的最低8位I、F、T和M4:0用作控制位。 当异常出现时改变控制位。 处理器在特权模式下时也可由软件改变。1.7 程序状态寄存器控制位 中断禁止位:I置1,则禁止IRQ中断;F置1,则禁止FIQ中断。 T位:T0,指示执行ARM指令;T 1,指示执行Thumb指令。 模式位:M0、M1、M2、M3和M4(M4:0)是模式位,这些位决定处理器的工作模式,如下表所列。M4:0 模模 式式 可访问的寄存器可访问的寄存器l0000用户用户 PC、R14R0、CPSR10001FIQ PC、R14_fiq

25、R8_ fiq、R7R0、CPSR、SPSR_ fiq 10010IRQ PC、R14_irq、R13_irq、R12R0、CPSR、SPSR_irq10011管理管理 PC、R14_svc、R13_svc、R12R0、CPSR、 SPSR_svc10111中止中止 PC、R14_abt、R13_abt、R12R0、CPSR、 SPSR_abt11011未定义未定义 PC、R14_und、R13_und、R12R0、CPSR、 SPSR_und11111系统系统 PC、R14R0、CPSR表表1.7 1.7 模式位模式位1.8 异常 正常的程序流被暂时中止,处理器进入异常模式。 异常由内部或外

26、部源产生并引起处理器处理一个事件(正常的程序流程被暂时中止),例如外部中断或试图执行未定义指令都会引起异常。 在处理异常之前,处理器状态必须保留,以便在异常处理程序完成后,原来的程序能够重新执行。1.8 异常 ARM支持7种类型的异常。异常出现后,强制从异常类型对应的固定存储器地址开始执行程序。这些固定的地址称为异常向量(Exception Vectors)。1.8 异常异常类型模 式正常地址复位管理0 x00000000未定义指令未定义0 x00000004软件中断管理0 x00000008预取值中止中止0 x0000000C数据中止中止0 x00000010IRQIRQ0 x0000001

27、8FIQFIQ0 x000000lC表1.8 异常向量1.8 异常 同一时刻可能出现多个异常,则将按固定的顺序(异常优先级)来处理异常。优先级异 常1(最高)复位2数据中止3FIQ4IRQ5指令预取中止6最低未定义指令、SWI1.8 异常异常入口 当异常出现时,异常模式分组的R14和SPSR用于保存状态。 R14保存程序计数器PC(R15); SPSR保存当前状态寄存器CPSR;1.8 异常异常入口 在ARM状态,ARM7TDMI内核将下一条指令的地址复制到LR中。 将CPSR复制到相应的SPSR。 根据异常将CPSR模式强制设为某一值。 强制PC从相关的异常向量处取值。1.8 异常异常返回

28、当处理异常返回时,把SPSR传送到CPSR,R14传送到PC。这可用两种方法自动完成: 使用带“S”的数据处理指令,将PC作为目的寄存器; 使用带恢复CPSR的多加载指令。 清零在入口置位的中断禁止标志。1.8 异常未定义指令异常 当ARM处理器执行协处理器指令时,它必须等待任一外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,就会出现未定义指令异常。若试图执行未定义的指令,也会出现未定义指令异常。未定义指令异常可用于在没有物理协处理器(硬件)的系统上,对协处理器进行软件仿真,或在软件仿真时进行指令扩展。1.8 异常未定义指令异常 在防止失败的指令(未定义指令)后,捕获执行下面的指

29、令:MOVS PC,R14_und;在未定义模式执行 这个动作恢复了PC和CPSR,并返回到未定义指令之后的指令。1.8 异常软件中断异常 软件中断异常指令SWI(SoftWare Interrupt)进入管理模式,以请求特定的管理(操作系统)函数。 通常在管理模式下执行以下指令返回:MOVS PC,R14_svc 恢复PC和CPSR,并返回到SWI之后的指令,SWI处理程序读取操作码以提取SWI函数编号。1.8 异常中止异常 中止表示当前对处理器的访问不能被完成。 中止是通过外部ABORT输入指示的,在具体的芯片中,ABORT信号由片内存储器管理部件控制。ABORT是内核的一个信号,对用户可

30、不见。1.8 异常中止异常 有两类中止异常: 预取指中止 发生在指令预取指过程中。 数据中止 发生在对数据访问时。1.8 异常中止异常 中止表示当前对处理器的访问不能被完成。 中止是通过外部ABORT输入指示的,在具体的芯片中,ABORT信号由片内存储器管理部件控制。ABORT是内核的一个信号,对用户可不见。1.8 异常预取指中止异常 存储器系统发出存储器中止(Abort)信号。响应取指激活的中止,标记所取的指令无效。若处理器试图执行无效指令,则产生预取中止异常。若指令未执行(例如指令在流水线中发生了转移),则不发生预取中止,在指令到达流水线的执行阶段才会进入异常。1.8 异常预取指中止异常

31、在处理中止的原因后,不管处于哪种处理器状态,处理程序都会在中止模式下执行以下指令: SUBSPC,R14_abt,#4恢复PC和CPSR并重试被中止的指令1.8 异常数据中止异常 存储器系统发出存储器中止信号。响应数据访问(加载或存储)激活中止,标记数据为无效。在后面的任何指令或异常改变CPU状态之前,数据中止异常发生。1.8 异常数据中止异常 使得指令分页的虚拟存储器系统能够被实现。 数据中止返回执行:SUBS PC,R14_abt,#8R14_abt 8的原因:被中止指令已经被执行,但是需要重新执行。1.8 异常中断请求(IRQ)异常 中断请求异常是一个由nIRQ输入端的低电平所产生的正常

32、中断。在具体的芯片中,nIRQ由片内外设拉底,nIRQ是内核的一个信号,对用户不可见。 IRQ 异常的优先级比FIQ异常的低。当进入FIQ处理时,会屏蔽掉IRQ异常。1.8 异常中断请求(IRQ)异常执行过程:R14_irq = address of the aborted instruction + 4SPSR_irq = CPSRCPSR4:0 = 0b10010 /进入IRQ模式CPSR5 = 0/在ARM状态执行CPSR7 = 1if high vectors configured thenPC = 0 xFFFF0018elsePC = 0 x000000181.8 异常中断请求(I

33、RQ)异常 IRQ处理程序通过执行下面的指令从中断返回:SUBS PC, R14_irq, #41.8 异常中断处理代码的开始部分和退出部分STMFD SP!,R0-R7,LR;现场保护LDMFD SP!,R0-R7,LR;带恢复CPSR的多加载指令SUBS PC,LR,#4这里的SP和LR是属于异常模式的寄存器。1.8 异常快速中断请求(FIQ)异常 通过处理器上的FIQ输入引脚,由外部产生FIQ异常。FIQ被设计成支持数据传送和通道处理,并有足够的私有寄存器(8个),用来满足寄存器保护的需要,减少了上下文切换的总开销。1.8 异常快中断请求(FIQ)异常 快中断请求异常由nFIQ输入端的低

34、电平所产生。在具体的芯片中,nFIQ由片内外设拉底,nFIQ是内核的一个信号,对用户不可见。1.9 中断延时 最坏情况下FIQ的延迟时间 Tsyncmax:请求通过同步器的最长时间,2个处理器周期。 Tldm:最长的指令执行需要的时间(LDM指令),在零等待状态为20个周期。 Texc:数据中止入口时间,3个周期。 Tfiq:FIQ入口时间,2个周期总的延迟时间是27个周期。1.9 中断延时 最大IRQ延迟时间 与FIQ相似 当FIQ和IRQ同时申请时,要延时到FIQ处理程序允许IRQ中断。1.9 中断延时 最小中断延迟 Tsyncmax Tfiq共4个周期1.10 复位 nRESET信号被拉

35、底时复位 当nRESET信号再次变为高电平时,执行: 强制M4 : 0变为b10011(管理模式); 置位CPSR中的I和F位; 清零CPSR中的T位; 强制PC从地址0 x00开始对下一条指令进行取指; 返回到ARM状态并恢复执行。1.10 复位 处理器上一旦有复位输入,ARM处理器立刻停止执行当前指令。复位后,ARM处理器在禁止中断的管理模式下,从地址0 x00000000或0 xFFFF0000开始执行指令。1.11 存储器及存储器映射I/O1.11.1地址空间 ARM体系结构使用232个8位字节的单一、线性地址空间。将字节地址作为无符号数看待,范围为0 232 - 1。 将地址空间看作

36、由230 个32位的字组成。每个字的地址是字对准的,故地址可被4整除。字对准地址是A的字由地址为A、A+1、A+2和A+3的4个字节组成。1.11 存储器及存储器映射I/O1.11.1地址空间 地址空间也看作由231个16位的半字组成,每个半字的地址是半字对准的,故地址可被2整除。半字对准地址是A的半字由地址为A和A+1的2个字节组成。 地址计算通常由普通的整数指令完成。这意味着若计算的地址在地址空间中上溢或下溢,通常就会环绕,计算结果缩减模232 。然而,为了减少以后地址空间扩展的不兼容,程序应该编写成使地址的计算结果位于0232-1的范围内。1.11 存储器及存储器映射I/O1.11.1地

37、址空间 大多数转移指令通过把指令指定的偏移量加到PC的值上来计算目的地址,然后把结果写回到PC。计算公式如下:目的地址当前指令的地址+8+偏移量如果计算结果在地址空间中上溢或下溢,则指令因地址环绕从而是不可预知的。因此,向前转移不应当超出地址0 xFFFFFFFF,向后转移不应当超出地址Ox00000000。1.11 存储器及存储器映射I/O1.11.1地址空间 每条指令执行之后,根椐指令正常的顺序执行,则:目的地址当前指令的地址+4若计算从地址空间的顶部溢出,那么从技术上讲,结果是不可预知的。换句话说,程序在执行完地址OxFFFFFFFC的指令后,不应当依据顺序执行来执行地址Ox00000000的指令。1.11 存储器及存储器映射I/O1.11.2 存储器格式对于字对准的地址A,地址空间规则要求: 地址位于A的字由地址为A、A+1、A+2和A+3的字节组成; 地址位于A的半字由地址为A和A+1的字节组成;地址位于A+2的半字由地址为A+2和A+3的字节组成; 地址位于A的字由地址为A和A+2的半字组成。 1.11 存储器及存储器映射I/O1.11.2 存储器格式小端对齐方式存储系统: 字对准地址中的字节或半字是该地址中字的最低有效字节或半字; 半字对准地址中的字节是该地址中的半字的最低有效字节。地址地址A+1A+1的字节的字节地址地址A+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论