北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构1ARM体系结构概述课程编号:3101北京亚嵌教育研究中心©2009AKAE北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构2学习安排ARM概述ARM处理器的特点ARM内核概述和分类ARM体系结构基本知识ARM工作模式ARM寄存器组织ARM指令系统与编程北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构3Section1ARM概述北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构4ARM公司和ARM处理器1)ARM是一个CPU内核。ARM公司自己并不生产或销售芯片,它采用技术授权模式,通过出售芯片技术授权,收取授权费和技术转让费。2)基于ARM内核的处理器是目前消费类电子市场中占有量第一的处理器,尤其是手机行业。3)ARM是“AdvancedRISCMachine”的缩写,最早的ARM处理器诞生于80年代的英国。北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构5ARM处理器的使用量北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构6ARM处理器的特点RISC指令集Load/Store体系结构固定的32位指令大多数指令单周期完成Thumb\DSP\jazeller功能扩展低功耗北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构7命名的含义标志含义说明T支持Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6T32位乘32位得到64位,32位的乘加得到64位EDSP指令增加了DSP算法处理器指令:16位乘加指令,饱和的带符号数的加减法,双字数据操作,cache预取指令JJava加速器Jazelle提高java代码的运行速度S可综合提供VHDL或Verilog语言设计文件D片上调试M支持长乘法IEmbeddedICE北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构8ARM处理器的分类基于处理器内核的分类ARM7T,ARM7E,ARM9,ARM9E,ARM10T,ARM10E,ARM11基于指令集体系结构的分类v4T,v5T,v5TE,v5TEJ,v6,Cortex北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构9ARMCore(ARM核)处理器核/整数核(ProcessorCore/IntegerCore):ARM7TDMI,ARM9TDMI,ARM9E-S,ARM10TDMI,ARM10E等。ARMCPU核(ARMCPUCores):ARM710T/720T/740T,ARM920T/940T,ARM946E-S,ARM966E-S,ARM1020E等。基于ARMCore的微控制器,比如:Intel的pxa25x,Philip的lpc22xx系列,Samsung的S3C44B0等。北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构10ARM7T和ARM7EFamilyUnifiedCache内存管理流水线级别ThumbDSPJazelle无无无ARM710T/720T8kMMU3有无无无无ARM740T8k或4kProtectionUnit3有无ARM7TDMI无无3有ARM7TDMI-S无无3有ARM7EJ-S无无3有有有北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构11ARM9FamilyCache内存管理流水线级别ThumbDSPJazelle无无无无无无无无ARM9TDMI无无5有ARM920T16K/16kMMU5有ARM922T8k/8kMMU5有ARM940T4k/4kProtectionUnit5有北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构12ARM9EFamilyCache内存管理流水线级别ThumbDSPJazelle有无无无无有有有ARM9E-S无无5有ARM946E-S4k-1M/4k-1MProtectionUnit5有ARM968E-S无无5有ARM966E-S无无5有ARM9EJ-S无无5/6有有有ARM926EJ-S14k-128k/4k-128kMMU5/6有有有北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构13ARM10EJ-S无无6有有有ARM1026EJ-S0,4-128k/0,4-128kMMU6有有有Cache内存管理流水线级别ThumbDSPJazelleARM10E无无6有有无无无有有ARM1020E32k/32kMMU6有ARM1022E16k/16kMMU6有ARM10TDMI无无6有无无ARM1020T32k/32kMMU6有无无ARM10E和ARM10TFamily北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构14ARM11FamilyCache内存管理流水线级别ThumbDSPJazelle浮点运算有无有ARM1156T2-S可配置9Thumb-2有无无ARM1156T2F-S可配置9Thumb-2有无有有有有ARM1136J-S4-64kMMU8有ARM1136JF-S4-64kMMU8有北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构15SA-1110内核SA-116kI-Cache+8kD-CacheI-MMU+D-MMUPxa25x/26x内核XScale7/8级流水线32kI-Cache+32kD-CacheI-MMU+D-MMUStrongARM和XScale北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构16北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构17ThumbDSPJazelleMediaTrustZoneThumb-2v4StrongARMARM7T,ARM9v5T*ARM10T,XScaleARM9E,ARM10EARM7EJ,ARM9EJ,ARM10EJARM1136J(F)-SARM1156T2(F)-Sv5TEJ***v6Z*****v6T2*****v4T*v5TE**v6****注:v5T支持的Thumb是对v4T中的Thumb的扩展指令集体系结构(ISA)北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构18指令集体系结构北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构19Section2ARM体系结构基本知识北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构20内容提纲本章的主要内容:ARM微处理器的工作状态ARM体系结构的存储器格式ARM微处理器的指令长度及数据类型ARM微处理器的工作模式ARM体系结构的寄存器组织北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构21预备知识首先对字(Word)、半字(Half-Word)、字节(Byte)的概念作一个说明:字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位。半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构22ARM微处理器的工作状态从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;第二种为Thumb状态,此时处理器执行16位的半字对齐的Thumb指令。当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构23ARM微处理器的状态切换状态切换方法:ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但ARM微处理器在开始执行代码时,应该处于ARM状态。进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。此外,当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构24ARM体系结构的存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式,具体说明如下:北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构25大端格式大端格式在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图所示:北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构26小端格式小端格式与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图所示:北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构27指令长度及数据类型ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。ARM微处理器中支持三种数据类型:字节(8位)半字(16位)字(32位)其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构28ARM处理器的工作模式ARM微处理器支持7种运行模式,分别为:用户模式(usr):ARM处理器正常的程序执行状态快速中断模式(fiq):用于高速数据传输或通道处理外部中断模式(irq):用于通用的中断处理管理模式(svc):操作系统使用的保护模式(复位或软中断)数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。系统模式(sys):运行具有特权的操作系统任务。未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构29工作模式分类ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(PrivilegedModes);其中除去用户模式和系统模式以外的5种又称为异常模式(ExceptionModes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构30ARM的寄存器ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R0~R14、程序计数器PC、一个或两个状态寄存器都是可访问的。北京亚嵌教育研究中心(AKAE)-专业的嵌入式技术培训机构31ARM寄存器组织全图User/S