第1章 ARM微控制器的那些事儿
本章内容提要
本章主要介绍基于ARM的微控制器相关内容,初学者可以将其作为科普内容阅读,其中有些耳熟能详的知识点,亦尽量以简要的语言进行阐述,以构成完整的知识体系。
在本章中,主要涉及如下内容:
❖ 嵌入式微控制器简介
❖ 嵌入式微控制器的基本组成
❖ 嵌入式初学者杂谈
❖ ARM公司概况及商业模式
❖ ARM的体系结构
❖ ARM Cortex-M3架构及其特点
本章力图以简要的方式让读者可以从“高空”俯瞰ARM世界,读者可以以轻松的心情阅读本章,一些知识点,尤其是涉及的一些名词与概念,做一般性了解即可。
当然,一些天生行动派的读者也可以越过此章,直接进入第5章的从零开始——LED点灯程序。亲爱的读者,让我们一起飞翔在IT的天空,准备一睹万众瞩目的ARM之风采。
1.1 嵌入式微控制器简介
名不正则言不顺,言不顺则事不成。
本节将就嵌入式系统的概念、嵌入式微控制器的基本组成、嵌入式微控制器的发展趋势等方面进行阐述。本节中的一些基本概念、名词及英文缩写请尽量记忆,这有助于理解本书后续内容,也有助于阅读其他相关资料。
1.1.1 什么是嵌入式
美国著名计算机科学和心理学教授赫伯特·A·西蒙在《关于人为事物的科学》中指出:
“我们每天生活着的世界,与其说是自然的世界,还不如说是人造的或人为的世界。在我们周围,几乎每样东西都有人工技能的痕迹”。
人工技能最突出的表现就是嵌入式,或者说是嵌入式系统。嵌入式系统已经深入到我们生活的各个领域,如图1-1所示。
图1-1 身边的嵌入式应用(举例)
从智能冰箱、洗衣机、空调、消毒柜、机顶盒,到汽车上的多媒体影音播放系统、自动控制系统;从道路上的红绿灯控制、电子警察、自动贩卖机,到银行的ATM机、排队系统;从军事上使用的导弹制导、自动侦测,到航天飞机、宇宙飞船……这些应用中,尽管由于空间、内容、形态上的需求而不同,但是,在工业领域有一个共同的名字——嵌入式系统。
过去、现在乃至可预期的将来,嵌入式系统的应用远远超过各种通用计算机。一台通用计算机的外部设备中包含了5~10个甚至更多的嵌入式微处理器——键盘、鼠标、软驱、硬盘、显示卡、显示器、Modem、网卡、声卡、打印机、扫描仪、数字相机、USB集线器等都有嵌入式微处理器(控制器)的身影。
此外,在制造工业、过程控制、通信、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等均是嵌入式计算机的应用领域。
1.1.2 嵌入式系统的定义
英国电机工程师学会(IEE)对嵌入式系统的定义为:
“嵌入式系统为控制、监视或辅助设备、机器或甚至工厂操作的装置”
IEEE(国际电气和电子工程师协会)对嵌入式系统的定义为:
“用于控制、监视或者辅助操作机器和设备的装置”
(Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)
在国内,一般较为流行的说法是:
以应用为中心、以计算机技术为基础、软件/硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
本书中并非将嵌入式系统作为科学来严谨研究,而是着眼于工程实践。因此,这里采用嵌入式系统的广义定义:嵌入式系统是一个非计算机的计算系统。
计算机系统是通用计算系统,而嵌入式系统是专用计算(包含控制)系统。
1.1.3 嵌入式系统的分类
根据嵌入式系统的广义定义,任何一个非计算机的计算系统都可以被称为嵌入式系统。嵌入式系统包罗万象,在这里仅给出几种典型的分类方法,这些分类方法是从不同的角度进行的粗分类,以帮助读者增加对嵌入式系统的一般认识。事实上,在这些分类方法中,随着技术的发展,不同的种类不断交叉渗透,其分类界限也就变得日益模糊。
1.根据核心部件分类
嵌入式系统根据系统中的核心部件分类,如表1-1所示。
表1-1 按核心部件分类的嵌入式系统
上述四种核心部件,各有其特点,并由此应用于不同领域。随着半导体技术的发展和实际应用需求,尤其是在成本、体积、功耗等方面要求日益提高的情况下,一些厂家在同一硅片(芯片)上集成上述其中一个种类中的多个实例,形成所谓的多核芯片,或者在同一硅片(芯片)上集成上述两种或两种以上的核心部件,同时增加其他外设,形成所谓的SoC(System on Chip,片上系统)或者SoPC(System-on-a-Programmable-Chip,片上可编程系统)。
SoC和SoPC的出现,是集成电路发展到一个新阶段的标志,本章后续内容将对其进行进一步的描述和讨论。
2.根据处理器的数据总线宽度分类
数据总线负责计算机系统中数据在各组成部分之间的传送。数据总线宽度是指在芯片内部数据传送的宽度,它决定了CPU内存(包括缓存)以及输入/输出设备之间一次数据传输的信息量。按数据总线宽度分类的嵌入式系统如表1-2所示。
表1-2 按数据总线宽度分类的嵌入式系统
在32位,甚至是64位微处理器大行其道的时候,一些4位MCU依然活跃在日常生活中我们经常接触但并不一定熟悉的领域。比如吉列的Fusion ProGlide剃须刀——一款集成了4位处理器的产品。此外,在计算器、车用仪表、车用防盗装置、呼叫器、无线电话、儿童玩具、磅秤、充电器、胎压计、温/湿度计、遥控器及傻瓜相机等领域,4位处理器依然有着广泛的应用。
一些厂家,包括东芝、三星、华邦等,依然保留着4位处理器的产品线。4位处理器的存在是市场作用的结果(海量的低端产品对于产品所使用的器件价格是敏感的),同时也是社会对于科技影响的一种体现。
设想一下,如果一款产品(如剃须刀等日用品)年销量过千万,则0.1元对其造成的成本影响相应就是1000000元以上。
此外,FPGA是一类特殊的处理器。它不存在数据总线宽度的概念,只要内部资源或者引脚数量允许,FPGA可以达到非常宽的总线宽度,可以是8位、12位、32位、64位,可以是65位、66位……1000位,甚至更多。这也是FPGA并行处理优势的一种体现。
3.根据应用场合分类
正如前文所述,嵌入式系统的应用远远超过各种通用计算机,在制造工业、过程控制、通信、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。
表1-3所示给出了嵌入式系统按照应用领域的大致分类。需要指出的是,由于嵌入式系统应用涉及的领域非常多,不可能详细列举,表1-3所示的分类较为粗略。例如,汽车电子中用到的嵌入式系统如图1-2所示。
表1-3 按应用领域分类的嵌入式系统
图1-2 汽车电子中的嵌入式系统(举例)
4.根据软件(操作系统)分类
根据软件(操作系统)可以将嵌入式系统分为有操作系统和无操作系统,如图1-3所示。
图1-3 根据软件(操作系统)分类的嵌入式系统
其中有操作系统又可以根据对事件的响应情况分为分时操作系统和实时操作系统两类。实时操作系统又可以分为硬实时系统和软实时系统。
需要说明的是,分时操作系统和实时操作系统是由操作系统本身调度策略决定的,而非硬件决定的。
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统的重要组成部分。嵌入式操作系统具有通用操作系统的基本特点,能够有效管理复杂的系统资源,并且把硬件虚拟化。
一般来说,有些应用场合仅需要简单的计算或者控制处理,无需操作系统。但对于有多个复杂任务进行调度,或者有界面需求,或者有复杂协议栈需要实现的应用场合,往往需要操作系统。至于何时需要操作系统,以及需要怎样的操作系统需要结合具体应用需求而定。
目前,嵌入式操作系统有:Linux、uClinux、VxWorks、QNX、OSE、uCOS-II、FreeRTOS、WinCE(Windows Embedded Compact 7)、iOS、Android、Symbian、Windows Phone、PalmOS、eCos、pSOS、Nucleus、ThreadX 、Rtems 、INTEGRITY、C Executive ……此外,还有许多独立开发用于专用嵌入式硬件系统的嵌入式操作系统。几种常见的嵌入式操作系统如图1-4所示。
图1-4 几种常见的嵌入式操作系统
当然,有操作系统除了分成分时操作系统和实时操作系统外,也可以按照其他特点进行分类,如通用型嵌入式操作系统和专用型嵌入式操作系统、手机操作系统和非手机操作系统等,限于篇幅,这里就不一一列举了。
1.1.4 嵌入式微控制器的基本组成
无论是通用计算机系统还是嵌入式系统,都由五大基本部分组成:控制器、运算器、存储器、输入设备和输出设备,如图1-5所示。
图1-5 计算机系统的五大基本组成部分
关于计算机系统的这五大基本组成部分,有关教科书和许多其他资料上都有详细介绍,这里结合本书内容就其作用进行简要描述。
(1)控制器
控制器是整个计算机系统的中枢,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,包括调度程序、数据、地址,协调计算机各部分工作及内存与外部设备的访问等。
(2)运算器
顾名思义,运算器就是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
(3)存储器
存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。存储器有多种实现方式。此外,存储器是除控制器以外,与运算器交互最为频繁的组成部分。
(4)输入设备
输入设备是计算机系统的重要组成部分,输入设备与输出设备合称为外部设备,简称为外设。输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机系统。常见的输入设备有键盘、鼠标、触摸屏、光电输入机、磁带机、磁盘机、光盘机等。
(5)输出设备
输出设备把计算机的中间结果或最后结果、系统内的各种数据符号及文字或各种控制信号等信息输出出来。常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。
以iPhone为例,上述五大部分的结构图解如图1-6所示。
图1-6 iPhone的计算机结构图解
上述五大基本组成部分是逻辑抽象的宏结构,实际上,可以笼统地认为在物理实现时运算器和控制器一般集成在一起形成CPU。而根据CPU与存储器的耦合方式不同,可以分为两种结构:冯·诺依曼结构与哈佛结构。下面就这两种结构进行简要说明。
1.冯·诺依曼结构
冯·诺依曼(Von Neumann)结构,也称为普林斯顿结构(Princeton architecture),是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。
20世纪初,物理学和电子学科学家们被十进制这个人类习惯的计数方法所困扰,力图研制以十进制为基础的模拟计算机。20世纪30年代中期,美国科学家冯·诺依曼提出:抛弃十进制,采用二进制作为数字计算机的数制基础。同时,他还提出通过预先编制计算程序,然后由计算机来按照人们事前制定的计算顺序来执行数值计算工作的设想。
冯·诺依曼理论的要点如下:
● 数字计算机的数制采用二进制;
● 计算机应该按照程序顺序执行。
人们把冯·诺依曼的这个理论称为冯·诺依曼结构,如图1-7所示。
人物志
约翰·冯·诺依曼(John Von Neumann,1903—1957),美籍匈牙利人,20世纪最伟大的科学家之一,1903年12月28日生于匈牙利的布达佩斯。冯·诺依曼从小聪颖过人,兴趣广泛,读书过目不忘,据说他6岁时就能用古希腊语同父亲闲谈,一生掌握了七种语言,最擅长德语,可在他用德语思考种种设想时,又能以阅读的速度译成英语。坊间最有趣的传说,莫过于其将二进制作为数字计算机的数制基础的灵感来自于中国的八卦和阴阳学说。
图1-7 冯·诺依曼结构
以对存储器进行读/写操作的指令为例,对于冯·诺依曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。在高速数据传输时,产生所谓的冯·诺伊曼瓶颈(Von Neumann bottleneck)。
目前使用冯·诺伊曼结构的中央处理器和微控制器有很多。除了英特尔公司的8086,英特尔公司的其他中央处理器、ARM的ARM7、MIPS公司的MIPS处理器也采用了冯·诺依曼结构。
2.哈佛结构
哈佛结构(Harvard architecture)是一种将程序指令存储和数据存储分开的存储器结构,如图1-8所示。
图1-8 哈佛结构
哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统的4条总线:程序的数据总线与地址总线,数据的数据总线与地址总线。
哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令是分开组织和存储的,执行时可以预先读取下一条指令。
同时,由于程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。
目前使用哈佛结构的中央处理器和微控制器有很多,除了PIC系列芯片,还有摩托罗拉公司(现在的飞思卡尔)的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。
3.两种体系结构的区别与联系
根据冯·诺依曼体系结构构成的计算机,必须具有如下功能:把需要的程序和数据送至计算机中;必须具有长期记忆程序、数据、中间结果及最终运算结果的能力;能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力;能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作;能够按照要求将处理结果输出给用户。
从这个角度来说,将冯·诺依曼体系结构和哈佛结构并列起来是不恰当的,因为哈佛结构仅就存储结构上做出改变,而不是从根本上提出新的有异于冯·诺依曼体系结构的全新架构。
哈佛结构由于指令和数据分开存储,因此可以同时读取指令和数据。在高速数据处理场合采用哈佛结构,可以大大提高数据吞吐率。
但哈佛结构的缺点是结构复杂。通用计算机指令和数据是混合存储的,结构上简单,成本低。设想一下,如果一台台式机采用哈佛结构,那么必须面临的一个情况就是:必须在计算机上安装两块硬盘,一块装程序,一块装数据;内存装两根,一根储存指令,一根存储数据……
现在的处理器虽然从外部总线上看是冯·诺依曼结构的,但是由于采用内部Cache,因此从内部来看是改进型哈佛结构的。同时,哈佛结构较为复杂,对外围设备的连接与处理要求高,不适合外围存储器的扩展。所以,早期通用CPU难以采用这种结构。现在的处理器,尤其是嵌入式微控制器,由于内部集成了所需的存储器,依托Cache的存在,可以将二者统一起来。
冯·诺依曼首先提出了“存储程序”的概念和二进制原理。所谓“存储程序”,可以简单概括为以下三点:
① 计算机包括运算器、控制器、存储器、输入/输出设备;
② 计算机内部应采用二进制来表示指令和数据;
③ 将编好的程序和数据送至内存储器,然后计算机自动地逐条取出指令和数据进行分析、处理和执行。
从世界上第一台计算机ENIAC(Elec,tronic Namerical Integrator And Calculator)到当前最先进的计算机都采用的是冯·诺依曼体系结构。冯·诺依曼是当之无愧的数字计算机之父。
4.嵌入式微控制器产品组成
嵌入式微控制器自问世以来,性能不断提高和完善,其资源为了满足不同应用场合也日益丰富。从20世纪80年代以来,由当时的4位、8位微控制器,发展到现在的32位高速微控制器。近6年来嵌入式微控制器的市场规模及未来的发展预期如图1-9所示。
图1-9 近6年来嵌入式微控制器的市场规模及未来的发展预期
嵌入式微控制器不论如何发展变化,其基本结构都属于冯•诺依曼体系结构和哈佛结构的范畴。下面针对主流微控制器生产商的部分型号,简要说明微控制器的产品组成。
通过FUJITSU公司MB9B500系列32位微控制器(见图1-10)和ATMEL公司SAM3X系列32位微控制器(见图1-11)的结构图,可以很清晰地将微控制器产品中的主要组成部分呈现出来:
图1-10 FUJITSU公司MB9B500系列32位微控制器
图1-11 ATMEL公司SAM3X系列32位微控制器
● 处于中间的是控制器和计算机——Cortex-M3;
● 都有存储器——SRAM;
● 都有与外界进行交互的输入/输出设备——各种接口(如USB、CAN等)和外部设备(ADC、DAC、外部总线接口控制器等)。
随着低碳环保的呼声日益高涨,以低功耗著称的ARM处理器,以其优良性能在各个领域得到了广泛的应用,越来越多的嵌入式微处理器和嵌入式微控制器都采用了ARM处理器。
需要说明的是,ARM既是公司名,也是商标名。而在图1-10中可以清晰无误地看到“ARM Cortex-M3-CPU”的文字。MB9B500系列32位微控制器既然是FUJITSU公司的产品,和ARM又存在怎样的关联呢?同样,在图1-11所示微控制器中也在显著位置标有“Cortex-M3”的文字,Cortex-M3和ARM又有怎样的渊源呢?
关于这两个问题,读者可以在后续的1.3节和1.4节中找到答案,并可以从中找到关于ARM公司的发展轨迹和商业模式的详细叙述。
为了更好地理解嵌入式微控制器的产品结构,使描述的问题更具一般性,下面再看两款16位和8位非ARM内核的嵌入式微控制器,如图1-12和图1-13所示。
图1-12 MICROCHIP公司PIC16F182X系列16位微控制器
图1-13 STMicroelectronics公司STM8S系列8位微控制器
和前文介绍的32位微控制器的情况基本相同,PIC16F182X系列16位微控制器同样具备计算机系统的五个基本组成部分:控制器、运算器、存储器、输入设备和输出设备。其中,控制器和运算器集成在CPU模块中,拥有1KB的数据存储器和14KB的指令存储器,256B的EEPROM可以作为数据输入设备和输出设备,此外,具有单向/双向的通信接口也可以连接其他外部输入/输出设备。同时,PIC16F182X系列16位微控制器还有诸如ADC、DAC等其他外设。
同样,由图1-13可以看到STMicroelectronics公司的STM8S系列8位微控制器也具有相同的基本结构。在其官方给出的体系结构中,将微控制器分成了6个部分:CPU、Memory、System、Control、Connectivity和Analog。我们能够直观地将其中的各个部分和计算机系统的五个基本组成部分进行对应。
通过对上述几种不同型号、规格的嵌入式微控制器进行对比,不难发现实际使用的嵌入式微控制器具有以下共同点:
① 都具有计算机系统的五个基本组成部分。厂商将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机;
② 各个厂商增加了不同的外设,包括一些具有技术优势的外设,为不同的应用场合做不同组合控制以提供更大灵活性;
③ 都强调了通信功能,使嵌入式微控制器可以使用多种接口与外界进行交互,具备良好的扩展性。
在第2章将根据具体应用场景,通过应用中需要关注的性能及参数进行解释,并对不同厂家的嵌入式微控制器进行对比,选择合适的产品型号。从而在过程中加深读者对于嵌入式微控制器的感性认识和理解。
1.1.5 嵌入式微控制器与嵌入式处理器的区别
在1.1.3节对嵌入式微处理器(Micro Processor Unit,MPU)进行过相关表述,指出其是由通用计算机中的CPU(微处理器)演变而来的。嵌入式微处理器与标准微处理器相比,只保留与嵌入式应用紧密相关的功能硬件,以最低的功耗和资源实现嵌入式应用的特殊要求。同时,在工作温度、抗电磁干扰、可靠性等方面进行了增强。
嵌入式微处理器的基础是通用计算机中的CPU,是嵌入式系统的核心。但仅仅是核心而已,如果需要形成具有一定功能的系统,在电路板上必须包括ROM、RAM、总线接口、各种外设等器件。而嵌入式微控制器将CPU、RAM、ROM、定时计数器和多种I/O接口集成在一个芯片上,形成完整的计算机系统,只需很少外围电路或者不需要外围电路,直接供电即可工作。
嵌入式微处理器系统与嵌入式微控制器系统的比较如图1-14所示。
此外,嵌入式微处理器和嵌入式微控制器在工作频率、功耗、应用领域等方面都有所不同,简要分析如表1-4所示。
图1-14 嵌入式微处理器系统与嵌入式微控制器系统的比较
表1-4 嵌入式微处理器和嵌入式微控制器对比
随着新的市场需求及各大半导体厂商的产品战略调整,一些嵌入式微处理器中将集成越来越多的外设。而随着技术的发展,嵌入式微控制器的速度也越来越快,计算能力越来越强。
在这两方面因素作用下,两者之间的交集越来越多,某些界限日趋模糊。但就目前整体形式而言,可以笼统地认为嵌入式微处理器应用于高端应用,而嵌入式微控制器应用于中、低端市场,这也是由价值规律所决定的。
另外,辩证地看待两者之间的联系,可以认为嵌入式微处理器是强化计算能力的增强型嵌入式微控制器,而嵌入式微控制器也可以看作是嵌入式微处理器弱化速度集成存储器的结果。
此外,关于高端、中端、低端都是相对的,在选择上一定要根据实际情况,切不可一味攀“高”。要根据实际需要、货源情况、预算成本及其他约束条件具体考虑,在“2.3.2节控制器选型”中会就这个问题进一步讨论。
1.1.6 嵌入式微控制器的发展趋势
随着技术的发展,嵌入式微控制器不但价格低廉,而且功能越来越强大,广泛应用于各种小型电器。据市场研究机构IHS iSuppli的报告显示,2011年全球嵌入式微控制器的市场规模近160亿美元,预计2015年将达到180亿美元。在国内,市场预期在2015年达到47亿美元的营收规模,保持60%的年增长率。
以每颗嵌入式微控制器价格1美元(8位嵌入式微控制器基本都在1美元以下,相当部分的32位嵌入式微控制器也进入了“美分”时代)保守测算,2011年嵌入式微控制器的出货量高达160亿颗,而这仅仅是保守估计。
在嵌入式微控制器保持稳定增长的过程中,呈现以下发展趋势:
(1)32位微控制器逐渐走强
嵌入式微控制器是伴随着微处理器一起发展的。在微处理器通过不断地采用先进的制造工艺、更加合理的体系结构发展到如今的纳米尺寸、多核心处理器,并且在数据宽度方面从早期的8位处理器、16位处理器,发展到32位处理器,如今64位处理器已经成为现在乃至可预期将来的主流处理器;而微控制器也表现出了从8位到16位再到32位的发展趋势,同时,多核心架构很有可能是微控制器下一步的发展方向。
此外,由于家用电器、手持式消费电子产品、手持式通信装置和车用电子等领域的市场推动,微控制器的使用量越来越大,而且表现出了更新换代的趋势。通过图1-15可以清晰看到32位嵌入式微控制器稳定的增长趋势。
图1-15 2007—2011年不同位宽嵌入式微控制器销售额对比
(2)应用领域逐步由家电向其他领域迁移辐射
通过对多家MCU厂商公布的数据进行综合分析,可以看到嵌入式微控制器在工业和消费电子市场占据最大份额,而来自汽车电子领域的需求增长最快,同时,新能源和智能化应用也在加快32位MCU的应用普及。
嵌入式微控制器的应用涉及生活的方方面面,生活中的各种家电几乎都必须使用到微控制器,如家用音响、家用电话、洗衣机、冷气机等。在汽车电子领域,由于更多电子功能的需求,如安全气囊、智能安全带、胎压监测、车载娱乐系统、引擎控制、刹车防锁死系统、车载网络系统、车内(外)监控装置与车用导航系统等,一辆车所需要使用到的微控制器数目多达数十个,未来市场依然极具潜力。
(3)高度整合外部设备,功能不断增强
随着32位嵌入式微控制器的使用日趋广泛,更强大的周边处理功能与多样化的应用接口需求不断得到强化,因此32位嵌入式微控制器的整合度较以往8位(4位)、16位微控制器的整合度更高。
目前,32位嵌入式微控制器基本都配备有模拟/数字转换器、数字/模拟转换器、内部集成NAND型快闪存储器(≥512KB)、内部集成ROM(≥32KB)、DRAM存储器控制接口,以及丰富的通信接口(CAN、SPI、I2C、UART等),甚至是USB和以太网接口,以达到和USB或以太网络等周边装置沟通的能力。此外,更多以往放在微控制器外部的混合信号元件也逐步被加入到微控制器中,如比较器、放大器、滤波器和内部振荡器等。
尤其随着触摸屏这一新的交互方式被人们所接受和推崇,部分嵌入式微控制器已经拥有面板触控功能(见图1-16),未来更有成为标准配备的趋势。
图1-16 触控应用(举例)
1.2 嵌入式初学者杂谈
万事开头难,尤其面对一个诺大的嵌入式世界,是否有“敢问路在何方?”的疑惑和慨叹?
本节针对初学者可能遇到的一些问题,提供一些前人的经验,希望即将踏上征程的勇士能够获取些许帮助——敢于直面一个随时代脉搏而跃动的行业,绝对可以称之为勇士!
1.2.1 学习FPGA,DSP,还是ARM?
在知悉嵌入式只言片语之后,许多初学者面对嵌入式这个充满诱惑与挑战的世界最容易产生迷茫与无助的问题(见图1-17)。在开始讨论这个问题前,先澄清一个误会。
图1-17 初学者对于选择FPGA、ARM、DSP的疑惑
通过本书前文内容所述,FPGA、DSP、MPU和MCU是四种不同种类的处理器。ARM发展到CortexTM系列时,既有属于MPU的Cortex-A系列,又有属于MCU的Cortex-M系列(具体参考1.4.2节)。同时,MPU中除了ARM结构的微处理器外,还有许多非ARM的微处理器,如Am186/88、386EX、SC-400、Power PC、68000、MIPS等;同样,MCU中的4位、8位、16位MCU都不是ARM结构的(这些MCU占的市场比重相当大)。
因此,虽然ARM大有天下一统的气势,但仅仅以ARM指代所有MPU和MCU也是不妥当的。
说明这个误会后,下面步入正题,并针对1.1.3节的表1-1补充一些说明文字。
1.FPGA
FPGA完全是硬件的,意味着进行FPGA编程设计其实是进行硬件结构设计。换句话说,通过硬件描述语言(Verilog HDL、VHDL)写程序,其实是在用数字电路的基本元件设计逻辑器件的电路版图。虽然,在这个过程中通过Verilog HDL或者VHDL的帮助,并不需要每次都去关注最底层的物理实现,但其本质依然是进行硬件结构设计。
在FPGA中,模块间的所有信号都是并行执行的,只有模块内信号流方向的功能单元(门电路或者触发器)级联是串行的。
FPGA的并行很好理解。如同赛跑,发令枪一响,所有运动员都开始冲出起跑线狂奔;在FPGA中,一旦输入信号进来,与之相关的组合逻辑和(或)时序逻辑都会同时反应。
FPGA的串行一般发生在模块内部,一个信号经过一个门电路或者触发器后要传递给下一个门电路或者触发器,信号经过的两者之间构成了串行。此外,通过状态机的方式也可以在模块内部构建一种抽象意义的串行。
由于FPGA并行特点(见图1-18),在并行应用中处理速度快,效率高,其设计的结果面向硬件化,有利于实现专用芯片。但FPGA的功耗大,FPGA的代码不易修改,其代码颇有牵一发而动全身的敏感。
图1-18 FPGA的特点(硬件属性、并行、高功耗)
此外,FPGA对数字电路的要求相对较高,针对具体问题时需要关注底层硬件实现,设计过程中要时时绷紧硬件电路这根弦。如果学习过数字电路但没有学习过C语言,对于学习FPGA是有利的——这也不是绝对的,每个人的特点和禀赋不尽相同。
FPGA设计使用的硬件描述语言(Hard Description Language,HDL)主要有Verilog HDL和VHDL。
2.DSP
DSP(Digital Signal Processor)是一种独特的微处理器。作为微处理器,如果需要形成具有一定功能的系统,在电路板上必须包括ROM、RAM、总线接口、各种外设等器件。DSP系统的基本结构如图1-19所示。
图1-19 DSP系统的基本结构
DSP主要用于数据处理。DSP集成了基本运算类型(乘法和累加)的硬件结构,而对于卷积、相关、滤波和FFT等数字信号处理过程而言,基本上都是这一类运算。因此,DSP对这些信号的处理比使用通用计算机来完成具有更高的实时处理能力和成本优势。
与FPGA相比,在选定DSP型号后,其硬件是固定的,开发者只需关注软件算法的实现即可。
DSP一般都有浮点运算器,对于处理实数数据有优势,而FPGA中需要用额外的逻辑和资源配合输入的数据格式对浮点问题加以解决,在处理过程中精度损失相对DSP要大。
在代码维护、升级方面,由于DSP一般采用C语言开发,与FPGA相比软件更新方便。此外,DSP在系统成本、体积、功耗等方面都具有一定的优势。
DSP的程序设计可以采用C语言,当然,如果选用的DSP其开发环境支持其他语言,如Java、C++、Python等也是可以的。如果能够很好地掌握汇编语言,对于DSP的高级开发是有好处的,一般情况下,在运算量大时人写的汇编语言往往比高级语言编译之后的代码效率更高。
3.ARM
ARM既是公司名,也是商标名,同时还是一类低功耗处理器的通称,代表一种技术。
1991年ARM公司成立于英国剑桥,在20世纪90年代由于资金短缺,ARM公司开始尝试与封闭设计的Intel公司不同的商业策略——自己不制造芯片,只将芯片的设计方案授权给其他公司,由其他公司来生产。
正是这个模式,使得ARM芯片得到普遍接受和应用,并迅速占领了市场。在MPU(微处理器)、MCU(微控制器)乃至FPGA中都有ARM的身影。
关于ARM的情况,在1.3节和1.4节将详细进行介绍,本节主要针对基于ARM的嵌入式微控制器的学习情况进行简要描述。
对于基于ARM的MPU,需要外部集成RAM、ROM等,一般体积较大,相对于MCU功耗较高,主要用于需要界面显示、复杂协议、数据计算等方面的应用。
对于FPGA中含有ARM处理器,目前应用较少。FPGA中的ARM处理器同样需要通过FPGA的内部资源或者FPGA外扩的资源构成复杂系统。由于技术的复杂性,其成本较高。
至于MCU,在嵌入式微控制器进入32位的阶段时,各大厂商纷纷放弃其原有微控制器CPU结构,转而投向ARM的阵营。
目前,有大量基于ARM的嵌入式微控制器,这些嵌入式微控制器一般具有的特点是功耗低、性能强、外设丰富。尤其是ARM Cortex-M3系列,由于其“高性能+高代码密度+小硅片面积”,在消费类电子产品、汽车电子、数据通信、工业控制方面有着广泛的应用。
对于初学者来说,尽量遵循“由浅入深、由简及难”的一个认知过程,修炼到一定程度便可以“化繁为简,游刃有余”了。
因此,选择要求基础不太高的嵌入式微控制器入手(一般具备C语言基础和基本的数字电路基础即可),在学习工具、资料方面都有便利性,开发工具等也容易取得,同时,由于RAM和ROM等设备都集成在一个芯片上,不确定性小,面对的问题相对简单。
此外,嵌入式微控制器是典型的“麻雀虽小,五脏俱全”,计算机系统的各个方面都有,通过嵌入式微控制器的学习对于计算机系统的一些基本概念能够很好地切入、学习和掌握。
在嵌入式微控制器以后,可以学习FPGA和DSP,如果需要有操作系统的支持,可以学习基于ARM的微处理器。
俗语说:“技多不压身”。现在的复杂嵌入式系统都是复合架构,可以是“FPGA+DSP”、“FPGA+ARM”、“DSP+ARM”,甚至是“FPGA+DSP+ARM”的结构。在这些结构中,大数据量处理和特定算法实现用FPGA,数据处理算法用DSP处理,而显示、控制、通信等则使用ARM。
1.2.2 SoC,SoPC——最后的终结者?
SoC是System on Chip(片上系统)的英文缩写,也称为系统级芯片。SoC包括两重含义:
从狭义角度讲,SoC是具有一定功能的电子系统核心芯片集成,是将系统关键部件集成在一块芯片上。
从广义角度讲,SoC是一个微小型系统,是将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品。
SoPC是System-on-a-Programmable-Chip(可编程片上系统)的英文缩写。可编程片上系统(SoPC)是一种特殊的嵌入式系统。
首先,SoPC是片上系统(SoC),即由单个芯片完成整个系统的主要逻辑功能。
其次,SoPC是可编程系统,具有灵活的设计方式,可裁剪、可扩充、可升级,并具备软/硬件在系统可编程的功能。
SoC技术的出现和发展是半导体行业发展到一个新的阶段的标志,但在SoC的设计过程中,漫长的特殊应用集成电路开发流程,不但风险性高,而且不能快速响应市场需求。随后,SoC与极具设计弹性的PLD技术结合起来,产生了具有高度整合性与设计弹性的SoPC。
但是否有了SoC和SoPC就可以解决所有问题?不尽然,早在2005年就有人声称SoPC技术将在短时间内取代大多数嵌入式的中高端产品,近10年过去了,原有的半导体格局并没有发生革命性变化。
究其原因,并非SoPC技术不好,而是任何技术问题都不可能脱离社会背景。正如1.1.3节提到的那样,在半导体行业高速发展的今天,产生于半导体发迹之初的4位嵌入式微控制器依然在生产。嵌入式产品市场有足够的包容性,让各种技术在其中角力,但在商业行为中,成本是非常值得关注的部分,成本决定了技术的新陈代谢,而不仅仅是技术本身的先进性。
1.2.3 PSoC——创新?另类?
PSoC是Programmable System-On-Chip(片上可编程系统)的英文缩写,是赛普拉斯(Cypress)公司推出的嵌入式微控制系列。
PSoC系列是在一个专有的MCU内核周围集成了可配置的模拟和数字外围器件阵列PSoC块,利用芯片内部的可编程互联阵列,有效地配置芯片上的模拟和数字块资源,达到可编程片上系统的目的。PSoC的概念图如图1-20所示。
采用一个微控制器,一个PSoC器件最多可集成100种外设功能,从而节约设计时间和板上面积,降低了功耗,系统成本也可相应降低。
早期的PSoC集成了一些模拟器件,如多个运算放大器、轨至轨输入、可编程增益放大器以及ADC,这些模拟器件的连接关系也是可编程的。这在当时曾一度引起业界的广泛关注。但这些模拟器件的数量较少,连接的灵活性也不高,此外,PSoC的开发环境也稍有些复杂。
虽然PSoC在市场的反应平平,但赛普拉斯坚持不懈地推动着PSoC。PSoC在模拟与数字混合编程的执著值得期待。
图1-20 PSoC的概念图
1.2.4 嵌入式微控制器 = MCU=单片机?
MCU是Micro Control Unit(微控制单元)的英文缩写,又称做单片微型计算机(Single Chip Microcomputer)或者单片机。可以说,MCU和单片机是等同的,即“MCU = 单片机”。
将MCU应用到各种智能化产品中,便成为嵌入式微控制器(Embedded Microcontroller)。也就是说嵌入式微控制器是MCU在应用场合的名称,是与具体产品密切关联的。
本书无意于咬文嚼字,而为了突出嵌入式系统的整体思路,在名称上坚持使用嵌入式微控制器。
1.2.5 高速?低速?
对于嵌入式微控制器,高速、低速是相对而言的。
无线电可以分成低频、中频、高频、甚高频等,但是我们很难将嵌入式微控制器的运行速度以这种方式将其绝对地划分成低速、中速、高速等。
在嵌入式微控制器刚刚出现的年代,1MHz相对于机械过程的千赫兹而言属于高速;当嵌入式微控制器的频率突破10MHz时,曾经的“高速”1MHz也就自动降了级,“高速”的称号理所当然地戴在了10MHz的头上。现在的嵌入式微控制器发展到几十兆赫兹,甚至300MHz,其速度到了一个新的阶段,“高速”当之无愧地加冕到这些新宠身上。
可以预见,将来有速度更快的嵌入式微控制器,这个过程依然会发生,到那时,本书的名字可以不变,但内容可能要彻底地变一变了。
1.3 ARM公司和ARM概况
1.3.1 不卖芯片的半导体公司——ARM
ARM公司(ARM Holdings)是全球领先的半导体知识产权(IP)提供商,并因此在数字电子产品的开发中处于核心地位。ARM公司的总部位于英国剑桥,拥有1700多名员工,在全球设立了多个办事处(见图1-21),其中包括比利时、法国、印度、瑞典和美国的设计中心。
ARM公司成立于1990年,前身为Acorn计算机公司。截至2011年,全世界已销售了超过150亿枚基于ARM的芯片,ARM公司已向200多家公司出售了600个处理器许可证。
ARM公司的商业模式主要是IP的设计和许可,而不是生产和销售实际的半导体芯片。这是与其他传统半导体产业公司不同的。
ARM公司向其合作伙伴网络(包括世界领先的半导体公司和系统公司)授予IP许可证。这些合作伙伴可利用ARM的IP设计创造和生产片上系统设计,但需要向ARM公司支付原始IP的许可费用并为每块生产的芯片或晶片交纳版税。
除了处理器IP外,ARM公司还提供了一系列工具、物理和系统IP来优化片上系统设计。
图1-21 ARM公司全球办事处概图
虽然商业模式与传统半导体产业不同,ARM公司的收益增速却比整个半导体行业快。
目前,ARM公司的合作伙伴已经涵盖了软件、培训、半导体、设计支持等多个领域,全球拥有分支机构31个,其合作伙伴总数超过200家,如图1-22所示。
图1-22 ARM公司部分合作者概图
1.3.2 ARM——Advance RISC Machine
ARM是Advance RISC Machine的缩写。随着在全球的风行,ARM已经不单纯是“高级RISC机器”的简单含义,它既是公司名,也是商标名,同时还是一类低功耗处理器的通称,代表一种技术。
在Advance RISC Machine中,“RISC”表示的是精简指令集计算机,ARM使用的就是精简指令集。
1.精简指令集计算机(RISC)
1979年美国加州大学伯克利分校提出了RISC(Reduced Instruction Set Computer,精简指令集计算机)的概念,把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。
RISC结构优先选取使用频率最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻地方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。到目前为止,RISC架构还没有严格的定义,一般认为,RISC架构应具有如下特点:
● 采用固定长度的指令格式,指令归整、简单、基本定址方式有2~3种;
● 使用单周期指令,便于管线操作执行;
● 大量使用寄存器,数据处理指令只对寄存器进行操作,只有载入/存储指令可以存取记忆体,以提高指令的执行效率。
2.复杂指令集计算机(CISC)
与RISC对应的是传统的CISC(Complex Instruction Set Computer,复杂指令集计算机)。
CISC结构有其固有的缺点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支援这些新增的指令,计算机的架构会越来越复杂。然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程式码的80%;而余下的80%的指令却不经常使用,在程式设计中只占20%。显然,这种结构是不太合理的。
3.ARM产品的特点
ARM采用RISC架构,一般具有如下特点:
● 体积小、低功耗、低成本、高性能;
● 支持Thumb(16位)/ARM(32位元)双指令集,能很好地相容8位/16位器件;
● 大量使用暂存器,指令执行速度更快;
● 大多数资料操作都在暂存器中完成;
● 定址方式灵活简单,执行效率高;
● 指令长度固定。
1.3.3 ARM产品系列
ARM7和ARM v7是一回事吗?答案是否定的。一般初学者对此常常疑惑,这里对此进行简要介绍。
1.ARM内核系列分类
读者在生活当中可能听说一些与ARM相关的名词,如ARM7、ARM9、ARM11等,这些名词也常常成为厂家和媒体宣传报道使用频率最高的名词。
事实上,这些名字是按照内核进行划分的,每个内核系列当中含有若干种内核类型。内核的主要系列有:ARM1,ARM2,ARM3,ARM6,ARM7,ARM8,ARM9,ARM9E,ARM10,ARM11,SecureCore,ARM Cortex,StrongARM(DEC),XScale(Marvell)等。
此外,还有一些厂商生产的内核的变种,就不一一罗列了。其中要说明的是,XScale在出售给Marvell之前属于Intel。
对于用户来说,生产厂商提供的资料一般都标明内核系列,因此,选择芯片时也是根据内核系列进行划分的。
2.ARM体系结构分类
ARM体系结构每一次的变更,都会添加极为关键的技术,因此,根据体系结构可以大概了解ARM的升级进化过程。
ARM按体系结构可以分为:ARMv1,ARMv2,ARMv2a,ARMv3,ARMv4T,ARMv4,ARMv5TE,ARMv6,ARMv7,……
不同的体系结构对应不同的指令集版本,同时,ARM公司在体系结构开发策略上采取灵活递进的方式,在体系结构修改期间,会逐步添加新的性能作为体系结构的变体。
ARM体系结构与内核系列之间的对应关系如表1-5所示。
表1-5 ARM体系结构与内核系列
1.4 ARM体系结构
1.4.1 ARM体系结构发展概况
ARMv7以前ARM体系结构的发展概况如图1-23所示。
(1)ARMv1~ARMv3
早期版本,未采用商业授权模式,目前不再使用。
(2)ARMv4
ARMv4是一个运行于32位地址空间的32位ISA(ARM公司成立后推出的第一个ISA)。ARMv4是目前支持的最老版本,已基本不用。
(3)ARMv4T
ARMv4T在ARMv4的基础上添加了一个运行于32位地址空间的16位Thumb指令集(T表示Thumb指令集扩展),提高了软件代码密度。目前仍在广泛使用(如ARM7TDMI内核)。
值得一提的是,在ARMv4T中,既有采用冯·诺依曼结构的ARM7TDMI,也有哈佛结构的ARM922T。
ARM从ARMv4开始全面转向哈佛结构。
(4)ARMv5TE
ARMv5TE于1999年推出,其改进了Thumb指令集,添加了增强DSP(数字信号处理)指令集扩展(E表示增强DSP指令集扩展)。
(5)ARMv5TEJ
ARMv5TEJ属于ARMv5TE的一个变种,于2000年推出,其加入了ARM独有的Jazelle®技术扩展(Java指令加速扩展,用J表示)。
(6)ARMv6
ARMv6于2001年推出,在存储器系统、异常处理、多处理器环境等多方面加以改进,加入了单指令多数据(SIMD)、多媒体指令扩展及可选Thumb-2指令集和TrustZone技术。
图1-23 ARMv7以前ARM体系结构发展概况
(7)ARMv7
在2004年以后,ARM体系结构发展到了ARMv7,推出了全新的CortexTM系列,采用了Thumb-2技术,同时采用NEONTM技术,以增强DSP和多媒体处理性能。CortexTM系列有三种类型:
● A(应用处理器);
● R(嵌入式实时处理器);
● M(微控制器)。
1.4.2 CortexTM系列
1.Cortex-A(ARMv7-A)
ARM Cortex™-A系列的应用型处理器可向托管丰富的操作系统平台的设备和用户应用提供全方位的解决方案,包括超低成本的手机、智能手机、移动计算平台、数字电视、机顶盒、企业网络、打印机和服务器解决方案。高性能的Cortex-A15、可伸缩的Cortex-A9、经过市场验证的Cortex-A8处理器和高效的Cortex-A5处理器均共享同一体系结构,因此具有完整的应用兼容性,支持传统的ARM、Thumb®指令集和新增的高性能紧凑型Thumb-2 指令集。
(1)Cortex-A8
Cortex-A8只支持单核,是第一个采用超标量架构的ARM处理器,支持Thumb®-2/ Thumb和NEON™,支持VFPv3 浮点。在65nm G+ 工艺下可以达到1GHz的频率。
(2)Cortex-A5
Cortex-A5 支持1~4个一致内核,是能效最高、成本最低的处理器,能够向最广泛的设备提供Internet访问:从入门级智能手机、低成本手机和智能移动终端到普遍采用的嵌入式、消费类和工业设备。在Cortex-A8基础上,加强了NEON™,同时提供Jazelle®DBX和RCT支持。最高标准工作频率为1GHz。
(3)Cortex-A9
Cortex-A9支持1~4个一致内核,高性能和高能效,使其成为需要在低功耗或散热受限的成本敏感型设备中提供高性能设计的理想解决方案。它既可用做单核处理器,也可用做可配置的多核处理器,在Cortex-A5基础上提供Jazelle®DBX和RCT支持,和DSP扩展支持。最高标准工作频率为2GHz。
(4)Cortex-A15
Cortex-A15可以在单处理器群集中集成1~4个SMP,并且可以通过AMBA®4技术实现多个一致的SMP处理器群集。在Cortex-A9的基础上增加TrustZone®安全技术、硬件虚拟化支持和大物理地址扩展(LPAE)。在高级基础结构应用中,Cortex-A15的运行速度最高可达2.5GHz。
2.Cortex-R(ARMv7-R)
ARM Cortex™-R实时处理器为具有严格的实时响应限制的深层嵌入式系统提供高性能计算解决方案。目标应用包括:
● 智能手机和基带调制解调器中的移动手机处理;
● 企业系统,如硬盘驱动器、联网和打印;
● 家庭消费性电子产品、机顶盒、数字电视、媒体播放器和数字相机;
● 用于医疗行业、工业和汽车行业的可靠系统的嵌入式微控制器。
在这些应用中,采用的是对处理响应设置硬截止时间的系统,如果要避免数据丢失或机械损伤,则必须符合所设置的这些硬截止时间。因此Cortex-R处理器是专为高性能、可靠性和容错能力而设计的,其行为具有高确定性,同时保持很高的能效和成本效益。
(1)Cortex-R4
Cortex-R4 处理器是第一个基于ARMv7-R体系结构的深层嵌入式实时处理器。它专用于大容量深层嵌入式片上系统应用,如硬盘驱动器控制器、无线基带处理器、消费性产品和汽车系统的电子控制单元。
(2)Cortex-R5
Cortex-R5处理器为市场上的实时应用提供高性能解决方案,包括移动基带、汽车、大容量存储、工业和医疗市场。该处理器基于ARMv7R体系结构。因此,它提供了一种从Cortex-R4处理器向上迁移到更高性能的Cortex-R7处理器的简单迁移途径。Cortex-R5处理器扩展了Cortex-R4处理器的功能集,支持在可靠的实时系统中获得更高级别的系统性能、提高效率和可靠性并加强错误管理。这些系统级功能包括高优先级的低延迟外设端口(LLPP)和加速器一致性端口(ACP),前者用于快速外设读写,后者用于提高效率并与外部数据源达成更可靠的高速缓存一致性。
(3)Cortex-R7
Cortex-R7处理器为范围广泛的深层嵌入式应用提供了高性能的双核、实时解决方案。Cortex-R7处理器通过引入新技术(包括无序执行和动态寄存器重命名),并与改进的分支预测、超标量执行功能和用于除法及其他功能的更快的硬件支持相结合,提供了比其他Cortex-R系列处理器高得多的性能级别。
3.Cortex-M(ARMv7-M)
ARM Cortex™-M处理器系列是一系列可向上兼容的高能效、易于使用的处理器,这些处理器旨在帮助开发人员满足将来的嵌入式应用的需要。这些需要包括以更低的成本提供更多功能、不断增加连接、改善代码重用和提高能效。
Cortex-M系列针对成本和功耗敏感的MCU和终端应用(如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械)的混合信号设备进行优化。
ARM Cortex-M处理器是全球微控制器标准,已许可给40个以上的ARM合作伙伴,包括NXP Semiconductors、Fujitsu、STMicroelectronics、Texas Instruments和Toshiba等领先供应商(见图1-24)。使用标准处理器使ARM合作伙伴可以创建具有一致体系结构的设备,同时使其可以专注于创建优秀的设备实现。
图1-24 ARM Cortex-M的主要合作者
这些ARM合作伙伴往往在Cortex-M的基础上加上自己领先的外设作为参与微控制器领域竞争的主流产品。
Cortex-M系列是必须考虑不同成本、功耗和性能的各类可兼容、易于使用的嵌入式设备(如微控制器(MCU))的理想解决方案。每个处理器都针对十分广泛的嵌入式应用范围提供最佳权衡取舍。ARM Cortex-M系列的比较如表1-6所示。
表1-6 ARM Cortex-M系列的比较
(1)Cortex-M0
ARM Cortex™-M0处理器是现有的最小、能耗最低和能效最高的ARM处理器。该处理器硅面积极小、能耗极低并且所需的代码量极少。Cortex-M0 处理器超低的门数也使得它可以部署在模拟和混合信号设备中。
Cortex-M0是各种应用中8/16位设备的自然高性价比换代产品,同时保留与功能丰富的Cortex-M3处理器的工具和二进制向上兼容性。
Cortex-M0处理器在不到12000门的面积内能耗仅有85µW/MHz(0.085毫瓦),所凭借的是作为低能耗技术的领导者和创建超低能耗设备的主要推动者的ARM专门技术。
(2)Cortex-M1
ARM Cortex™-M1 处理器是第一个专为FPGA中的实现设计的ARM处理器。Cortex-M1 处理器面向所有主要的FPGA设备,并包括对领先的FPGA综合工具的支持,允许设计者为每个项目选择最佳实现。Cortex-M1处理器使OEM能够通过在跨FPGA、ASIC和ASSP的多个项目之间合理地利用软件和工具投资来节省大量成本,此外还能够通过使用行业标准处理器实现更大的供应商独立性。
(3)Cortex-M3
ARM Cortex™-M3处理器是行业领先的32位处理器,适用于具有高确定性的实时应用,允许合作伙伴专门开发更为广泛的设备,包括微控制器、汽车车体系统、工业控制系统以及无线网络和传感器,从而生产高性能且低成本的产品。
该处理器提供出色的计算性能和对事件的卓越系统响应,同时可以应对低动态和静态功率限制的挑战。该处理器是高度可配置的,可以支持范围广泛的实现(从那些需要内存保护和强大跟踪技术的实现,到那些需要极小面积的对成本非常敏感的设备)。
(4)Cortex-M4
ARM Cortex™-M4处理器是由ARM专门开发的最新嵌入式处理器,用于满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。高效的信号处理功能与Cortex-M处理器系列的低功耗、低成本和易于使用的优点的组合,旨在满足专门面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。
Cortex-M系列处理器(见图1-25)都是二进制向上兼容的,这使得软件重用以及从一个Cortex-M处理器无缝发展到另一个成为可能。
图1-25 ARM Cortex-M系列组成与发展
1.5 Cortex-M3相关特性
Cortex-M3于2004年发布,是ARM v7体系结构M系列的第一款处理器,并在最近通过新技术对其进行了更新(可配置性),是专门针对微控制器应用开发的主流ARM处理器。
Cortex-M3能够提供更高的性能和更丰富的功能。
1.5.1 低功耗和高性能
Cortex-M3具有高性能和低动态能耗,在 90nm基础上为 12.5 DMIPS/mW。将集成的睡眠模式与可选的状态保留功能相结合,Cortex-M3处理器确保对于同时需要低能耗和出色性能的应用设计中不需要寻找折中,而是直接的解决方案。ARM Cortex-M3的性能与功率比较如表1-7所示。
表1-7 ARM Cortex-M3的性能与功率比较
通过表1-7可以得出两点:
(1)Cortex-M3更加灵活,可以根据速度和面积进行定制
在一些需要高性能的场合,可以进行速度优化;在一些对体积敏感的应用场合,可以在保持总体性能依然强劲的前提下进行体积优化。此外,Cortex-M3还同时具有满足180nm和90nm生产工艺的能力。
(2)性能更强,能耗更低,面积更小
在180nm工艺速度优化条件下,可以工作在100MHz,性能可以达到125DMIPS,而面积只有0.37m2,能耗只有3.75DMIPS/mW。也就是说,在满负荷工作(内核工作频率为100MHz,性能达到125DMIPS)时,总能耗只有:
125DMIPS÷3.75DMIPS/mW=33.33mW
假设Cortex-M3内核电压为1.8V,则对应的电流为:
33.33mW÷1.8V=18.52mA
在90nm工艺速度优化条件下,工作频率可以高达275MHz,性能可以达到340DMIPS,而面积只有0.083m2。Cortex-M3的强劲性能和低功耗由此可见一斑。
需要额外说明的一点就是,Cortex-M3只是实际的嵌入式微控制器产品的CPU,一般厂商在生产时会集成RAM、ROM、管理电路及其他的外设。在面积和能耗计算上必须以该型号嵌入式微控制器的产品手册为准。
1.5.2 完善的功能
Cortex-M3执行Thumb®-2指令集以获得最佳性能和代码大小,包括硬件除法、单周期乘法和位字段操作。
硬件除法和单周期乘法给予了嵌入式微控制器更强大的数据处理能力。在采用Cortex-M3之前的大多数嵌入式微控制器没有专门的除法器,除法要依靠编译器采取一定的转换方法或者开发者自行编制程序完成,这样需要耗费许多周期和资源,采用乘法指令也是多周期的,这就限制了微控制器对数据处理的响应速度。而Cortex-M3采用硬件除法和单周期乘法,可以很好地适应应用中对于数据处理能力的依赖和需求。
Cortex-M3具有NVIC(嵌套向量中断控制器),由于与处理器紧密结合,NVIC可以实现低延迟中断处理。NVIC在设计时是高度可配置的,最多可提供240个具有单独优先级、动态重设优先级功能和集成系统时钟的系统中断。
Cortex-M3的NVIC的特点如下:
● 可嵌套中断支持;
● 向量中断支持;
● 动态优先级调整支持;
● 中断延迟大大缩短;
● 中断可屏蔽。
此外,Cortex-M3还有可选的存储器保护单元(MPU)。如果配置该存储器保护单元,就可以对特权级访问和用户级访问分别施加不同的访问限制。当检测到违规访问(Violated)时,MPU就会产生一个Fault异常,可以由Fault异常的服务例程来分析该错误,并且在需要时改正它。
MPU在保护内存时是按区管理的。它可以把某些内存region设置成只读,从而避免了那里的内容被意外更改;还可以在多任务系统中把不同任务之间的数据区隔离。
使用MPU可以使嵌入式系统更具健壮性和可靠性,很多行业标准,尤其是汽车、航空领域,对使用MPU进行保护都做了专门规定。
1.5.3 丰富的连接
Cortex-M3具有多种高性能总线接口:
● 指令存储区总线;
● 系统总线;
● 私有外设总线。
其中有两条指令存储区总线负责对代码存储区的访问,分别是I-Code总线和D-Code总线。前者用于取指,后者用于查表等操作,两者均按最佳执行速度进行了优化。
系统总线用于访问内存和外设,可以访问的存储空间包括SRAM,片上外设,片外RAM,片外扩展设备,以及系统级存储区的部分空间。
私有外设总线负责一部分私有外设的访问,主要是在系统级存储区调试组件。这个低成本调试接口是可选的。
Cortex-M3是一个32位处理器内核。内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。Cortex-M3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样,Cortex-M3的强大性能使其可以有效处理多个I/O通道和协议标准,如USB OTG(On-The-Go)。
1.5.4 兼容性
由于ARM7的广泛运用,有大量的开发人员对于ARM7已经非常熟悉和了解,产品代码和应用案例十分丰富,而Cortex-M3保持了与ARM7的兼容,使应用产品可以很方便地由ARM7升级到Cortex-M3。
关于从ARM7过渡到Cortex-M3,请参考ARM官方白皮书:
《ARM Cortex-M3 Processor Software Development for ARM7TDMI Processor Programmers》
1.6 从Cortex-M3走向整个ARM世界
古人云:“叶落知秋,举一明三”。
通过Cortex-M3的学习可以帮助我们了解ARM体系结构。由于Cortex-M系列各个分支相差不大,可以说掌握了Cortex-M3就是掌握了Cortex-M系列。同时,由于Cortex-M涉及的一些基本概念是共性的,且Cortex-M与Cortex-R、Cortex-A同本同源,有了Cortex-M的基础,对于实际业务中由Cortex-M转向Cortex-R和Cortex-A具有触类旁通、事半功倍的效果。
当前,及可以预期的将来,整个ARM世界就是由Cortex-M、Cortex-R和Cortex-A构成的。因此,读者完全可以满怀信心,由Cortex-M3走向整个ARM世界。
任何武学都不是一蹴而就的,需要有机缘,更要勤学苦练。学习一门实用技术也是如此,需要专注与勤奋。
此外,Cortex-M3构成的是一个CPU而非整个嵌入式微处理器,市面上从来没有出现过所谓纯粹的Cortex-M3产品。正如前文所述,ARM公司通ortex-M许可给其40多个合作伙伴,使这些ARM合作伙伴在Cortex-M的基础上加上自己领先的外设作为其主流产品。
图1-26 ARM Cortex-M3结构框图
因此,我们需要通过在这些主流产品里选取其中一个具体型号进行分析、实践,根据所有相关产品的一致体系结构特点,一窥整个Cortex-M3乃至整个ARM的全貌。让我们以此进入32位高速嵌入式微控制器领域,开启在ARM世界中精彩纷呈的新的一页。