任务1.2 熟悉嵌入式系统的定义、发展简史、分类及特点
嵌入式系统有多种多样的定义,但本质是相同的。美国CRC出版社出版的Jack Ganssle和Michael Barr的著作 Embedded System Dictionary 给出的嵌入式系统的定义 :嵌入式系统是一种计算机硬件和软件的组合,也许还有机械装置,用于实现一个特定功能。在某些特定情况下,嵌入式系统是一个大系统或产品的一部分。 该词典还给出了嵌入式系统的一些示例,如微波炉、手持电话、数字手表、巡航导弹、全球定位系统接收机、数字照相机、遥控器等,难以尽数。通过与通用计算机的对比可以更形象地理解嵌入式系统的定义。该词典给出的通用计算机定义是: 计算机硬件和软件的组合,用作通用计算平台。 个人计算机是最流行的现代计算机。
下面将列举其他文献给出的定义,以便了解对嵌入式系统定义的不同表述方式,也可看作从不同角度定义嵌入式系统。
国家标准GB/T 22033—2017《信息技术嵌入式系统术语》给出的嵌入式系统定义: 置入应用对象内部,起信息处理或控制作用的专用计算机系统。 它是以应用为中心,以计算技术为基础,软件硬件可剪裁,对功能、可靠性、成本、体积、功耗有严格约束的专用计算机系统,其硬件至少包含一个微控制器或微处理器。
IEEE(Institute of Electrical and Electronics Engineers,电气电子工程师学会)给出的嵌入式系统定义:嵌入式系统是控制、监视或者辅助装置、机器和设备运行的装置。
维基百科(英文版)给出的嵌入式系统定义:嵌入式系统是一种用计算机控制的、具有特定功能的、较小的机械或电气系统,且经常有实时性的限制,在被嵌入整个系统中时一般包含硬件部件和机械部件。现如今,嵌入式系统控制了人们日常生活中的许多设备,98%的微处理器被用在了嵌入式系统中。
国内对嵌入式系统的定义曾进行过广泛讨论,有许多不同说法。其中,嵌入式系统定义的涵盖面问题是主要争论焦点之一。例如,有的学者认为不能把手持电话叫嵌入式系统,而只能把其中起控制作用的部分叫嵌入式系统,而手持电话可以称为嵌入式系统的应用产品。其实,这些并不妨碍人们对嵌入式系统的理解,因此不必对定义感到困惑。有些国内学者特别指出,在理解嵌入式系统定义时,不要把嵌入式系统与嵌入式系统产品相混淆。实际上,从口语或书面语言角度,不区分“嵌入式系统”与“嵌入式系统产品”,只要不妨碍对嵌入式系统的理解就没有关系。
总的说来,可以从计算机本身的角度来概括表述嵌入式系统。嵌入式系统,即嵌入式计算机系统,它是不以计算机面貌出现的“计算机”,这个计算机系统隐含在各类具体的产品之中,这些产品中的计算机程序起到了重要作用。
1.嵌入式系统的由来
通俗地说,计算机是因科学家需要一个高速的计算工具而产生的。 直到20世纪70年代,电子计算机在数字计算、逻辑推理及信息处理等方面表现出非凡的能力。而在通信、测控与数据传输等领域,人们对计算机技术给予了更大的期待。这些领域的应用与单纯的高速计算要求不同,主要表现在:直接面向控制对象;嵌入具体的应用产品中,而非以计算机的面貌出现;能在现场连续可靠地运行;体积小,应用灵活;突出控制功能,特别是对外部信息的捕捉与丰富的输入/输出功能等。由此可以看出,满足这些要求的计算机与满足高速数值计算的计算机是不同的。因此,一种称之为微控制器(单片机) 的技术得以产生并发展。为了区分这两种计算机类型,通常把满足海量高速数值计算的计算机称为 通用计算机系统 ,而把嵌入实际应用系统中,实现嵌入式应用的计算机称为 嵌入式计算机系统 ,简称嵌入式系统。 可以说,是通信、测控与数据传输等领域对计算机技术的需求催生了嵌入式系统的产生。
2.嵌入式系统的发展
1946年,世界上第一台电子数字积分计算机(The Electronic Numerical Integrator And Calculator,ENIAC)诞生。它由美国宾夕法尼亚大学莫尔电工学院制造,重达30t,总体积约90m 3 ,占地170m 2 ,耗电140kW·h,运算速度为5000次/s加法,标志着计算机时代开始。其最重要的部件是 中央处理器 (Central Processing Unit,CPU), 它是一台计算机的运算和控制核心。CPU的主要功能是解释指令和处理数据,其内部含有运算逻辑部件,即算术逻辑运算单元(Arithmetic Logic Unit,ALU)、寄存器部件和控制部件等。
1971年,Intel公司推出了单芯片4004微处理器(Micro-Processor Unit,MPU),它是世界上第一个商用微处理器,Busicom公司就是用它制作电子计算器的,这就是嵌入式计算机的雏形。1976年,Intel公司又推出了MCS-48单片机(Single Chip Microcomputer,SCM),这个内部含有1KB只读存储器(Read Only Memory,ROM)、64B随机存取存储器(Random Access Memory,RAM)的简单芯片成为世界上第一个单片机,开创了将ROM、RAM、定时器、并行口、串行口及其他各种功能模块等CPU外部资源,与CPU一起集成到一个硅片上生产的时代。1980年,Intel公司对MCS-48单片机进行了完善,推出了8位MCS-51单片机,并获得巨大成功,开启了嵌入式系统的单片机应用模式。至今,MCS-51单片机仍有较多应用。这类系统大部分应用于一些简单、专业性强的工业控制系统中,早期主要使用汇编语言编程,后来大部分使用C语言编程,一般没有操作系统的支持。
20世纪80年代,市场上逐步出现了16位、32位微控制器(Micro-Controller Unit,MCU)。1984年,Intel公司推出了16位8096系列,并将其称为嵌入式微控制器,这可能是“嵌入式”一词第一次在微处理机领域出现。这个时期,Motorola、Intel、TI、NXP、Atmel、Microchip、Hitachi、Philips、ST等公司陆续推出了不少微控制器产品,功能不断变强,也逐步支持了实时操作系统。
20世纪90年代开始,数字信号处理器(Digital Signal Processing,DSP)、片上系统(System on Chip,SoC)得到了快速发展。嵌入式处理器扩展方式从并行总线型发展出各种串行总线,并被工业界所接受,形成了一些工业标准,如集成电路互联(Inter-Integrated Circuit,I 2 C)总线、串行外设接口(Serial Peripheral Interface,SPI)总线。甚至将网络协议的低两层或低三层都集中到嵌入式处理器上,如某些嵌入式处理器集成了控制器局域网(Control Area Network,CAN)接口、以太网接口。随着超大规模集成电路技术的发展,将数字信号处理器、精简指令集计算机 、存储器、I/O、半定制电路集成到单芯片的产品SoC中。值得一提的是,ARM微处理器的出现,促进了嵌入式系统的较快发展。
21世纪开始以来,嵌入式系统芯片制造技术快速发展,融合了以太网与无线射频技术,成为物联网(Internet of Things,IoT)的关键技术基础。嵌入式系统发展的目标应该是实现信息世界和物理世界的完全融合,构建一个可控、可信、可扩展并且安全高效的 信息物理系统 (Cyber-Physical System,CPS),从根本上改变人类构建工程物理系统的方式。此时的嵌入式设备不仅要具备个体智能(Computation,计算)、交流智能(Communication,通信),还要具备在交流中的影响和响应能力(Control,控制与被控),实现“智慧化”。显然,今后嵌入式系统研究要与网络和高性能计算的研究更紧密地结合。
在嵌入式系统的发展历程中,由于ARM处理器占据了嵌入式市场的最重要份额,因此本书以ARM处理器为蓝本阐述嵌入式应用,下面简要介绍ARM。
3.ARM简介
ARM(Advanced RISC Machine)既可以认为是一个公司的名称,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名称。
1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州San Jose VLSI技术公司制造。20世纪80年代后期,ARM很快开发完成Acorn的台式机产品,形成了英国的计算机教育基础。1990年成立了Advanced RISC Machines Limited(后来简称为ARM Limited,ARM公司)。20世纪90年代,ARM的32位嵌入式RISC处理器扩展到世界各地。ARM处理器具有耗电少、功能强、16位/32位双指令集和众多合作伙伴的特点。ARM处理器占据了低功耗、低成本和高性能的嵌入式系统应用领域的重要地位。目前,采用ARM技术知识产权(Intellectual Property,IP)的微处理器,即通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类嵌入式产品市场,基于ARM技术的微处理器的应用,约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入人们生活的各个方面。
1993年,ARM公司发布了全新的ARM7处理器核心。其中的代表产品为ARM7-TDMI,它搭载了Thumb指令集 ,是ARM公司通用32位微处理器家族的成员之一。其代码密度提升了35%,内存占用也与16位处理器相当。
2004年开始,ARM公司在经典处理器ARM11以后不再用数字命名处理器,而统一改用“Cortex”命名,并分为A、M和R三类,旨在为各种不同的市场提供服务。
ARM Cortex-A系列处理器是基于ARM v8A/v7A架构基础的处理器,面向具有高计算要求、运行丰富操作系统以及提供交互媒体和图形体验的应用领域,如智能手机、移动计算平台、超便携的上网笔记本计算机或智能笔记本计算机等。
ARM Cortex-M系列是基于ARM v7M/v6M架构基础的处理器,面向对成本和功耗敏感的MCU和终端应用,如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械等。
ARM Cortex-R系列是基于ARM v7R架构基础的处理器,面向实时系统,为具有严格的实时响应限制的嵌入式系统提供高性能计算解决方案。目标应用包括智能手机、硬盘驱动器、数字电视、医疗行业、工业控制、汽车电子等。Cortex-R处理器是专为高性能、可靠性和容错能力而设计的,其行为具有高确定性,同时保持很高的能效和成本效益。
2009年,ARM公司推出了体积更小、功耗更低和能效更高的处理器Cortex-M0。这款32位处理器问世后,打破了一系列的授权记录,成为各制造商竞相争夺的“香饽饽”,仅9个月时间,就有15家厂商与ARM公司签约。2011年,ARM公司推出了旗下首款64位架构ARM v8。2016年,ARM公司推出了Cortex-R8实时处理器,可广泛应用于智能手机、平板计算机、物联网设备等。2018年ARM公司推出一项名为integrated SIM的技术,将移动设备用户识别卡(Subscriber Identification Module,SIM)与射频模组整合到芯片,以便为物联网(IoT)应用提供更便捷的产品。
综上所述,不同嵌入式处理器,应用领域有所侧重,开发方法与知识要素也有所不同。基于此,下面介绍嵌入式系统的分类。
嵌入式系统的分类标准有很多,有的按照处理器位数来分,有的按照复杂程度来分,还有的按其他标准来分,这些分类方法各有特点。从嵌入式系统的学习角度来看,因为应用于不同领域的嵌入式系统,其知识要素与学习方法有所不同,所以可以按应用范围简单地把嵌入式系统分为电子系统智能化类(微控制器类)和计算机应用延伸类(应用处理器类)这两大类。一般来说,微控制器与应用处理器的主要区别在于可靠性、数据处理量、工作频率等方面,相对应用处理器来说,微控制器的可靠性要求更高、数据处理量较小、工作频率较低。
1.电子系统智能化类(微控制器类)
电子系统智能化类的嵌入式系统,主要用于工业控制、现代农业、家用电器、汽车电子、测控系统、数据采集等,这类应用所使用的嵌入式处理器一般被称为 微控制器。这类嵌入式系统产品,从形态上看,更类似于早期的电子系统,但内部计算程序起核心控制作用。 ARM公司的面向各类嵌入式应用的微控制器内核Cortex-M系列及面向实时应用的高性能内核Cortex-R系列属于此类。相对于Cortex-M系列来说,Cortex-R系列主要针对高实时性应用,如硬盘控制器、网络设备、汽车应用(安全气囊、制动系统、发动机管理)等。 从学习与开发角度,电子系统智能化类的嵌入式应用,需要终端产品开发者面向应用对象设计硬件、软件,注重软件、硬件的协同开发。因此,开发者必须掌握底层硬件接口、底层驱动及软硬件密切结合的开发调试技能。电子系统智能化类的嵌入式系统(即微控制器),是嵌入式系统的软硬件基础,是学习嵌入式系统的入门环节,且为重要的一环。 从操作系统角度看,电子系统智能化类的嵌入式系统,可以不使用操作系统,也可以根据复杂程度及芯片资源的容纳程度,使用操作系统。电子系统智能化类的嵌入式系统使用的操作系统通常是实时操作系统(Real Time Operating System, RTOS),如RT-Thread、mbedOS、MQXLite、FreeRTOS、μCOS-III、μCLinux、VxWorks和eCos等。
2.计算机应用延伸类(应用处理器类)
计算机应用延伸类的嵌入式系统,主要用于平板计算机、智能手机、电视机顶盒、企业网络设备等,这类应用所使用的嵌入式处理器一般被称为 应用处理器 (Application Processor), 也称为多媒体应用处理器(Multimedia Application Processor,MAP)。这类嵌入式系统产品,从形态上看,更接近通用计算机系统。从开发方式上看,也类似于通用计算机的软件开发方式。从学习与开发角度看,计算机应用延伸类的嵌入式应用,终端产品开发者大多购买厂商制作好的硬件实体在嵌入式操作系统下进行软件开发,或者还需要掌握少量的对外接口方式。因此,从知识结构角度看,学习这类嵌入式系统,对硬件的要求相对较少。计算机应用延伸类的嵌入式系统,即应用处理器,也是嵌入式系统学习中重要的一环。但是,从学习规律角度看,若是要全面学习掌握嵌入式系统,应该先学习掌握微控制器,然后在此基础上,进一步学习掌握应用处理器编程,而不要倒过来学习。 从操作系统角度看,计算机应用延伸类的嵌入式系统一般使用非实时嵌入式操作系统,通常称为嵌入式操作系统(Embedded Operation System,EOS),如Android、Linux、iOS、Windows CE等。当然,非实时嵌入式操作系统与实时操作系统也不是明确划分的,只是粗略分类,侧重有所不同而已。现在的RTOS的功能也在不断提升,一般的嵌入式操作系统也在提高实时性。
当然,工业生产车间经常看到利用工业控制计算机、个人计算机(PC)控制机床、生产过程等,这些可以说是嵌入式系统的一种形态。因为它们完成特定的功能,且整个系统不被称之为计算机,而是另有名称,如数控机床、加工中心等。但是,从知识要素角度看,这类嵌入式系统不具备普适意义,本书不讨论这类嵌入式系统。
不同学者对嵌入式系统也许有不同的说法,这里从与通用计算机对比的角度来介绍嵌入式系统的特点。
与通用计算机系统相比,嵌入式系统的存储资源相对匮乏、速度较低,对实时性、可靠性、知识综合要求较高。嵌入式系统的开发方法、开发难度、开发手段等,均不同于通用计算机程序,也不同于常规的电子产品。嵌入式系统是在通用计算机发展基础上,面向测控系统逐步发展起来的。因此,从与通用计算机对比的角度来认识嵌入式系统的特点,对学习嵌入式系统具有实际意义。
1.嵌入式系统属于计算机系统,但不单独以通用计算机的面目出现
嵌入式系统不仅具有通用计算机的主要特点,而且具有自身特点。嵌入式系统也必须要有软件才能运行,但其隐含在种类众多的具体产品中。同时,通用计算机种类屈指可数,而嵌入式系统不仅芯片种类繁多,而且由于应用对象大小各异,嵌入式系统作为控制核心,已经融入各个行业的产品之中。
2.嵌入式系统开发需要专用工具和特殊方法
嵌入式系统不像通用计算机那样,有了计算机系统就可以进行应用软件的开发。一般情况下,微控制器或应用处理器的芯片本身不具备开发功能,必须要有一套与相应芯片配套的开发工具和开发环境。这些开发工具和开发环境一般基于通用计算机上的软硬件设备,以及逻辑分析仪、示波器等。开发过程中往往有工具机(一般为PC或笔记本计算机)和目标机(实际产品所使用的芯片)之分,工具机用于程序的开发,目标机作为程序的执行机,开发时需要交替结合进行。编辑、编译、链接生成机器码在工具机完成,通过写入调试器将机器码下载到目标机中,进行运行与调试。
3.使用MCU设计嵌入式系统,数据与程序空间采用不同存储介质
在通用计算机系统中,程序存储在硬盘上。实际运行时,通过操作系统将要运行的程序从硬盘调入内存(RAM),运行中的程序、常数、变量均在RAM中。一般情况下,在以MCU为核心的嵌入式系统中,其程序被固化到非易失性存储器(FLASH存储器)中。变量及堆栈使用RAM存储器。
4.开发嵌入式系统涉及软件、硬件及应用领域的知识
嵌入式系统与硬件紧密相关,嵌入式系统的开发需要硬件和软件的协同设计、协同测试。同时,由于嵌入式系统专用性很强,通常是用在特定应用领域,如嵌入在手机、冰箱、空调、各种机械设备、智能仪器仪表中,起核心控制作用,且功能专用。因此,进行嵌入式系统的开发,还需要对领域知识有一定的理解。当然,一个团队协作开发一个嵌入式产品,其中各个成员可以扮演不同角色,但也需要对系统的整体理解与把握并相互协作,有助于一个稳定可靠嵌入式产品的诞生。