随着信息技术的不断发展,嵌入式系统(Embedded System)越来越多地出现在人们的日常生活中。美国电气和电子工程师协会(Institute of Electrical and Electronics Engineers)将嵌入式系统定义为:用于控制、监视或者辅助操作机器和设备的装置。更具体地说,嵌入式系统是以具体应用为导向的,以计算机技术为核心的,根据具体应用对硬件和软件系统量身定做的便于携带的微型计算机系统。
典型的嵌入式系统包括移动电话、智能手表和平板电脑等,如图1.1所示,这些基于嵌入式技术所构建的便携式电子产品具有以下共同的特点:
(1)体积小,重量轻。例如,移动电话可以放在我们衣服的口袋中,智能手表可以戴在我们的胳膊上,平板电脑可以拿在我们的手上。
(2)功耗低。可以使用体积很小的电池为这些设备提供充足的电量。当这些设备处于待机状态时,电池足以为这些设备提供几天的电量。
(3)成本较低。一般情况下,读者只需要花费不到2000元,读者就可以购买到一个能够满足一般要求的平板电脑。
(4)支持丰富的应用支持。例如,苹果手机提供了大量的应用支持,如移动支付、移动互联和移动交流等。
图1.1 基于嵌入式技术所构建的电子产品
嵌入式技术是构建嵌入式系统的核心,它包含软件和硬件两部分,这是系统层面的概念,如图1.2所示。
1)嵌入式处理器(Embedded Processor)
嵌入式处理器与中央处理单元(Central Processing Unit,CPU)有所不同,主要体现在以下几个方面:
图1.2 嵌入式系统的软件和硬件体系结构
(1)CPU是单个处理器核,其性能高,同时功耗也大。CPU需要额外的存储器系统和外设的支持。Intel公司基于X86结构的CPU内核广泛用于个人电脑和笔记本电脑中。需要注意的是,Intel公司量产的包含多个CPU核的芯片,已经不是传统意义上的CPU。
(2)对于嵌入式处理器而言,根据应用场合的不同,其性能也有所不同,其功耗要小于CPU,但是其性能比CPU要低。例如,在英伟达公司的高性能图睿2嵌入式处理器中,不但集成了ARM Cortex-A9双核CPU,而且还提供了高速缓存、USB接口、图像处理器、图像信号处理器等,如图1.3所示。因此,更严格地说,它是片上系统(System on a Chip,SoC)。
图1.3 英伟达公司的图睿2嵌入式处理器
此外,在嵌入式系统中还有一类性能相对较低的嵌入式处理器,我们通常将其称为微控制器(Micro Control Unit,MCU),也称为单片机。其主要特点包括:①它只有一个处理器内核,如ARM公司的Cortex-M0、Cortex-M3、Cortex-M4,以及Intel公司的8051 CPU;②其内部包含了存储器块、输入输出(I/O)和其他外设;③主要应用于工业控制领域。
例如,我们所说的8051单片机就是指使用MCS-51 CPU内核的MCU,ARM单片机就是指使用了ARM 32位低性能处理器内核(如Cortex-M0、Cortex-M0+)的MCU。
综上所述,不管是CPU、高性能嵌入式处理器还是MCU,它们都是专用集成电路(Application Specific Integrated Circuit,ASIC),属于“芯片”的范畴。
2)供电系统
供电系统用于为嵌入式系统提供电源,通过嵌入式处理器提供的不同电源管理模式,满足嵌入式系统高性能和低功耗的要求。
3)外部存储器系统
除了嵌入式处理器芯片提供的片内存储器,还可以通过嵌入式处理器提供的外部存储器接口扩展大容量的存储器,以满足高性能嵌入式系统的应用要求。例如,运行iOS和Andriod操作系统的嵌入式系统就需要提供大容量的DDR存储器系统。
4)外部设备
嵌入式系统通过嵌入式处理器芯片所提供的外设接口,如USB接口、以太网接口等,与外部设备进行连接。
一个完整的嵌入式系统软件主要包括:板级支持包(Board Support Package,BSP)、嵌入式实时操作系统(Real-Time OS,RTOS)和应用程序(App)。
(1)板级支持包。提供了对外设的驱动支持,以及与操作系统的接口。板级支持包与操作系统之间互相独立。
(2)嵌入式实时操作系统。与PC/笔记本电脑使用的Windows操作系统不同,由于嵌入式系统内存储器资源及所使用处理器性能的限制,需要对嵌入式实时操作系统进行裁剪,以同时满足实时性和占用最少存储器资源的要求。
(3)应用程序(App)。在操作系统之上,应用程序开发者编写满足不同嵌入式应用要求的应用程序。
需要注意的是,对于采用低性能MCU的嵌入式应用而言,不需要嵌入式实时操作系统的支持。这样,通过调用应用程序接口(Application Programming Interface,API)函数,程序员就可以直接在BSP编写应用程序,这就是我们经常所说的“裸奔”。
在MCU上直接“裸奔”的缺点主要包括:①在不同MCU之间移植程序将变得异常困难;②对于App开发人员而言,需要掌握不同MCU的架构,以及指令集的细节问题,这对他们而言是一件极为痛苦的事情;③由于没有操作系统的支持,使得无法实现多任务、分时的运行要求。
因此,即使对于类似于MCU这样低性能的嵌入式处理器而言,都会有一个很小的操作系统提供多任务的运行支持。例如,对于8051单片机而言,KeilμVision集成开发环境就提供了RTX Tiny操作系统的支持。
思考与练习1-1:说明嵌入式系统的定义。
思考与练习1-2:说明CPU和MCU的区别。
思考与练习1-3:说明嵌入式系统和单片机的区别。
思考与练习1-4:说明在一个嵌入式系统中,完整的软件所包含的内容。
思考与练习1-5:说明在一个嵌入式系统中,不搭载操作系统,直接“裸奔”的缺点。