ARMCortex-M3体系结构与优势北京精仪达盛科技有限公司本讲主要内容:(1)ARM公司与其体系结构概述(2)Cortex-M3体系结构与Stellaris系列简介(3)选择ARM处理器,ARM7还是Cortex-M3(4)我们公司的Cortex-M3产品展示1.1ARM公司与其体系结构概述ARM公司概述ARM产品特点ARM微处理器及其发展ARM公司概述ARM(AdvancedRISCMachines)既是一个公司的名字,也是对一类微处理器的通称,还可以认为是一种技术的名字。ARM公司1991年成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器(即我们通常所说的ARM微处理器),已遍及工业控制、消费类电子产品、通信系统、无线系统等各类产品市场。基于ARM技术的微处理器,其应用占据了32位RISC处理器75%以上的市场份额。ARM技术正在逐步渗透到我们生活的各个方面。将一些在数字电路中常用但比较复杂的功能块(如FIR滤波器、SDRAM控制器、PCI接口等)设计成可修改参数的模块,让其他用户可以直接调用这些模块,这样就大大减轻了工程师的负担,避免重复劳动。ARM公司是专门从事基于RISC技术芯片设计开发的公司。世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得了更多的第三方工具、制造、软件的支持。又使得整个系统成本降低,产品更容易进入市场被消费者接受,更具竞争力。到目前为止,ARM处理器及技术的应用几乎已经深入到各个领域。ARM技术的实际产品展示:——汽车控制系统马达控制器车灯——汽车控制系统尾灯控制系统后车门控制系统前车门控制系统座椅控制系统发动器控制系统ARM产品特点采用RISC架构的ARM微处理器一般具有如下特点:●体积小、功耗低、成本低、性能高;●支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件;●大量使用寄存器,指令执行速度更快;●大多数数据操作都在寄存器中完成;●寻址方式灵活简单,执行效率高;●指令长度固定。ARM微处理器及其发展ARM微处理器的几个系列:ARM7系列、ARM9系列、ARM9E系列、ARM10E系列、SecurCore系列、Intel的XScale系列、Cortex系列。ARM体系结构的发展:(1)V1~V3版本;(2)V4T版本;(3)V5版本;(4)V6版本;(5)V7版本。ARM公司为新的ARMV7架构定义了三大分工明确的系列:“A”系列面向尖端的基于虚拟内存的操作系统和用户应用;“R”系列针对实时系统;“M”系列针对微控制器和低成本应用系统。1.2Cortex-M3内核体系结构Cortex-M3简介Cortex-M3内核结构与优势LuminaryMicro的Stellaris系列Cortex-M3MCU简介Cortex-M3学习中把握什么ARM公司于2005年推出了Cortex-M3内核,就在当年ARM公司与其他投资商合伙成立了Luminary(流明诺瑞)公司,由该公司率先设计、生产与销售基于Cortex-M3内核的ARM芯片——Stellaris(群星)系列ARM。Cortex-M3内核是ARM公司整个Cortex内核系列中的微控制器系列(M)内核,还是其它两个系列分别是应用处理器系列(A)与实时控制处理系列(R),这三个系列又分别简称为A、R、M系列,当然这三个系列的内核分别有各自不同的应用场合。Cortex-M3简介Cortex-M3内核主要是应用于低成本、小管脚数和低功耗的场合,并且具有极高的运算能力和极强的中断响应能力。Cortex-M3处理器采用纯Thumb2指令的执行方式,使得这个具有32位高性能的ARM内核能够实现8位和16位的代码存储密度。ARMCortex-M3处理器是使用最少门数的ARMCPU,核心门数只有33K,在包含了必要的外设之后的门数也只有60K,使得封装更为小型,成本更加低廉。Cortex-M3采用了ARMV7哈佛架构,具有带分支预测的3级流水线,中断延迟最大只有12个时钟周期,在末尾连锁的时候只需要6个时钟周期。同时具有1.25DMIPS/MHZ的性能和0.19mW/MHZ的功耗。MIPS(MillionInstructionsPerSecond)是CPU处理能力的一个指标,它的字面意思是每秒种执行指令的平均条数。MIPS/MHz,也就是系统时钟(CPU的工作时钟)为1M时,平均能够执行的指令数。这里面的D是什么意思?简单说吧:2个CPU,每个CLK都能执行一条指令,这个是相同的,都是“1MIPS/MHz”。但我们让它门做某个处理运算,一个需要执行10条指令完成,而另一个因为指令系统中具备专用的处理这个运算的指令,所以只需要5条指令就行了。故第2个CPU的性能为“2DMIPS/MHz”。可见是一个比值的含义,是相对于某个标准处理器的处理能力比值。可见DMIPS/MHz是一个相对的、综合指标。基于ARMv7架构的Cortex-M3处理器带有一个分级结构。它集成了名为CM3Core的中心处理器内核和先进的系统外设,实现了内置的中断控制、存储器保护以及系统的调试和跟踪功能。这些外设可进行高度配置,允许Cortex-M3处理器处理大范围的应用并更贴近系统的需求。目前Cortex-M3内核和集成部件(右图中所示)已进行了专门的设计,用于实现最小存储容量、减少管脚数目和降低功耗。Cortex-M3内核结构与优势Cortex-M3中央内核基于哈佛架构,指令和数据各使用一条总线(右图中所示)。与Cortex-M3不同,ARM7系列处理器使用冯·诺依曼(VonNeumann)架构,指令和数据共用信号总线以及存储器。由于指令和数据可以从存储器中同时读取,所以Cortex-M3处理器对多个操作并行执行,加快了应用程序的执行速度。Cortex-M3内核包含一个适用于传统Thumb和新型Thumb-2指令的译码器、一个支持硬件乘法和硬件除法的先进ALU、控制逻辑和用于连接处理器其他部件的接口。Cortex-M3内核:内核流水线分3个阶段:取指、译码和执行。当遇到分支指令时,译码阶段也包含预测的指令取指,这提高了执行的速度。处理器在译码阶段期间自行对分支目的地指令进行取指。在稍后的执行过程中,处理完分支指令后便知道下一条要执行的指令。如果分支不跳转,那么紧跟着的下一条指令随时可供使用。如果分支跳转,那么在跳转的同时分支指令可供使用,空闲时间限制为一个周期。Cortex-M3处理器是一个32位处理器,带有32位宽的数据路径,寄存器库和存储器接口。其中有13个通用寄存器,两个堆栈指针,一个链接寄存器,一个程序计数器和一系列包含编程状态寄存器的特殊寄存器。Cortex-M3处理器支持两种工作模式(线程(Thread)和处理器(Handler))和两个等级的访问形式(有特权或无特权),在不牺牲应用程序安全的前提下实现了对复杂的开放式系统的执行。Cortex-M3内核:Cortex-M3处理器是一个存储器映射系统,为高达4GB的可寻址存储空间提供简单和固定的存储器映射,同时,这些空间为代码(代码空间)、SRAM(存储空间),外部存储器/器件和内部/外部外设提供预定义的专用地址。另外,还有一个特殊区域专门供厂家使用。借助bit-banding技术,Cortex-M3处理器可以在简单系统中直接对数据的单个位进行访问。存储器映射包含两个位于SRAM的大小均为1MB的bit-band区域和映射到32MB别名区域的外设空间。在别名区域中,某个地址上的加载/存储操作将直接转化为对被该地址别名的位的操作。对别名区域中的某个地址进行写操作,如果使其最低有效位置位,那么bit-band位为1,如果使其最低有效位清零,那么bit-band位为零。读别名后的地址将直接返回适当的bit-band位中的值。除此之外,该操作为原子位操作,其他总线活动不能对其中断。Cortex-M3存储器映射:传统的位处理方法和Cortex-M3bit-banding的比较:基于传统ARM7处理器的系统只支持访问对齐的数据,只有沿着对齐的字边界才可以对数据进行访问和存储。Cortex-M3处理器采用非对齐数据访问方式,使非对齐数据可以在单核访问中进行传输。当使用非对齐传输时,这些传输将转换为多个对齐传输,但这一过程不为程序员所见。见下面的表中对比:“传统的位处理方法和Cortex-M3bit-banding的比较”嵌套向量中断控制器(NVIC):NVIC是Cortex-M3处理器中一个完整的部分,它可以进行高度配置,为处理器提供出色的中断处理能力。在NVIC的标准执行中,它提供了一个非屏蔽中断(NMI)和32个通用物理中断,这些中断带有8级的抢占优先权。NVIC可以通过综合选择配置为1到240个物理中断中的任何一个,并带有多达256个优先级。Cortex-M3处理器使用一个可以重复定位的向量表,表中包含了将要执行的函数的地址,可供具体的中断处理器使用。中断被接受之后,处理器通过指令总线接口从向量表中获取地址。向量表复位时指向零,编程控制寄存器可以使向量表重新定位。嵌套向量中断控制器(NVIC):可以在硬件中处理堆栈操作,Cortex-M3处理器免去了在传统的C语言中断服务程序中为了完成堆栈处理所要编写的汇编程序包,这使应用程序的开发变得更加简单。Cortex-M3处理器使用末尾连锁(tail-chaining)技术简化了激活的和未决的中断之间的移动。末尾连锁技术把需要用时30个时钟周期才能完成的连续的堆栈弹出和压入操作替换为6个周期就能完成的指令取指,实现了延迟的降低。处理器状态在进入中断时自动保存,在中断退出时自动恢复,比软件执行用时更少,大大提高了频率为100MHz的子系统的性能。Cortex-M3处理器的集成调试功能可以实现快速验证,而无需使用ICE元件。系统可以通过JTAG端口或者两脚串行线(SerialWireDebug)端口进行观察。此外,支持多种开发工具:其中一种解决方案如下:Cortex-M3另一大优势:ARM公司在其Cortex-M3内核中嵌入新的Thumb-2指令集。新的Thumb-2内核技术保留了紧凑代码质量并与现有ARM方案的代码兼容性,提供改进的性能和能量效率。Thumb-2是一种新型混合指令集,融合了16位和32位指令,用于实现密度和性能的最佳平衡。在不对性能进行折中的情况下,节省许多高集成度系统级设计的总体存储成本。Cortex-M3支持的Thumb-2指令(见PDF资料)目标:看到一段汇编的代码时,会去查处相关的指令集,读懂代码的意图/作用即可。Cortex-M3支持的Thumb-2指令:LuminaryMicro(流明诺瑞)公司设计、经销、出售基于ARMCortex-M3的微控制器(MCU)。作为ARM的Cortex-M3技术的主要合伙人,LuminaryMicro已经向业界推出了首颗Cortex-M3处理器的芯片,用8/16位的成本获得了32位的性能。LuminaryMicro的Stellaris(群星)系列微控制器包含运行在50MHz频率下的ARMCortex-M3MCU内核、嵌入Flash和SRAM、一个低压降的稳压器、集成的掉电复位和上电复位功能、模拟比较器、10位ADC、SSI、GPIO、看门狗和通用定时器、UART、IC、运动控制PWM以及正交编码器输入。提供的外设直接通向管脚,没有功能复用,这个丰富的功能集非常适合楼宇和家庭自动化、工厂自动化和控制、工控电源设备、步进电机、有刷和无刷DC马达、和AC感应电动机等应用。LuminaryMicro的Stellaris系列Cortex-M3MCU简介单周期Flash存储,速度高达50MHz!一些竞争对手的ARM7和Cortex-M3有更快的内核速度,但他