您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 项目12单片机嵌入式系统原理及应用(贾好来)ARM单片机结
第12章ARM32位单片机的结构、编程和开发工具1112.1ARM内核体系结构12.2ARM编程模型12.3ARM汇编指令12.4ARM汇编程序设计12.5ARM程序开发工具ADS2本章内容12.1ARM内核体系结构ARM是一类微处理器,同时也是一个公司的名字。ARM公司于1990年11月在英国剑桥成立(原名AdvancedRISCMachine),专门从事基于RISC技术的芯片设计、开发和授权。目前,ARM处理器(即采用ARMIP核的处理器)已遍及工业控制、通信系统、无线通讯、网络系统、消费类电子产品、成像和安全产品等各类产品市场。截止到2012年,基于ARM技术设计的处理器已经占据32位RISC微处理器约80%以上的市场份额,ARM技术正在逐步渗入到我们生活的各方面。3•ARM处理器是第一个为商业用途开发的RISC微处理器。ARM所采用的体系结构对于传统的RISC体系结构既有继承,又有舍弃和发展,即完全根据实际设计的需要仔细研究,没有机械照搬。最初的ARM设计最关心的是必须保持设计的简单性。ARM的简单性在ARM的硬件组织和实现方面比指令集的结构方面体现的更明显。但是ARM仍保留一些CISC的特征,并且因此达到比纯粹的RISC更高的代码密度,使得ARM在开始时就获得了其功率效率和较小的核面积的优势。12.1.1ARM体系结构版本4•ARM微处理器内核中普遍采用了流水线结构,随着ARM内核的发展,其流水线结构越来越复杂。常见的ARM处理器内核流水线如图12-1所示。图12-1ARM处理器内核流水线工作示意图转换(Snny)译码(Decode)取指(Fetch)执行(Execute)ARM7译码(Decode)取指(Fetch)执行(Execute)ARM9访问(Memory)写回(Write)发射(Issue)取指(Fetch)译码(Decode)ARM10取指(Decode)取指(Fetch)ARM11执行(Execute)访问(Memory)写回(Write)发射(Issue)译码(Decode)执行(Execute)访问(Memory)写回(Write)12.1.1ARM体系结构版本5迄今为止,ARM体系结构共定义了8个版本,版本号分别为v1~v8,从版本v1到v8,ARM体系的指令集功能不断扩大。同时,各版本中还有一些变种,这些变种定义该版本指令集中不同的功能。ARM处理器系列中的各种处理器,实现技术各不相同,性能差别很大,应用场合也不同,但只要它们支持同一ARM体系版本,基于它们的应用软件将是兼容的。需要注意,ARM的体系结构版本号并不是ARM核的版本号。12.1.1ARM体系结构版本6•常见的ARM体系架构与ARM核的版本对应关系见表12-1。ARM核体系结构ARM1ARMv1ARM2ARMv2ARM6,ARM600,ARM610,ARM7,ARM700,ARM710ARMv3StrongARM,ARM8,ARM810,ARM810ARMv4ARM9E-S,ARM10TDM1,ARM1020EARMv5ARM1136J(F)-S,ARM1176JZ(F)-S,ARM11MPCoreARMv6ARMCortex-M,ARMCortex-R,ARMCortex-AARMv7表12-1常见的ARM体系架构与ARM核的版本对应关系12.1.1ARM体系结构版本7•基于ARM的处理器内核简称ARM内核,内核并不是芯片,ARM内核与其他部件组合(如存储器、定时器和片内外设接口等)在一起才构成芯片。系统控制电路定时器片上存储单元专用硬件加速器外部存储器控制电路常用接口电路ARM处理器内核芯片厂商设计ARM公司设计图12-2ARM芯片内部主要模块示意图12.1.2ARM内核8ARM芯片中只有处理器内核由ARM公司设计,其他外围模块由获得ARM公司处理器IP授权的芯片厂商自行设计。芯片厂商针对不同的应用领域,通过设计具有很强针对性的专用硬件加速器,根据外设搭配不同的接口电路等设计出适用于专业领域的SOC芯片,从而实现基于相同处理器内核芯片产品的差异化。•ARM处理器内核不但包括CPU,还包括高速缓存、MMU控制器、嵌入式跟踪宏单元、TCM接口、总线控制逻辑、AHB接口、协处理器、中断控制器等电路模块。整个ARM处理器内核的核心是CPU。虽然随着ARM处理器内核的升级,其CPU也不断改进,但其基本结构主要由32位ALU、31个32位通用寄存器及6个状态寄存器、32个8位乘法器、32个桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器组成。12.1.2ARM内核9地址寄存器寄存器组31*32位寄存器(6个状态寄存器)地址增量器乘法器桶形移位器写数据寄存器指令流水线读数据寄存器Thumb指令译码器指令译码和逻辑控制ADDR[31:0]WDATA[31:0]RDATA[31:0]总线B总线ALU总线增量器总线扫描控制控制信号A32位ALU图12-3ARMCPU基本组成模型12.1.2ARM内核10•ARM处理器是32位处理器,但兼容16位指令集和数据类型。从编程的角度看,ARM处理器有以下两种操作状态:•ARM状态32位,处理器执行的是字的ARM指令;•Thumb状态16位,处理器执行的是半字的Thumb指令。•在程序执行过程中,处理器可以随时在这两种操作状态之间切换。值得注意的是,操作状态的切换并不影响处理器的工作模式或寄存器的内容。ARM处理器复位后开始执行代码时,应该处于ARM状态。12.2ARM编程模型12.2.1处理器状态11•ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种操作状态之间切换。两个状态可以按以下方法切换:•进入Thumb状态当操作数寄存器的状态位(最低位)为1时,执行BX指令就可以进行Thumb状态。如果处理器在Thumb状态发生异常(所有异常处理都在ARM状态下执行),则当异常处理返回时自动切换到Thumb状态。•进入ARM状态操作数寄存器的状态位(最低位)为0时,执行BX指令就可以进行ARM状态。处理器进行异常处理时,把PC的值放入异常模式链接寄存器中,从异常向量地址开始执行程序,系统自动进入ARM状态。•处理器状态的切换12•ARM体系结构支持7种处理器模式:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。具体参考表12-2。12.2.2处理器模式处理器模式用途备注用户(usr)正常程序工作模式不能直接切换到其它模式快中断(fiq)处理高速中断,用于高速数据传输及通道处理FIQ异常响应时进入该模式中断(irq)用于通用中断处理IRQ异常响应时进入该模式管理(svc)操作系统使用的保护模式,系统复位后的默认模式系统复位和软件中断响应时进入该模式中止(abt)用于支持虚拟内存和存储器保护数据或指令预取中止时进入该模式未定义(und)用于支持硬件协处理器的软件仿真未定义指令异常响应时进行该模式系统(sys)用于支持操作系统的特权任务等与用户类似,但具有可以直接切换到其它模式等特权13表12-2处理器模式及其用途•除用户模式外,其它模式为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或可选为只允许)特权模式下访问。此处,特权模式可以自由地切换处理器模式,而用户模式不能直接切换别的模式。•有5种处理器模式称为异常模式,它们是:快中断模式、中断模式、管理模式、中止模式、未定义模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种模式都有某些附加的寄存器,以避免异常退出时用户模式的状态不可靠。•系统模式与用户模式一样不能由异常进入,且使用与用户模式完全相同的寄存器。然而系统模式是特权模式,不受用户模式的限制。有了系统模式,操作系统要访问用户模式的寄存器就比较方便。同时,操作系统的一些特权任务可以使用这个模式,以访问一些受控的资源而不必担心异常出现时的任务状态变得不可靠。14•ARM处理器共有37个32位寄存器:•31个通用寄存器R0~R15、R13_svc、R14_svc、R13_abt、R14_abt、R13_unt、R14_unt、R13_irq、R14_irt和R8_frq~R14_frq;•6个状态寄存器CPSR、SPSR_svc、SPSR_abt、SPSR_unt、SPSR_irq和SPSR_fiq。•这些寄存器并不是在同一时间全都可以被访问,具体哪些寄存器可编程访问,取决于处理器状态和具体的操作模式。12.2.3寄存器集15(1)通用寄存器(2)程序计数器(PC)(3)程序状态寄存器(PSR)(4)条件码标志位(5)控制位(6)ARM状态寄存器与Thumb状态寄存器之间的关系1612.2.3寄存器集12.2.3寄存器集通用寄存器包括R0~R15,可以分为两类:不分组寄存器(R0~R7)和分组寄存器(R8~R14)。1)不分组寄存器(R0~R7)。在处理器的所有模式下,不分组寄存器中的每个都指向一个物理寄存器,且未被系统用于特殊用途。因此,在中断或异常处理中进行模式切换时,由于不同的处理器模式均使用相同的物理寄存器,可能会破坏寄存器中的数据,进行程序设计时应引起注意。(1)通用寄存器172)分组寄存器(R8~R14)。分组寄存器中的每一次所访问的物理寄存器都与处理器当前的模式有关。若要访问特定的物理寄存器,则要使用规定的物理寄存器名字后缀。物理寄存器名字形式如下:R13_modeR14_mode其中,mode是寄存器后缀,分别使用usr、svc、fiq、irq、abt和und表示6种模式。18•对于寄存器R8~R12,每个寄存器对应2个不同的物理寄存器,当使用fiq模式时访问寄存器R8_fiq~R12_fiq;当使用除fiq模式外的其他模式时访问寄存器R8~R12。•对于寄存器R13和R14,每个寄存器对应6个不同的物理寄存器。其中的一个物理寄存器是用户模式和系统模式公用的,其余5个分别用于5种异常模式。•寄存器R13通常作为堆栈指针(SP),用于保存当前处理器工作模式下堆栈的栈顶地址。寄存器R14作为链接寄存器(LR),用于保存子程序的返回地址。当子程序折返回地址保存在堆栈中,R14也可作为通用寄存器。•处理器在不同模式时,允许每种模式都有自已的栈顶和链接寄存器。19(2)程序计数器(PC)20•PC作为程序计数器,用于保存处理器要取的下一条指令的地址。•R15作为程序计数器,用于保存处理器要取的下一条指令的地址。•ARM状态下,所有的ARM指令都是32位长度的,指令以字对准保存;Thumb状态下,所有的Thumb指令都是16位长度的,指令以半字对准保存。•由于ARM体系采用多级流水线技术,对于ARM指令集而言,PC总是指向当前指令之后两条指令的地址,即PC的值为当前指令的地址加8。(3)程序状态寄存器(PSR)•程序状态寄存包括当前程序状态寄存器(CPSR)和备份程序状态寄存器(SPSR)。•所有处理器模式下都可以访问当前程序状态寄存器。CPSR包括条件标志位、中断禁止位、当前处理器模式标志,以及其他一些相关的控制和状态位。•在每一种异常工作模式下,都有一个备份状态寄存器。当异常发生时,SPSR用于保存CPSR的当前值,当从异常退出时,可用SPSR来恢复CPSR。用户模式和系统模式不属于异常模式,因此这两种模式没有SPSR,当在这两种情况下访问SPSR时,结果是未知的。CPSR和SPSR的格式如图12-4所示。21图12-4CPSR/SPSR格式22NZCV…………IFTM4M3M2M1M0b31b30b29b28b27b8b7b6b5b4b3b2b1b0条件码标志位保留位控制位(4)条件码标志位•N、Z、C和V均为条件码标志位。其内容可被算术或逻辑运算指令的结果所改变,并全由条件码标志位状态可以决定某条指令是否执行。•标志N。当两个用补码表示的带符号数进行运算时,N=1表示结果为负数;N=0表示运算结果为正数或零。•标志Z。Z=1表示指令运算结果为0;
本文标题:项目12单片机嵌入式系统原理及应用(贾好来)ARM单片机结
链接地址:https://www.777doc.com/doc-803577 .html