首页 《微机原理与嵌入式系统》chapter_2_ARM7体系结构

《微机原理与嵌入式系统》chapter_2_ARM7体系结构

举报
开通vip

《微机原理与嵌入式系统》chapter_2_ARM7体系结构第2章ARM7体系结构第2章目录1.ARM7体系结构2.ARM7的状态与模式3.ARM7的寄存器4.ARM7当前程序状态寄存器(CPSR)5.ARM7的异常与异常处理6.ARM7的存储系统第2章目录1.ARM7体系结构2.ARM7的状态与模式3.ARM7的寄存器4.ARM7当前程序状态寄存器(CPSR)5.ARM7的异常与异常处理6.ARM7的存储系统ARM简介ARM是AdvancedRISCMachines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC(精简指令集)处理器。...

《微机原理与嵌入式系统》chapter_2_ARM7体系结构
第2章ARM7体系结构第2章目录1.ARM7体系结构2.ARM7的状态与模式3.ARM7的寄存器4.ARM7当前程序状态寄存器(CPSR)5.ARM7的异常与异常处理6.ARM7的存储系统第2章目录1.ARM7体系结构2.ARM7的状态与模式3.ARM7的寄存器4.ARM7当前程序状态寄存器(CPSR)5.ARM7的异常与异常处理6.ARM7的存储系统ARM简介ARM是AdvancedRISCMachines的缩写,它是一家微处理器行业的知名企业,该企业 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 了大量高性能、廉价、耗能低的RISC(精简指令集)处理器。ARM公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。ARM公司简介将技术授权给其它芯片厂商形成各具特色的ARM芯片...2.1ARM7体系结构“体系结构”(或称为“系统结构”),是处理器的逻辑抽象,是指程序员在使用某处理器编制程序时,所“看到”从而可以在程序中使用的处理器资源构成、使用方式、工作原理及其相互间的关系。其中最为重要的就是处理器所提供的指令系统和寄存器组模型。冯·诺依曼存储器体系结构和哈佛存储器体系结构1.RISC处理器RISC是精简指令集计算机的缩写,其目标是设计出在高时钟频率下单周期执行,简单而有效的指令集。RISC处理器具有以下特点:采用LOAD/STORE结构。因为访问存储器指令所需要的时间比较长,在指令系统中要尽量减少这类指令,所以RISC指令中只保留不可再少的LOAD/STORE两种存储器访问指令;硬布线控制逻辑。使得大多数指令在单周期内执行完成,以减少微程序技术中的指令解释开销;减少指令和寻址方式的种类。寻址方式简单,指令系统小;指令长度固定。2.ARM7体系结构ARM7采用ARMv4T结构,分为三级流水,具有如下特点:RISC处理器结构;能够提供0.9MIPS/MHz的三级流水线结构;支持32位的ARM指令集和16位的Thumb指令集;ARM7所有的指令都可以条件执行,使得程序设计更适合流水线的工作特点;专用的存储器访存指令(Load/Store)。其它所有指令都是寄存器操作指令。每条数据处理指令可同时包含算术逻辑单元(ALU)的运算和移位处理,实现ALU和移位器的最大利用;使用地址自增和自减的寻址方式优化程序循环;装载/保存指令对数据的批量传输,实现最大数据吞吐量;大多数指令的条件执行,实现最快速的代码执行。为了使ARM能够更好地满足嵌入式应用的需要,ARM体系结构还有以下特点:ARM7TDMI-S支持高密度16位的Thumb指令集;支持片上调试;支持64位乘法;支持EmbededICE观察硬件;ARM7TDMI的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI一致;3.ARM7处理器的三级流水线ARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。ARM7TDMI的流水线分3级,分别为:取指译码执行取指译码执行完成该指令对应的操作对已取入到处理器的指令进行译码分析从存储器取指令到处理器三级流水线结构的指令执行顺序PC指令1指令2指令3指令4…………程序存储器PC-4PC-8PC+4周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。1在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。2在第3个周期,PC指向指令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。3在第4个周期,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理。4处理器执行一条指令的三个阶段程序清单2‑10x4000ADDPC,PC,#4;正在被执行的指令;PC←PC当前值+40x4004cmd2;正在被译码的指令;0x4008cmd3;正在被取指的指令;PC=0x40080x400Ccmd4;PC+4=0x400C…第2章目录1.ARM7体系结构2.ARM7的状态与模式3.ARM7的寄存器4.ARM7当前程序状态寄存器(CPSR)5.ARM7的异常与异常处理6.ARM7的存储系统处理器状态ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令集,并且各自对应1种处理器的状态:ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;Thumb状态:16位,处理器执行半字方式的Thumb指令。注意:两个状态之间切换并不影响处理器模式或寄存器内容。ARM处理器模式ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式。与用户模式类似,但具有可以直接切换到其它模式等特权用于支持操作系统的特权任务等系统(sys)未定义指令异常响应时进入此模式支持硬件协处理器的软件仿真未定义(und)在ARM7TDMI没有大用处用于支持虚拟内存和/或存储器保护中止(abt)系统复位和软件中断响应时进入此模式操作系统保护代码管理(svc)IRQ异常响应时进入此模式用于通用中断处理中断(irq)FIQ异常响应时进入此模式支持高速数据传输及通道处理快中断(fiq)不能直接切换到其它模式正常程序工作模式用户(usr)备注说明处理器模式特权模式与用户模式类似,但具有可以直接切换到其它模式等特权用于支持操作系统的特权任务等系统(sys)未定义指令异常响应时进入此模式支持硬件协处理器的软件仿真未定义(und)在ARM7TDMI没有大用处用于支持虚拟内存和/或存储器保护中止(abt)系统复位和软件中断响应时进入此模式操作系统保护代码管理(svc)IRQ异常响应时进入此模式用于通用中断处理中断(irq)FIQ异常响应时进入此模式支持高速数据传输及通道处理快中断(fiq)不能直接切换到其它模式正常程序工作模式用户(usr)备注说明处理器模式除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。未定义(und)中止(abt)管理(svc)中断(irq)快中断(fiq)系统(sys)异常模式与用户模式类似,但具有可以直接切换到其它模式等特权用于支持操作系统的特权任务等系统(sys)未定义指令异常响应时进入此模式支持硬件协处理器的软件仿真未定义(und)在ARM7TDMI没有大用处用于支持虚拟内存和/或存储器保护中止(abt)系统复位和软件中断响应时进入此模式操作系统保护代码管理(svc)IRQ异常响应时进入此模式用于通用中断处理中断(irq)FIQ异常响应时进入此模式支持高速数据传输及通道处理快中断(fiq)不能直接切换到其它模式正常程序工作模式用户(usr)备注说明处理器模式未定义(und)中止(abt)管理(svc)中断(irq)快中断(fiq)这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。用户和系统模式与用户模式类似,但具有可以直接切换到其它模式等特权用于支持操作系统的特权任务等系统(sys)未定义指令异常响应时进入此模式支持硬件协处理器的软件仿真未定义(und)在ARM7TDMI没有大用处用于支持虚拟内存和/或存储器保护中止(abt)系统复位和软件中断响应时进入此模式操作系统保护代码管理(svc)IRQ异常响应时进入此模式用于通用中断处理中断(irq)FIQ异常响应时进入此模式支持高速数据传输及通道处理快中断(fiq)不能直接切换到其它模式正常程序工作模式用户(usr)备注说明处理器模式这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。系统(sys)用户(usr)ARM7处理器约定了进入到5种异常模式的对应事件:管理模式(svc):复位或执行SWI软中断指令时,进入该模式。终止模式(abt):处理器访问存储器失败时,进入该模式。未定义指令模式(und):处理器遇到不支持的指令时,进入该模式。中断模式(irq):处理器响应irq中断时,进入该模式。快中断模式(fiq):处理器响应fiq中断时,进入该模式。第2章目录1.ARM7体系结构2.ARM7的状态与模式3.ARM7的寄存器4.ARM7当前程序状态寄存器(CPSR)5.ARM7的异常与异常处理6.ARM7的存储系统1.ARM7的寄存器ARM微处理器内共有37个32位的程序可访问寄存器物理资源,其中31个通用寄存器,6个状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器可被编程访问,取决微处理器当前的工作状态及运行模式。即处理器的当前状态和模式决定了可以访问的物理寄存器集合,并且在任何状态、模式下最多可见到18个寄存器。SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别ARM状态各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别ARM状态各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断ARM状态各模式下可以访问的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在汇编语言中寄存器R0~R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别一般的通用寄存器寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别堆栈指针寄存器R13(SP)寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt无SPSRCPSRCPSR状态寄存器R15R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)R12_fiqR12R12(IP)R11_fiqR11R11(FP,v8)R10_fiqR10R10(SL,v7)R9_fiqR9R9(SB,v6)R8_fiqR8R8(v5)R7R7(v4)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别链接寄存器R14(LR)R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。2.ARM处理器特别功能寄存器堆栈指针寄存器(SP)堆栈是一种具有“后进先出”(LIFO---LastInFirstOut)特殊访问属性的存储结构。堆栈一般使用RAM物理资源作为存储体,再加上LIFO访问接口实现。R13_fiqR13_irqR13_undR13_abtR13_svcR13R13(SP)快速中断中断未定义中止管理系统用户堆栈指针堆栈是计算机中广泛应用的技术,因其LIFO特性,常应用于保存中断断点、保存子程序调用返回点、保存CPU现场数据等,也用于程序间传递参数。程序计数器(PC)返回连接寄存器(LR)当前程序状态寄存器(CPSR)和存储程序状态寄存器(SPSR)ARM处理器工作过程中需要一些控制信息,用于控制处理器的状态、模式和处理器的中断允许或屏蔽;处理器运算过程中也会 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 决出一些运算状态信息,用于标志处理器执行指令后有无进位、有无溢出、结果的正负和结果是否为0等当前状态情况。SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svc----SPSRCPSRCPSR快速中断中断未定义中止管理系统用户状态寄存器3.Thumb状态下的寄存器Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0~R7;程序计数器(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)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别注意:括号内为ATPCS中寄存器的命名,可以使用RN汇编伪指令将寄存器定义多个名字。其中ADS1.2的汇编程序直接支持这些名称,但注意a1~a4,v1~v4必须用小写。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)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别R7R6R5R4R3R2R1R0在汇编语言中寄存器R0~R7为保存数据或地址值的通用寄存器。对于任何处理器模式,它们中的每一个都对应于相同的32为物理寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊的用途,并且可用于任何使用通用寄存器的指令。Thumb状态下的堆栈指针寄存器(SP)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)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。注意:在发生异常时,处理器自动进入ARM状态。R13_fiqR13_irqR13_undR13_abtR13_svcR13Thumb状态下的链接寄存器R14(LR)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)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别链接寄存器LR对应ARM状态寄存器R14,在结构上有两个特殊功能,详见“ARM状态下的链接寄存器LR”。注意:在发生异常时,处理器自动进入ARM状态。R14_fiqR14_irqR14_undR14_abtR14_svcR14第2章目录1.ARM7体系结构2.ARM7的状态与模式3.ARM7的寄存器4.ARM7当前程序状态寄存器(CPSR)5.ARM7的异常与异常处理6.ARM7的存储系统程序状态寄存器程序设计中经常要依据前面数据处理的情况来决策数据的后续处理方法,处理器会随时将指令执行的当前状态以寄存器位的方式表示出来,这个用于标示处理器当前指令执行状态的寄存器称之为‘程序状态寄存器’(PSR---ProgramStateRegister),程序状态寄存器中的值称做‘程序状态字’(PSW---ProgramStateWord)。ARM7TDMI内核包含1个CPSR和5个供异常处理程序使用的SPSR。CPSR反映了当前处理器的状态,其包含:4个条件代码标志(负(N)、零(Z)、进位(C)和溢出(V));2个中断禁止位,分别控制一种类型的中断;5个对当前处理器模式进行编码的位;1个用于指示当前执行指令(ARM还是Thumb)的位。程序状态寄存器NZCV——IM0M1M2M3M4TF—...313029282726876543210条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVIM0M1M2M3M4TFCPSR寄存器的格式3.8程序状态寄存器简介每个异常模式还带有一个程序状态保存寄存器(SPSR),它用于保存在异常发生之前的CPSR。CPSR和SPSR通过特殊指令进行访问。详细信息请参阅第4章。3.8程序状态寄存器条件代码标志大多数“数值处理指令”可以选择是否影响条件代码标志位。通常如果指令带S后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。N、Z、C和V位都是条件代码标志。通过算术操作、逻辑操作、MSR或者LDM指令可以对这些位进行设置。所有ARM指令都可按条件来执行,而Thumb指令中只有分支指令可按条件执行。3.8程序状态寄存器条件代码标志各标志位的含义如下:N运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;Z指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;3.8程序状态寄存器条件代码标志各标志位的含义如下:C当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP指令),并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;V当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。3.8程序状态寄存器控制位CPSR的最低8位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式时,可用软件操作这些位。它们分别是:中断禁止位;T位;模式位。3.8程序状态寄存器控制位中断禁止位包括I和F位:当I位置位时,IRQ中断被禁止;当F位置位时,FIQ中断被禁止。T位反映了正在操作的状态:当T位置位时,处理器正在Thumb状态下运行;当T位清零时,处理器正在ARM状态下运行。3.8程序状态寄存器控制位模式位包括M4、M3、M2、M1和M0,这些位决定处理器的操作模式。注意:不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误。R0~R14,PC,CPSRR0~R7,SP,LR,PC,CPSR系统11111R0~R12,R13_und,R14_und,PC,CPSR,SPSR_undR0~R7,SP_und,LR_und,PC,CPSR,SPSR_und未定义11011R0~R12,R13_abt,R14_abt,PC,CPSR,SPSR_abtR0~R7,SP_abt,LR_abt,PC,CPSR,SPSR_abt中止10111R0~R12,R13_svc,R14_svc,PC,CPSR,SPSR_svcR0~R7,SP_svc,LR_svc,PC,CPSR,SPSR_svc管理10011R0~R12,R13_irq,R14_irq,PC,CPSR,SPSR_irqR0~R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiq中断10010R0~R7,R8_fiq~R14_fiq,PC,CPSR,SPSR_fiqR0~R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiq快中断10001R0~R14,PC,CPSRR0~R7,SP,LR,PC,CPSR用户10000可见的ARM状态寄存器可见的Thumb状态寄存器模式M[4:0]CPSR模式位设置表3.8程序状态寄存器保留位CPSR中的保留位被保留将来使用。为了提高程序的可移植性,当改变CPSR标志和控制位时,请不要改变这些保留位。另外,请确保您程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为1或者0。第2章目录1.ARM7体系结构2.ARM7的状态与模式3.ARM7的寄存器4.ARM7当前程序状态寄存器(CPSR)5.ARM7的异常与异常处理6.ARM7的存储系统1.ARM7的异常在ARM中,异常是一些事件,这些事件能导致正常的程序执行 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 被暂时地停止,而进入到该事件对应的处理器异常模式并对该事件进行处理,这个过程称作异常响应。ARM中定义了复位、未定义指令、SWI(软中断)、预取指终止、预取数终止、irq以及fiq等7种异常。2.ARM7的异常处理‘1’‘1’快中断模式FIQ0x0000001C8F‘1’中断模式IRQ0x000000187---保留0x000000146FI中止模式取数中止0x000000105FI中止模式预取指中止0x0000000C4F‘1’管理模式软中断指令0x000000083FI未定义模式未定义指令0x000000042‘1’‘1’管理模式复位0x000000001响应后F位状态响应后I位状态响应后处理器模式异常分类入口地址序号ARM异常前8字异常向量入口后8字跳转目标地址CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0异常向量表源代码Reset[0xe59ff018][0xe59ff018]...[0xb9205f80][0xe51ffff0][0xe59ff018][0x8000008c][0x80000040]...[0x00000000][0x00000000]指令机器码获取跳转地址第2章目录1.ARM7体系结构2.ARM7的状态与模式3.ARM7的寄存器4.ARM7当前程序状态寄存器(CPSR)5.ARM7的异常与异常处理6.ARM7的存储系统1.ARM7处理器寻址空间ARM处理器采用冯·诺依曼(VonNeumann)结构,指令、数据和I/O统一编址(即存在同一个空间)。只有装载、保存和交换指令可访问存储器中的数据。ARM结构使用单个平面的232个8位字节地址空间。地址空间可以看作是包含230个32位字,或231个16位半字。如果地址向上或向下溢出地址空间,通常会发生翻转。2.存储器中数据组织的形式字节0~字节3紧邻的4个字节单元构成了存储空间的第一个‘字’单元;用字节0的地址表示该‘字’的地址。字节0~字节1、字节2~字节3分别构成了存储空间的第一、第二个‘半字’单元;分别用字节0的地址、字节2的地址表示对应‘半字’的地址。存储器系统有两种映射机制:小端存储器系统:在小端格式中,数据的高字节存放在高地址中。大端存储器系统:在大端格式中,数据的高字节存放在低地址中。存储器格式…………AA+1A+2A+3存储器…………AA+1A+2A+3存储器0x120x340x560x780x780x560x340x12数据0x12345678在大小端模式的存储差异:小端存储系统大端存储系统
本文档为【《微机原理与嵌入式系统》chapter_2_ARM7体系结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
中小学教育资料大全
暂无简介~
格式:ppt
大小:824KB
软件:PowerPoint
页数:63
分类:互联网
上传时间:2023-02-27
浏览量:0