系统是一种根据固定的计划、程序或者规则进行工作、组织或者执行一项或多项任务的方式。系统也是一种工作安排方法,其所有单元能够按照一定的计划或者程序装配在一起,共同完成工作任务。
许多书籍都给出过嵌入式系统的定义,但是对于何为嵌入式系统,什么样的技术又可以称之为嵌入式技术,仍在讨论之中。以下给出一些文献中对于嵌入式系统的定义:
《 Computers as Components——Principles of Embedded Computing System Design 》一书中指出:什么是嵌入式计算系统?如果不严格地定义,它是任何一个包含可编程计算机的设备,但是它本身却不是一个通用计算机。
《 Embedded Microcontrollers 》一书作者认为:嵌入式系统是一种电子系统,它包含微处理器或者微控制器,但是我们不认为它们是计算机——计算机隐藏或者嵌入在系统中。
英国电动机工程师协会定义:嵌入式系统是控制、监视或辅助某个设备、机器甚至工厂运行的设备。它具备4个特征:①用来执行特定的功能;②以微型计算机与外围设备构成核心;③具有严格的时序与稳定度;④全自动操作循环工作。
还可以用以下文字总结嵌入式系统的概念:嵌入式系统一般指非PC系统,有计算机功能但又不称为计算机的设备,它以应用为中心,软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件和硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“机器”或“器件”。
嵌入式系统的基本架构如图1.1所示。
图1.1 嵌入式系统的基本架构
按照嵌入式系统的规模,可以将嵌入式系统分为以下三种类型。
小型嵌入式系统采用一个8位或者16位的微控制器设计;硬件和软件复杂度小,需要进行板级设计。为这些系统开发嵌入式软件时,主要的编程工具是所使用的微控制器或者微处理器专用的编辑器、汇编器和交叉汇编器等,通常利用C语言开发这些系统的软件。
中型嵌入式系统采用一个16位或者32位的微控制器、数字信号处理器(Digital Signal Processor,DSP)或者精简指令集计算机(Reduced Instruction Set Computer,RISC)等设计,硬件和软件复杂度都比较大。对于复杂的软件设计,可以使用如下的编程工具:实时操作系统(Real-Time Operating System,RTOS)、源代码设计工具、模拟器、调试器和集成开发环境(Integrated Development Environment,IDE)等,软件工具往往还提供了硬件复杂性的解决和分析方法。
复杂嵌入式系统的软件和硬件都非常复杂,需要可升级的处理器或者可配置的处理器和可编程逻辑阵列(如FPGA、CPLD等器件)。它们用于特殊应用,在这些应用中,需要硬件和软件协同设计,并且都集成到最终的系统中,然而它们又受到硬件单元所提供的处理速度、存储器等资源的限制。为了解决时间问题,提高系统运行速度,可以在硬件中实现一部分软件功能,例如加密和解密算法、TCP/IP协议栈和网络驱动程序等功能。当然,系统中某些硬件资源的功能模块同样也可以用软件来实现。这些系统的开发工具一般十分昂贵,有时还需要为这些系统开发编译器或者重定目标的编译器等。
由于嵌入式系统由硬件和软件两大部分组成,所以其分类也可以从硬件和软件进行划分。从硬件方面来讲,嵌入式系统的核心是嵌入式微处理器,根据其现状,嵌入式处理器可以分成嵌入式微处理器(Micro Processor Unit,MPU)、嵌入式微控制器(Microcontroller Unit,MCU)、嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP)和嵌入式片上系统(System On Chip,SOC)等。
从软件方面来讲,主要依据使用的操作系统类型来分类。目前嵌入式系统的软件主要有两大类:实时系统和分时系统,其中实时系统又分为硬实时系统和软实时系统两类。