第1章 ARM Cortex-M3处理器编程环境与嵌入式系统
1.1 单片机与ARM Cortex-M3处理器
什么是单片机
一台能够工作的计算机要有这样几个部分:CPU(Central Processing Unit,中央处理单元:进行运算、控制)、RAM(Random Access Memory,随机存储器:数据存储)、ROM(Read Only Memory,只读存储器:程序存储)、输入/输出设备(串行口、并行口等)。在个人计算机上这些部分被分成若干块芯片或者插卡,安装一个称为主板的印制线路板上。而在单片机中,这些部分全部被做到一块集成电路芯片中,所以就称为单片机。
单片机的用途
与经常使用的个人计算机、笔记本电脑相比,单片机的功能是很小的,那学它干什么呢?实际生活中并不是任何需要计算机的场合都要求计算机有很高的性能,如空调温度的控制,冰箱温度的控制等都不需要很复杂很高级的计算机。应用的关键是看是否够用,是否有很好的性能价格比。
单片机凭借体积小、质量小、价格便宜等优势,已经渗透到我们生活的各个领域:导弹的导航装置、飞机上各种仪表的控制、工业自动化过程的实时控制和数据处理、广泛使用的各种智能IC卡、小汽车的安全保障系统、录像机、摄像机、全自动洗衣机、程控玩具、电子宠物等。更不用说自动控制领域的机器人、智能仪表和医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用、嵌入式系统设计与智能化控制的科学家、工程师,是成为电子与嵌入式系统工程师必须掌握的基本技能。
嵌入式系统
嵌入式系统是指嵌入到工程对象中能够完成特定功能的计算机系统。嵌入式系统嵌入到对象系统中,并在对象环境下运行。与对象领域相关的操作主要是对外界物理参数进行采集、处理,对对象实现控制,并与操作者进行人机交互等。
与通用计算机系统相比,嵌入式系统有其功能的特殊要求和成本的特殊考虑,从而决定了嵌入式系统在高、中、低端系统三个层次共存的局面。在低端嵌入式系统中,8位单片机从20世纪70年代初期诞生至今还一直在工业生产和日常生活中广泛使用。近些年,中端的16位单片机已应用于汽车电子、工业自动化等领域。鉴于嵌入式应用对象的响应要求、嵌入式系统应用的巨大市场,可以预测,8位单片机、16位单片机仍然是嵌入式应用中的主流机型,而高端的32位单片机正逐渐进入工业生产和日常生活领域。
ARM Cortex-M3系列处理器
ARM即Advanced RISC Machines的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州San Jose VLSI技术公司制造。20世纪80年代后期,ARM很快开发成Acorn的台式机产品。20世纪90年代初,ARM公司成立于英国剑桥,设计了大量高性能、廉价、耗能低的RISC(Reduced lnstruction Set Computer)处理器、相关技术及软件。ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权,因此叫做Chipless公司。
世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。目前,采用ARM技术知识产权(Intellectual Property,IP)核的微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、DSP、无线移动应用等各类产品市场,在低功耗、低成本和高性能的嵌入式系统应用领域中处于领先地位。
ARMCortex系列处理器是基于ARMv7架构的,分为Cortex-A、Cortex-R和Cortex-M三类。在命名方式上,基于ARMv7架构的ARM处理器已经不再延用过去的数字命名方式,如ARM7、ARM9、ARM11,而是冠以Cortex的代号。基于v7A的称为“Cortex-A系列”,基于v7R的称为“Cortex-R系列”,基于v7M的称为“Cortex-M系列”。
其中,ARM Cortex-A系列主要用于高性能(Advance)场合,是针对日益增长的,运行包括Linux、Windows CE和Symbian操作系统在内的消费者娱乐和无线产品设计与实现的;ARM Cortex-R系列主要用于实时性(Real time)要求高的场合,针对的是需要运行实时操作系统来进行控制应用的系统,包括汽车电子、网络和影像系统;ARM Cortex-M系列则主要用于微控制器单片机(MCU)领域,是为那些对功耗和成本非常敏感,同时对性能要求不断增加的嵌入式应用(如微控制器系统、汽车电子与车身控制系统、各种家电、工业控制、医疗器械、玩具和无线网络等)所设计与实现的。随着在各种不同领域应用需求的增加,微处理器市场也在趋于多样化。为了适应市场的发展变化,基于ARMv7架构的ARM处理器系列将不断拓展自己的应用领域。
Cortex-M3是一个32位的单片机核,在传统的单片机领域中,有一些不同于通用32位CPU应用的要求。例如,在工控领域,用户要求具有更快的中断速度,Cortex-M3采用了抢占(Pre-emption)、尾链(Tail-chaining)、迟到(Late-arriving)中断技术,对中断事件的响应更迅速。比如,尾链技术完全基于硬件进行中断处理,最多可减少12 个时钟周期数,背对背中断之间的延时时间、从低功耗模式唤醒时间只有个6 个时钟周期。特别适用于汽车电子和无线通信领域。
ARM Cortex-M3处理器结合了多种创新性突破技术,使得芯片供应商可以提供超低费用的芯片。仅有33000门的M3内核,其性能可达1.25DMIPS/MHz,如主频为72MHz的M3处理器性能可达90DMIPS。M3处理器还集成了许多紧耦合系统外设,合理利用了芯片空间,使系统能满足下一代产品的控制需求。Cortex的优势在于低功耗、低成本、高性能的结合。
处理器性能
DMIPS(Dhrystone Million Instructions executed Per Second)主要用于测整数计算能力。其中,MIPS(Million Instructions executed Per Second),每秒百万条指令,用来计算同一秒内系统的处理能力,即每秒执行了多少百万条指令。D是Dhrystone的缩写,Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于处理器的整形运算性能的测量,程序是用C语言编写的。
Dhrystone的计量单位为每秒计算多少次Dhrystone,后来把在VAX-11/780机器上的测试结果1757 Dhrystones/s定义为1 Dhrystone MIPS(百万条指令每秒)。DMIPS表示了在Dhrystone这样一种测试方法下的MIPS。例如,一个处理器达到200DMIPS的性能,是指这个处理器测整数计算能力为(200×100万)条指令/秒。
Cortex-M3处理器包括处理器内核、嵌套向量中断控制器(Nested Vectored Interrupt Controller,NVIC)、存储器保护单元、总线接口单元和跟踪调试单元等,为微控制器应用而开发的ARM Cortex-M3拥有以下性能:
● Cortex-M3内核使用3级流水线哈佛架构,运用分支预测、单周期乘法和硬件除法功能实现了1.25DMIPS/MHz出色的运算效率(与0.9DMIPS/MHz的ARM7和1.1DMIPS/MHz的ARM9相比),而功耗仅0.19mW/MHZ。
● 采用专门面向C语言设计的Thumb-2指令集,最大限度地降低了汇编语言的使用。而且Thumb-2指令集允许用户在C代码层面维护和修改应用程序,C代码部分非常易于重用。可以这么说,没有必要使用任何汇编语言,这样新产品的开发将更易于实现,上市时间也大为缩短。
● Thumb-2指令集免去了Thumb和ARM代码的互相切换,性能得到了提高。结合非对齐数据存储和原子位处理等特性,可在一个单一指令中实现读取/修改/编写,轻易以8位、16位器件所需的存储空间就实现了32位性能。
● 单周期乘法和乘法累加指令、硬件除法。
● 准确快速地进行中断处理,不超过12周期,最快仅6周期。内置的NVIC通过末尾连锁,即尾链(Tail-chaining)技术提供了确定的、低延迟的中断处理,并可以设置带有多达240 个中断,可为中断较为集中的汽车应用领域实现可靠的操作。
● 对于工业控制应用,存储器保护单元(Memory Protection Unit,MPU)通过使用特权访问模式可以实现安全操作。
● Flash修补和断点(Flash Patch and Breakpoint-unit)单元、数据观察点和跟踪(Data Watchpoint and Trace-DWT)单元、仪器测量跟踪宏单元(Instrumentation Trace Macrocell-ITM)和嵌入式跟踪宏单元(Embedded Trace Macrocell- ETM)为嵌入式器件提供了廉价的调试和跟踪技术。
● 扩展时钟门控技术和内置睡眠模式适用于低功耗的无线设计领域,具有低功耗时钟门控(Clock Gating)3种睡眠模式。
因此,ARM Cortex-M3处理器是专门为那些对成本和功耗非常敏感但同时对性能要求又相当高的应用而设计的。凭借缩小的内核尺寸、出色的中断延迟、集成的系统部件、灵活的硬件配置、快速的系统调试和简易的软件编程,Cortex-M3处理器将成为广大嵌入式系统(从复杂的片上系统到低端微控制器)的理想解决方案,基于Cortex-M3处理器的系统设计可以更快地投入市场。
STM32F103系列微控制器
STM32系列微控制器是由ST意法半导体公司以ARM Cortex-M3为内核开发生产的32位微控制器(单片机),专为高性能、低成本、低功耗的嵌入式应用专门设计。分成几个不同系列:STM32F100为“超值型”,STM32F101为“基本型”,STM32F102为“USB基本型”,STM32F103为“增强型”,STM32F105或107为“互联型”,STM32L为“超低功耗型”。例如,基本型时钟频率为36MHz,以16位产品的价格得到比16位产品更好的性能,是16位产品用户的最佳选择;增强型系列时钟频率达到72MHz,是同类产品中性能最高的。这些系列都内置16K到512K的闪存,不同的是SRAM的最大容量和外设接口的组合。STM32系列微控制器具有很高的集成度,除丰富的接口外,还内置复位电路、低电压检测、调压器、精确的RC振荡器等。STM32系列微控制器时钟频率为72MHz时,从闪存执行代码,功耗为36mA(所有外设处于工作状态),是32位市场上功耗最低的,相当于0.5mA/MHz。而待机时,功耗下降到2μA。
STM32F103xx增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(最高可达512K字节的闪存和64K字节的SRAM),具有丰富的增强型I/O端口和连接到两条高性能外设总线(Advanced Peripheral Bus,APB)的外设。STM32F103Vx系列都至少包含2个12位的ADC、1个高级定时器、3个通用16位定时器(具有PWM输出功能),还包含标准和先进的通信接口:2个I2C(SMBus/PMBus)、2个SPI同步串行接口(18兆位/秒)、3个USART异步串行接口(4.5兆位/秒的)、1个USB全速接口和一个CAN(2.0B)接口。I/O翻转速度可达18MHz。
图1.1是基于ARM Cortex-M3内核的STM32F10x系列微控制器的外观(LQFP100封装)。表1.1是STM32F103xx增强型微控制器(Flash不超过128K的中小容量)各系列的外设资源。大容量的STM32F10x系列单片机外设资源和芯片编号详细说明见附录。
图1.1 基于ARM Cortex-M3内核的STM32F10x系列微控制器的外观
表1.1 STM32F103xx增强型微控制器各系列的外设资源