1ARM处理器系统应用与开发第一章ARM嵌入式微处理器概述1.1ARM处理器特点与分类核体系结构ARM7TDMI,ARM710T,ARM720TARM740TV4TStrongARM,ARM8,ARM810V4ARM9TDMI,ARM920T,ARM940TV4TARM9E-SV5TEARM10TDMI,ARM1020EV5TEARM11,ARM1156T2-S,ARM1156T2F-S,ARM1176JZ-S,ARM11JZF-SV6Cortex–A15,Cortex–A9,Cortex–A8,A7,A5V7ACortex–R系列V7RCortex–M系列V7MARM发展历程ARM微处理器系列ARM7微处理器系列ARM9微处理器系列ARM9E微处理器系列ARM10E微处理器系列ARM11系列Cortex系列SecurCore系列Intel的Xscale系列Inter的StrongARMARM9微处理器系列Cache内存管理流水线级别ThumbDSPJazelleARM9TDMI无无5有无无ARM920T16K/16kMMU5有无无ARM922T8k/8kMMU5有无无ARM9的时钟频率比ARM7更高,在同样的加工工艺下,ARM9TDMI处理器的时钟频率是ARM7TDMI的1.8~2.2倍。ARM9E微处理器系列Cache内存管理流水线级别ThumbDSPJazelleARM926EJ-S4KB~128KBMMU5/6有有有ARM946E-S4KB~1MBMPU5有有无ARM966E-S无无5有有无ARM968E-S无无5有有无ARM996HS无MPU5/6有有无ARM10E微处理器系列Cache内存管理流水线级别ThumbDSPJazelleARM1020E32KBMMU6有有无ARM1022E16KBMMU6有有有ARM1026EJ-S4~128KBMMU6有有有ARM11微处理器系列Cache内存管理流水线级别ThumbDSPJazelle浮点运算ARM1136J-S4~64KBMMU8有有有无ARM1135JF-S4~64KBMMU8有有有有ARM1156T2-S可配置9Thumb-2有无无ARM1156T2F-S可配置9Thumb-2有无有ARM1176JZ-S可配置9Thumb-2有有无ARM1176JZF-S可配置9Thumb-2有有有ARM11系列微处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构——ARMv6的第一代设计实现。Cortex微处理器系列Cortex系列微处理器属于ARMv7架构,这是ARM公司最新的指令集架构。Cortex处理器类型包括:Cortex-M3Cortex-A15、9、8、7、5Cortex-R4、R4F、R5、R7Cortex微处理器系列Cortex-M3采用ARMv7-M架构,它包括所有的16位Thumb指令集和基本的32位Thumb-2指令集架构,单片机的完美替代品Cortex-A15四核芯片,2.5GHz,支持超过4GB的内存,应用于高级智能手机、移动计算、高端数字家庭娱乐、无线基础结构、低功耗服务器。Cortex-A15内核智能手机,是当前的高级智能手机性能的五倍。应用选型ARM处理器选型的几个关键因素:是否需要支持操作系统——内核版本ARM9以后多带有MMU单元,以实现对操作系统的支持。处理能力要求——系统时钟在很大程度上决定了微处理器的处理能力。常见的ARM7芯片系统主时钟频率为20~133MHz常见的ARM9芯片的系统主时钟频率为100~233MHz应用选型(续)芯片内存储器容量的要求——绝对大多数ARM处理器都在片内集成有存储单元,但容量各有区别。片内扩展模块的选择——几乎所有的ARM芯片均需要根据各自不同的应用领域,扩展相关功能模块,并集成在芯片内部,称之为片内扩展模块。多芯核结构的选择——某些供应商提供的ARM芯片内置多个处理器内核。如ARM+DSP、ARM+FPGA、ARM+ARM等处理器封装的选择——ARM芯片现在主要的封装有QFP、TQFP、PQFP、LQFP、BGA、LBGA等形式。1.2ARM微处理器体系结构1.2.1ARM处理器状态处理器状态ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处理器的状态:ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;Thumb状态:16位,处理器执行半字方式的Thumb指令。2.4ARM处理器状态状态切换的一个例子使用BX指令将ARM内核的操作状态在ARM状态和Thumb状态之间进行切换。ARM指令集Thumb指令集指令集关系1.2.2ARM处理器的运行模式ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式。ARM微处理器的工作模式◆►usr:ARM处理器正常的程序执行状态►fiq:用于高速数据传输或通道处理►irq:用于通用的中断处理►svc:操作系统使用的保护模式►abt:用于虚拟存储及存储保护►sys:运行具有特权的操作系统任务►und:当出现未定义指令终止时进入该模式1.2.3ARM体系结构的存储器格式ARM微处理器的存储器格式◆►ARM体系结构所支持的最大寻址空间为4GB(232字节)►ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。►ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式ARM微处理器的存储器格式ARM微处理器的存储器格式—大端格式◆►在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中ARM微处理器的存储器格式ARM微处理器的存储器格式—小端格式◆►与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节1.2.4ARM的寄存器组织在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。ARM状态各模式下的寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_scvR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR-SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。1.2.4ARM的寄存器组织在Thumb状态各模式下实际访问的寄存器Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0~R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);当前程序状态寄存器(CPSR)。ARM状态Thumb寄存器在ARM状态寄存器上的映射R0R1R2R3R4R5R6R7R8R9R10R11R12堆栈指针(R13)连接寄存器(R14)程序计数器(R15)CPSRSPSRR0R1R2R3R4R5R6R7堆栈指针(SP)连接寄存器(LR)程序计数器(PC)CPSRThumb状态Thumb状态R0~R7与ARM状态R0~R7相同;1Thumb状态CPSR(无SPSR)与ARM状态CPSR相同。5Thumb状态SP映射到ARM状态R13;2Thumb状态LR映射到ARM状态R14;3Thumb状态PC映射到ARM状态R15(PC);4低端寄存器高端寄存器在Thumb状态中,高端寄存器的访问是受到限制的,只有MOV、CMP和ADD指令可以对其访问,可以用于数据的快速暂存。1.2.5异常处理异常简介只要正常的程序流被暂时中止,处理器就进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常。异常入口/出口汇总下表所示为异常返回地址值以及退出异常处理程序所推荐使用的指令。异常或入口返回指令返回地址SWIMOVSPC,R14_svcR14未定义的指令MOVSPC,R14_undR14预取中止SUBSPC,R14_abt,#4R14-4快速中断SUBSPC,R14_fiq,#4R14-4中断SUBSPC,R14_irq,#4R14-4数据中止SUBSPC,R14_abt,#8R14-8复位无-1.2.5ARM体系的异常异常向量表地址异常进入时的模式进入时I的状态进入时F的状态0x00000000复位管理禁止禁止0x00000004未定义指令未定义IF0x00000008软件中断异常管理禁止F0x0000000C中止(预取)中止IF0x00000010中止(数据)中止IF0x00000014保留保留--0x00000018IRQ中断禁止F0x0000001CFIQ快速中断禁止禁止注:表中的I和F表示不对该位有影响,保留原来的值。1.2.5ARM体系的异常异常优先级当多个异常同时发生时,一个固定的优先级决定系统处理它们的顺序。优先级异常1复位2数据中止3FIQ4IRQ5预取指中止6未定义指令中止6软件中断异常优先级由高到低S3C2440处理器介绍三星ARM处理器介绍S3C44B0:ARM7TDMI、66MHz、集成LCD控制器(支持STN,但不支持TFT)、无网络接口;适用产品:POS、PDA、E-BOOK、GPS、智能电话、电子书包、机顶盒,手持游戏机等等。160LQFP,160FBGA。支持LINUX、PSOS、uC/OSII等。S3C2410:ARM920T、200MHz、支持TFT、USBHOST、USBDEVICE、SDCard以及MMC接口、触摸屏接口,NANDFLASH直接引导。无网络接口。适用产品:POS、PDA、E-BOOK、GPS、智能电话、电子书包、机顶盒,手持游戏机、电子相册、多媒体产品、视频监控、智能控制仪表等等。272BGA。支持WINCE、LINUX、VxWorks等。三星ARM处理器介绍S3C2440:ARM920T、400~533MHz、支持TFT、USBHOST、DEVICE、SDCard以及MMC接口、触摸屏接口、AC’97CODEC、8通道10bitADC、照相机接口、289-FBGA,S3C2440CPU支持包括微软WindowsCE、PalmOS、Symbian和Linux等操作系统S3C2440功能特点S3C2440是三星公司开发的一款基于ARM920T内核和0.18umCMOS工艺的16/32位RISC微处理器,适用于低成本、低功耗、高性能的手持设备或其它电子产品。S3C2440中集成了以下一些通用的系统外设和接口:1.8V内核电压,3.3V存储电压,3.3VI/O电压。包括16KB的I-Cache(指令高速缓存)、16KB的D-Cache(数据高速缓存)和MMU(存储管理单元)外部的存储控制器(SDRAM控制器和片选逻辑)LCD控制器(最高支持4K色的STN和16M色的TFT),包括一个LCDDMA4个带外部请求管脚的D