初稿Cortex-M3权威指南第1章合资一一它们分别是苹果电脑,Acorn电脑公司,以及VLSI技术(公司)。在1991年,ARM推出了ARM6处理器家族,VLSI则是第一个吃螃蟹的人。后来,陆续有其它巨头:包括TI,NEC,Sharp,ST等,都获取了ARM授权,它们真正地把ARM处理器大面积地辅开,使得ARM处理器在手机,硬盘控制器,PDA,家庭娱乐系统以及其它消费电子中都大展雄才。现如今,ARM芯片的出货量每年都比上一年多20亿片以上。不像很多其它的半导体公司ARM从不制造和销售具体的处理器芯片。取而代之的,是ARM把处理器的设计授权给相关的商务合作伙伴,让他们去根据自已的强项设计具体的芯片,这些伙伴可都是巨头啊。基于ARM低成本和高效的处理器设计方案,得到授权的厂商生产了多种多样的的处理器、单片机以及片上系统(SoC)。这种商业模式就是所谓的"知识产权授权"。除了设计处理器,ARM也设计系统级IP和软件IP。为了挺它们,ARM开发了许多配套的基础开发工具、硬件以及软件产品。使用这些工具,合作伙伴可以更加舒心地开发他们自已的产品。ARM的各种架构版本ARM十几年如一日地开发新的处理器内核和系统功能块。这些包括流行的ARM7TDMI处理器,还有更新的高档产品ARM1176TZ(F)-S处理器,后者能拿去做高档手机。功能的不断进化,处理水平的持续提高,年深日久造就了一系列的ARM架构。要说明的是,架构版本号和名字中的数字并不是一码事。比如,ARM7TDMI是基于ARMv4T架构的(T表示支持"Thumb指令"):ARMv5TE架构则是伴随着ARM9E处理器家族亮相的。ARM9E家族成员包括ARM926E-S和ARM946E-S。ARMv5TE架构添加了“服务于多媒体应用增强的DSP指令”。后来又出了ARM11,ARM11是基于ARMv6架构建成的。基于ARMv6架构的处理器包括ARM1136J(F)-S,ARM1156T2(F)-S,以及ARM1176JZ(F)-S。ARMv6是ARM进化史上的一个重要单程碑:从那时候起,许多突破性的新技术被引进,存储器系统加入了很多的薪新的特性,单指令流多数据流(SIMD)指令也是从v6开始首次引入的。而最前卫的新技术,就是经过优化的Thumb-2指令集,它专为低成本的单片机及汽车组件市场。ARMv6的设计中还有另一个重大的决定:虽然这个架构要能上能下,从最低端的MCU到最高端的“应用处理器”都通吃,但不能因此就这也会,那也会,但就是都不精。仍须定位准确,使处理器的架构能胜任每个应用领域。结果就是,要使ARMv6能够灵活地配置和剪裁。对手成本敏感市场,要设计一个低门数的架构,让她有极强的确定性:另一方面,在高端市场上,不管是要有丰富功能的还是要有高性能的,都要有拿得出手的好东西。最近的几年,基于从ARMv6开始的新设计理念,ARM进一步扩展了它的CPU设计,成果就是ARMv7架构的闪亮登场。在这个版本中,内核架构首次从单一款式变成3种款式。●款式A:设计用于高性能的“开放应用平台”一一越来越接近电脑了款式R:用于高端的嵌入式系统,尤其是那些带有实时要求的一一又要快又要实时。款式M:用于深度嵌入的,单片机风格的系统中一一本书的主角。让我们再进距离地考察这3种款式:·款式A(ARMv7-A):需要运行复杂应用程序的"应用处理器[详1]。支持大型嵌入式操作系统(不一定实时一一译注),比如Symbian(诺基亚智能手机用),Linux,以及微软的WindowsCE和智能手机操作系统WindowsMobile。这些应用需要劲爆的处理性能,并且需要硬件MMU实现的完整而强大的虚拟内存机制,还基本上会配有Java支持,有时还要求一个安全程序执行环境(用于电子商务一一译注)。典型的产品包括高端手机和手持仪器,电子钱包以及金融事务处理机。[译注1」:这里的“应用”尤指大型应用程序,像办公软件,导航软件,网页浏览器等。这些软件的使用习惯和开发模式都很像PC上的软件,但是基本上没有实时要求。19
Cortex‐M3 权威指南 初稿 第 1 章 合资——它们分别是苹果电脑,Acorn电脑公司,以及VLSI技术(公司)。在1991年,ARM推 出了ARM6处理器家族,VLSI则是第一个吃螃蟹的人。后来,陆续有其它巨头:包括TI, NEC, Sharp, ST等,都获取了ARM授权,它们真正地把ARM处理器大面积地辅开,使得ARM处理器 在手机,硬盘控制器,PDA,家庭娱乐系统以及其它消费电子中都大展雄才。 现如今,ARM芯片的出货量每年都比上一年多20亿片以上。不像很多其它的半导体公司, ARM从不制造和销售具体的处理器芯片。取而代之的,是ARM把处理器的设计授权给相关的 商务合作伙伴,让他们去根据自己的强项设计具体的芯片,这些伙伴可都是巨头啊。基于 ARM低成本和高效的处理器设计方案,得到授权的厂商生产了多种多样的的处理器、单片机 以及片上系统(SoC)。这种商业模式就是所谓的“知识产权授权”。 除了设计处理器,ARM也设计系统级IP和软件IP。为了挺它们,ARM开发了许多配套的 基础开发工具、硬件以及软件产品。使用这些工具,合作伙伴可以更加舒心地开发他们自己 的产品。 ARM的各种架构版本 ARM十几年如一日地开发新的处理器内核和系统功能块。这些包括流行的ARM7TDMI处 理器,还有更新的高档产品ARM1176TZ(F)‐S处理器,后者能拿去做高档手机。功能的不断进 化,处理水平的持续提高,年深日久造就了一系列的ARM架构。要说明的是,架构版本号和 名字中的数字并不是一码事。比如,ARM7TDMI是基于ARMv4T架构的(T表示支持“Thumb 指令”);ARMv5TE架构则是伴随着ARM9E处理器家族亮相的。ARM9E家族成员包括ARM926E‐S 和ARM946E‐S。ARMv5TE架构添加了“服务于多媒体应用增强的DSP指令”。 后来又出了ARM11,ARM11是基于ARMv6架构建成的。基于ARMv6架构的处理器包括 ARM1136J(F)‐S,ARM1156T2(F)‐S,以及ARM1176JZ(F)‐S。ARMv6是ARM进化史上的一个重要 里程碑:从那时候起,许多突破性的新技术被引进,存储器系统加入了很多的崭新的特性, 单指令流多数据流(SIMD)指令也是从v6开始首次引入的。而最前卫的新技术,就是经过 优化的Thumb‐2指令集,它专为低成本的单片机及汽车组件市场。 ARMv6的设计中还有另一个重大的决定:虽然这个架构要能上能下,从最低端的MCU 到最高端的“应用处理器”都通吃,但不能因此就这也会,那也会,但就是都不精。仍须定位 准确,使处理器的架构能胜任每个应用领域。结果就是,要使ARMv6能够灵活地配置和剪裁。 对于成本敏感市场,要设计一个低门数的架构,让她有极强的确定性;另一方面,在高端市 场上,不管是要有丰富功能的还是要有高性能的,都要有拿得出手的好东西。 最近的几年,基于从ARMv6开始的新设计理念,ARM进一步扩展了它的CPU设计,成果 就是ARMv7架构的闪亮登场。在这个版本中,内核架构首次从单一款式变成3种款式。 z 款式A:设计用于高性能的“开放应用平台”——越来越接近电脑了 z 款式R:用于高端的嵌入式系统,尤其是那些带有实时要求的——又要快又要实时。 z 款式M:用于深度嵌入的,单片机风格的系统中——本书的主角。 让我们再进距离地考察这3种款式: z 款式A(ARMv7‐A):需要运行复杂应用程序的“应用处理器” [译注1]。支持大型嵌入式操作 系统(不一定实时——译注),比如Symbian(诺基亚智能手机用),Linux,以及微软 的Windows CE和智能手机操作系统Windows Mobile。这些应用需要劲爆的处理性能,并 且需要硬件MMU实现的完整而强大的虚拟内存机制,还基本上会配有Java支持,有时 还要求一个安全程序执行环境(用于电子商务——译注)。典型的产品包括高端手机和 手持仪器,电子钱包以及金融事务处理机。 [译注1]:这里的“应用”尤指大型应用程序,像办公软件,导航软件,网页浏览器等。这些软件 的使用习惯和开发模式都很像PC上的软件,但是基本上没有实时要求。 19
初稿第1章Cortex-M3权威指南款式R(ARMv7-R):硬实时且高性能的处理器。标的是高端实时[1市场。那些高级?的玩意,像高档轿车的组件,大型发电机控制器,机器手臂控制器等,它们使用的处理器不但要很好很强大,还要极其可靠,对事件的反应也要极其敏捷。款式M(ARMv7-M):认准了旧世代单片机的应用而量身定制。在这些应用中,尤其是S对于实时控制系统,低成本、低功耗、极速中断反应以及高处理效率,都是至关重要的。Cortex系列是v7架构的第一次亮相,其中Cortex-M3就是按款式M设计的。【注1]:通用处理器能否胜任实时系统的控制,常遭受质疑,并且在这方面的争论从没停止过。从定义的角度讲,“实时”就是指系统必须在给定的死线(deadline,亦称作“最后期限”)内做出响应。在一个以ARM处理器为核心的系统中,决定能否达到实时”这个目标的,有很多因素,包括是否使用“实时操作系统”,中断延迟,存储器延时,以及当时处理器是否在运行更高优先级的中断服务例程。本书认准了Cortex-M3就一猛子扎下去。到目前为止,Cortex-M3也是款式M中被抚养成人的独苗。其它Cortex家族的处理器包括款式A的Cortex-A8(应用处理器),款式R的Cortex-R4(实时处理器)。ArchitectureArchitectureArchitectureArchitectureV4/v4Tv5/v5Ev6V7v7-A(Application;e.g.,Cortex-A8)V7-R (Real-Timee.g.,Cortex-R4)V7-M(Microcontroller;ARM 1136,e.g.,Cortex-M3)1176ARM9261156T-2946.966ARM 7TDMI, ;IntelXScale920TExamplesIntelStrongARM图1.2ARM处理器架构进化史ARMv7-M的私房秘密都记录在《TheARMv7-MArchitectureApplicationLevelReferenceManual》中(本书也讲了很多"SystemLevel"的内容一一译注),ARM已经将其公开。《CortexM3TechnicalReferenceManual》中则记录了实现v7-M时的很多细节和花絮。又因为v7M中列出的指令有一些是可选的,而CM3裁掉了一部分,所以在这个文档中重新列出了被CM3支持的指令集。处理器命名法以前,ARM使用一种基于数字的命名法。在早期(1990s),还在数字后面添加字母后缀,用来进一步明细该处理器支持的特性。就拿ARM7TDMI来说,T代表Thumb指令集,D是说支持JTAG调试(Debugging),M意指快速乘法器,I则对应一个嵌入式ICE模块。后来,这4项基本功能成了任何新产品的标配,于是就不再使用这4个后缀一一相当于默许了。但是新的后缀不断加入,包括定义存储器接口的,定义高速缓存的,以及定义“紧耦合存储器(TCM)”的,于是形成了新一套命名法,这套命名法也是一直在使用的。20
Cortex‐M3 权威指南 初稿 第 1 章 z 款式R(ARMv7‐R):硬实时且高性能的处理器。标的是高端实时[注1]市场。那些高级 的玩意,像高档轿车的组件,大型发电机控制器,机器手臂控制器等,它们使用的处理 器不但要很好很强大,还要极其可靠,对事件的反应也要极其敏捷。 z 款式M(ARMv7‐M):认准了旧世代单片机的应用而量身定制。在这些应用中,尤其是 对于实时控制系统,低成本、低功耗、极速中断反应以及高处理效率,都是至关重要的。 Cortex系列是v7架构的第一次亮相,其中Cortex‐M3就是按款式M设计的。 [注1]:通用处理器能否胜任实时系统的控制,常遭受质疑,并且在这方面的争论从没停止过。从定义的 角度讲,“实时”就是指系统必须在给定的死线(deadline,亦称作“最后期限”)内做出响应。在一个以ARM 处理器为核心的系统中,决定能否达到“实时”这个目标的,有很多因素,包括是否使用“实时操作系统”, 中断延迟,存储器延时,以及当时处理器是否在运行更高优先级的中断服务例程。 本书认准了Cortex‐M3就一猛子扎下去。到目前为止,Cortex‐M3也是款式M中被抚养成 人的独苗。其它Cortex家族的处理器包括款式A的Cortex‐A8(应用处理器),款式R的Cortex‐R4 (实时处理器)。 图1.2 ARM处理器架构进化史 ARMv7‐M的私房秘密都记录在《The ARMv7‐M Architecture Application Level Reference Manual》中(本书也讲了很多“System Level”的内容——译注),ARM已经将其公开。《Cortex M3 Technical Reference Manual》中则记录了实现v7‐M时的很多细节和花絮。又因为v7M中列 出的指令有一些是可选的,而CM3裁掉了一部分,所以在这个文档中重新列出了被CM3支持 的指令集。 处理器命名法 以前,ARM使用一种基于数字的命名法。在早期(1990s),还在数字后面添加字母后 缀,用来进一步明细该处理器支持的特性。就拿ARM7TDMI来说,T代表Thumb指令集,D是 说支持JTAG调试(Debugging),M意指快速乘法器,I则对应一个嵌入式ICE模块。后来,这4 项基本功能成了任何新产品的标配,于是就不再使用这4个后缀——相当于默许了。但是新 的后缀不断加入,包括定义存储器接口的,定义高速缓存的,以及定义“紧耦合存储器(TCM)” 的,于是形成了新一套命名法,这套命名法也是一直在使用的。 20
初稿第1章Cortex-M3权威指南表1.1ARM处理器名字其它特性处理器名字架构版本号存储器管理特性ARM7TDMIV4TARM7TDMI-Sv4TDSPJazelle(净3)V5EARM7EJ-SARM920Tv4TMMUARM922Tv4TMMUV5EMMUDSPJazelleARM926EJ-SDSPARM946E-Sv5EMPUv5EDSPARM966E-SV5EARM968E-SDMA,DSPDSPV5EMPU(可选)ARM966HSV5EMMUDSPARM1020EDSPV5EMMUARM1022EMMU或MPu(呼注2]ARM1026EJ-SV5EDSP,Jazellev6MMUDSP,JazelleARM1136J(F)-Sv6ARM1176JZ(F)-SMMU+TrustZoneDSP,Jazellev6DSPARM11MPCoreMMU+多处理器缓存支持DSPv6MPUARM1156T2(F)-SNVICCortex-M3v7-MMPU(可选)V7-RMPUDSPCortex-R4Cortex-R4FV7-RMPUDSP+浮点运算V7-ACortex-A8MMU+TrustZoneDSP,Jazelle[译注2]]:Jazelle是ARM处理器的硬件Java加速器。[译注3]:MMU,存储器管理单元,用于实现虚拟内存和内存的分区保护,这是应用处理器与嵌入式处理器的分水岭。电脑和数码产品所使用的处理器几乎清一色地都带MMU。但是MMU也引入了不确定性,这有时是嵌入式领域一一尤其是实时系统不可接受的。然而对于安全关键(safety-critical)的嵌入式系统,还是不能没有内存的分区保护的。为解决矛盾,于是就有了MPU。可以把MPU认为是MMU的功能子集,它只支持分区保护,不支持具有“定位决定性"的虚拟内存机制。到了架构7时代,ARM改革了一度使用的,几长的、需要“解码"的数字命名法,转到另一种看起来比较整齐的命名法。比如,ARMv7的三个款式都以Cortex作为主名。这不仅更加澄清并且“精装”了所使用的ARM架构,也避免了新手对架构号和系列号的混淆。例如,ARM7TDMI并不是一款ARMv7的产品,而是辉煌起点一一v4T架构的产品。指令系统的开发为了增强和扩展指令系统的能力而奋斗,多少年来这一直是ARM锲而不舍的精神动力。由于历史原因(从ARM7TDMI开始),ARM处理器一直支持两种形式上相对独立的指令集,它们分别是::32位的ARM指令集。对应处理器状态:ARM状态21
Cortex‐M3 权威指南 初稿 第 1 章 表1.1 ARM处理器名字 处理器名字 架构版本号 存储器管理特性 其它特性 ARM7TDMI v4T ARM7TDMI‐S v4T ARM7EJ‐S v5E DSP,Jazelle[译注3] ARM920T v4T MMU ARM922T v4T MMU ARM926EJ‐S v5E MMU DSP,Jazelle ARM946E‐S v5E MPU DSP ARM966E‐S v5E DSP ARM968E‐S v5E DMA,DSP ARM966HS v5E MPU(可选) DSP ARM1020E v5E MMU DSP ARM1022E v5E MMU DSP ARM1026EJ‐S v5E MMU 或 MPU[译注2] DSP, Jazelle ARM1136J(F)‐S v6 MMU DSP, Jazelle ARM1176JZ(F)‐S v6 MMU+TrustZone DSP, Jazelle ARM11 MPCore v6 MMU+多处理器缓存 支持 DSP ARM1156T2(F)‐S v6 MPU DSP Cortex‐M3 v7‐M MPU(可选) NVIC Cortex‐R4 v7‐R MPU DSP Cortex‐R4F v7‐R MPU DSP+浮点运算 Cortex‐A8 v7‐A MMU+TrustZone DSP, Jazelle [译注2]:Jazelle是ARM处理器的硬件Java加速器。 [译注3]:MMU,存储器管理单元,用于实现虚拟内存和内存的分区保护,这是应用处理器与嵌入式处 理器的分水岭。电脑和数码产品所使用的处理器几乎清一色地都带MMU。但是MMU也引入了不确定性, 这有时是嵌入式领域——尤其是实时系统不可接受的。然而对于安全关键(safety‐critical)的嵌入式系统, 还是不能没有内存的分区保护的。为解决矛盾,于是就有了MPU。可以把MPU认为是MMU的功能子集,它 只支持分区保护,不支持具有“定位决定性”的虚拟内存机制。 到了架构7时代,ARM改革了一度使用的,冗长的、需要“解码”的数字命名法,转到另 一种看起来比较整齐的命名法。比如,ARMv7的三个款式都以Cortex作为主名。这不仅更加 澄清并且“精装”了所使用的ARM架构,也避免了新手对架构号和系列号的混淆。例如, ARM7TDMI并不是一款ARMv7的产品,而是辉煌起点——v4T架构的产品。 指令系统的开发 为了增强和扩展指令系统的能力而奋斗,多少年来这一直是ARM锲而不舍的精神动力。 由于历史原因(从ARM7TDMI开始),ARM处理器一直支持两种形式上相对独立的指令 集,它们分别是: z 32位的ARM指令集。对应处理器状态:ARM状态 21
初稿第1章Cortex-M3权威指南16位的Thumb指令集。对应处理器状态:Thumb状态可见,这两种指令集也对应了两种处理器执行状态。在程序的执行过程中,处理器可以动态地在两种执行状态之中切换。实际上,Thumb指令集在功能上是ARM指令集的一个子集,但它能带来更高的代码密度,给目标代码减肥。这对于要勒紧裤腰带的应用还是很经济的。v4V4Tv5V5Ev6V7SIMD新加入开始支持v6增强型存储器DSP指令ARMThumb-2Thumb指令集问世[译注1]Thumb问世架构演进图图1.3指令集演进图译注1:原书把Thumb-2的问世时间放到v7中,但根据其它权威文献的记录,似有误,应在v6中问世。(如《ARMandThumb-2InstructionSetQuickReferenceCard》中的描述)随着架构版本号的更新,新好指令不断地加入ARM和Thumb指令集中。附录2中给出的内容,就是Thumb指令在架构进化过程中的改变记录。Thumb-2是2003年盛夏的果实,它是Thumb的超集,它支持both16位和32位指令。指令集的详细说明在《TheARMArchitectureReferenceManual》(简称为ARMARM)中。每次ARM出新版本时此手册都有更新。到了v7时,因为以前的单一架构被分成了3个款式,这个规格书也就跟着变成了3本。为Corex-M3的ARMv7-M架构而写的那本叫《ARMv7-MArchitectureApplicationLevelReferenceManual(Ref2)》,对于软件开发人员,那里面把该说的都说了。Thumb-2指令集体系体系结构(ISA)Thumb-2真不愧是一个突破性的指令集。它强大,它易用,它轻桃,它高效。Thumb-2是16位Thumb指令集的一个超集,在Thumb-2中,16位指令首次与32位指令并存,结果在Thumb状态下可以做的事情一下子丰富了许多,同样工作需要的指令周期数也明显下降。22
Cortex‐M3 权威指南 初稿 第 1 章 z 16位的Thumb指令集。对应处理器状态:Thumb状态 可见,这两种指令集也对应了两种处理器执行状态。在程序的执行过程中,处理器可以 动态地在两种执行状态之中切换。实际上,Thumb指令集在功能上是ARM指令集的一个子集, 但它能带来更高的代码密度,给目标代码减肥。这对于要勒紧裤腰带的应用还是很经济的。 图1.3 指令集演进图 译注1: 原书把Thumb‐2的问世时间放到v7中,但根据其它权威文献的记录,似有误,应在v6中问 世。(如《ARM and Thumb‐2 Instruction Set Quick Reference Card》中的描述) 随着架构版本号的更新,新好指令不断地加入ARM和Thumb指令集中。附录2中给出的 内容,就是Thumb指令在架构进化过程中的改变记录。Thumb‐2是2003年盛夏的果实,它是 Thumb的超集,它支持both 16位和32位指令。 指令集的详细说明在《The ARM Architecture Reference Manual》(简称为ARMARM)中。 每次ARM出新版本时此手册都有更新。到了v7时,因为以前的单一架构被分成了3个款式, 这个规格书也就跟着变成了3本。为Corex‐M3的ARMv7‐M架构而写的那本叫《ARMv7‐M Architecture Application Level Reference Manual(Ref2)》,对于软件开发人员,那里面把该说 的都说了。 Thumb-2指令集体系体系结构(ISA) Thumb‐2真不愧是一个突破性的指令集。它强大,它易用,它轻佻,它高效。Thumb‐2 是16位Thumb指令集的一个超集,在Thumb‐2中,16位指令首次与32位指令并存,结果在 Thumb状态下可以做的事情一下子丰富了许多,同样工作需要的指令周期数也明显下降。 22
初稿Cortex-M3权威指南第1章Thumb-2InstructionSet(32-bit and 16-bit)Cortex-M3ThumbInstructions(16-bit)图1.4Thumb-2指令集与Thumb指令集的关系从图中可见,Cortex-M3勇敢地拒绝了32位ARM指令集,却把自已的处理能力以身相许般地全托给Thumb-2指令集。这可能有些令人意外,但事实上这却见证了Cortex-M3的用情专一:在内核水平上,就已经为适应单片机和小内存器件而扶择、取舍过了。但她没有嫁错郎,因为Thumb-2完全胜任在这个领域挑大梁。不过,这也意味着Cortex-M3作为新生代处理器,不是向后兼容的。因此,为ARM7写的ARM汇编语言程序不能直接移植到CM3上来。不过,CM3支持绝大多数传统的Thumb指令,因此用Thumb指令写的汇编程序就从善如流了。在支持了both16位和32位指令之后,就无需烦心地把处理器状态在Thumb和ARM之间来回的切换了。这种事在ARM7和ARM9是司空见惯的,尤其是在使用大型条件嵌套,以及执行复杂运算的时候,能精妙地游走于不同状态之间,那可是当年要成为大虾的基本功。Cortex-M3是ARMv7架构的掌上明珠。和曾经红透整个业界的老一辈ARM7相比,Cortex-M3则是新生代的偶像,处处闪耀着青春的光芒活力。比如,硬件除法器被带到CM3中:乘法方面,也有好几条新指令闪亮登场,用于提升data-crunching的性能。CM3的出现,还在ARM处理器中破天荒地支持了“非对齐数据访问支持”。Cortex-M3处理器的舞台高性能十高代码密度十小硅片面积,3璧合一,使得CM3大面积地成为理想的处理平台:·低成本单片机:CM3与生俱来就适合做单片机,甚至简单到用于做玩具和小电器的单片机,都能使用CM3作为内核。这里本是8位机和16位机统治最牢固的腹地,但是CM3更便宜,更高性能,更易使用,所以值得开发者们转到这个新生的ARM32位系统中来,哪怕花点时间重新学习。汽车电子:CM3也是汽车电子的好。CM3同时拥有非常高的性能和极低的中断延迟,6打入实时领域的大门。CM3处理器能支持多达240个外部中断,内建了嵌套向量中断控制器,还可以选择配上一个存储器保护单元(MPU)。所有这些,使它用于高集成度低成本的汽车应用最合适不过了。数据通信:CM3的低成本十高效率,再加上Thumb-2的强大位操作指令s,使CM3非常理0想地适合于很多数据通信应用,尤其是无线数传和Ad-Hoc网络,如ZigBee和蓝牙等。工业控制:在工控场合,关键的要素在于简洁、快速响应以及可靠。再一次地,CM3O处理器的中断处理能力,低中断延迟,强化的故障处理能力(fault-handing,以后fault就不再译成中文了一一译注),足以让它能昂首挺胸地踏入这片热土。?消费类产品:以往,在许多消费产品中,都必须使用一块甚至好几块高性能的微处理器。23
Cortex‐M3 权威指南 初稿 第 1 章 图1.4 Thumb-2指令集与Thumb指令集的关系 从图中可见,Cortex‐M3勇敢地拒绝了32位ARM指令集,却把自己的处理能力以身相许 般地全托给Thumb‐2指令集。这可能有些令人意外,但事实上这却见证了Cortex‐M3的用情专 一:在内核水平上,就已经为适应单片机和小内存器件而抉择、取舍过了。但她没有嫁错郎, 因为Thumb‐2完全胜任在这个领域挑大梁。不过,这也意味着Cortex‐M3作为新生代处理器, 不是向后兼容的。因此,为ARM7写的ARM汇编语言程序不能直接移植到CM3上来。不过, CM3支持绝大多数传统的Thumb指令,因此用Thumb指令写的汇编程序就从善如流了。 在支持了both 16位和32位指令之后,就无需烦心地把处理器状态在Thumb和ARM之间来 回的切换了。这种事在ARM7和ARM9是司空见惯的,尤其是在使用大型条件嵌套,以及执行 复杂运算的时候,能精妙地游走于不同状态之间,那可是当年要成为大虾的基本功。 Cortex‐M3是ARMv7架构的掌上明珠。和曾经红透整个业界的老一辈ARM7相比, Cortex‐M3则是新生代的偶像,处处闪耀着青春的光芒活力。比如,硬件除法器被带到CM3 中;乘法方面,也有好几条新指令闪亮登场,用于提升data‐crunching的性能。CM3的出现, 还在ARM处理器中破天荒地支持了“非对齐数据访问支持”。 Cortex-M3处理器的舞台 高性能+高代码密度+小硅片面积,3璧合一,使得CM3大面积地成为理想的处理平台: z 低成本单片机:CM3与生俱来就适合做单片机,甚至简单到用于做玩具和小电器的单片 机,都能使用CM3作为内核。这里本是8位机和16位机统治最牢固的腹地,但是CM3更 便宜,更高性能,更易使用,所以值得开发者们转到这个新生的ARM32位系统中来,哪 怕花点时间重新学习。 z 汽车电子:CM3也是汽车电子的好俅。CM3同时拥有非常高的性能和极低的中断延迟, 打入实时领域的大门。CM3处理器能支持多达240个外部中断,内建了嵌套向量中断控 制器,还可以选择配上一个存储器保护单元(MPU)。所有这些,使它用于高集成度低 成本的汽车应用最合适不过了。 z 数据通信:CM3的低成本+高效率,再加上Thumb‐2的强大位操作指令s,使CM3非常理 想地适合于很多数据通信应用,尤其是无线数传和Ad‐Hoc网络,如ZigBee和蓝牙等。 z 工业控制:在工控场合,关键的要素在于简洁、快速响应以及可靠。再一次地,CM3 处理器的中断处理能力,低中断延迟,强化的故障处理能力(fault‐handing,以后fault 就不再译成中文了——译注),足以让它能昂首挺胸地踏入这片热土。 z 消费类产品:以往,在许多消费产品中,都必须使用一块甚至好几块高性能的微处理器。 23