1.2.3 嵌入式系统的基本组成
由于嵌入式系统的应用相关性特点,不同嵌入式系统具体硬件和软件具有一定的差异性。但从宏观上来看,嵌入式系统是专用计算机应用系统,它具有一般计算机组成的共性,也是由硬件和软件两大部分构成的。
1. 嵌入式系统的硬件基本结构
图1.1 典型的嵌入式系统硬件组成的方框图
嵌入式系统的硬件结构如图1.1所示,是以嵌入式处理器为核心,配置存储器、I/O设备、通信模块以及电源等必要的辅助接口组成。在嵌入式系统设计中,应尽可能选择适于系统功能接口的SoC/SOPC芯片,以最少的外围部件构成一个应用系统,满足嵌入式系统的特殊需求。嵌入式处理器可分为三类:嵌入式微处理器、嵌入式微控制器MCU、嵌入式DSP。[7]目前比较有影响的嵌入式RISC处理器产品主要有IBM公司的Power PC、MIPS公司的MIPS、Sun公司的Sparc和ARM公司的ARM系列。除了核心控制部件,常用的外部设备以功能可分为以下5类:(1)存储器、(2)通信接口、(3)输入/输出设备、(4)设备扩展接口、(5)电源及辅助设备。[8]
2. 嵌入式系统的软件层次结构
设计简单的应用程序时可以不使用操作系统,但当所设计的程序较为复杂时,可能就需要一个操作系统(OS)来管理和控制内存、多任务、周边资源等。如图1.2,对于使用操作系统的嵌入式系统来说,嵌入式系统软件结构一般包含以下4个层面:
典型嵌入式系统软件结构示意图
(1)驱动层程序
驱动层程序是嵌入式系统中不可缺少的一部分,使用任何外部设备都需要有相应驱动程序的支持,它为上层软件提供了设备的操作接口。上层软件不用理会设备具体内部操作,只要调用驱动层程序提供的接口即可。驱动层程序一般包括硬件抽象层HAL、板级支持层BSP和设备驱动程序。
硬件抽象层HAL是位于操作系统与硬件电路之间的接口层,其目的在于把硬件抽象化。也就是说系统的设备驱动程序与硬件设备无关,从而大大提高了系统的可移植性。抽象层需要规定统一的软硬件接口标准,一般应包含相关硬件的初始化、数据的输入输出操作、硬件设备的配置操作等功能。
板级支持包BSP是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统的一部分,主要是实现对操作系统支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能更好地运行于硬件主板之间。BSP是相对于操作系统而言的,不同的操作系统对应不同形式的BSP。
设备驱动程序为上层软件提供设备的操作接口。上层软件只需调用驱动程序提供的接口,而不用理会设备的具体内部操作。它不仅要驱动设备实现基本功能函数,并且还应该有完备的错误处理函数,来应对使用过程中的各种差错。[9]
(2)实时操作系统RTOS
实时操作系统(RTOS)是一种支持嵌入式系统运行的操作系统软件。是嵌入式系统中极为重要的组成部分。它负责嵌入式系统的软、硬件资源的分配和调度;控制与协调并发活动;为应用程序的开发提供系统接口等工作。[10]实时操作系统具有通用操作系统的基本特点,同时它还具有实时性强、编码体积小、面向应用和可靠性强等特点。常用的嵌入式实时操作系统有:μC/OS-II、μCLinux、嵌入式Linux、VxWorks、Android、Window CE、pSOS等。