嵌入式系统通常由包含有嵌入式处理器、嵌入式操作系统、应用软件和外围设备接口的嵌入式计算机系统和执行装置(被控对象)组成。嵌入式计算机系统是整个嵌入式系统的核心,可以分为硬件层、中间层、系统软件层和应用软件层。执行装置接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。
1.嵌入式计算机系统的硬件层
硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。硬件层通常是一个以嵌入式处理器为中心的,包含有电源电路、时钟电路和存储器电路的电路模块,其中操作系统和应用程序都固化在模块的ROM中。
1.1 嵌入式微处理器
嵌入式微处理器是嵌入式系统硬件层的核心,嵌入式微处理器将通用CPU中许多由板卡完成的任务集成到芯片内部,从而有利于系统设计趋于小型化、高效率和高可靠性。嵌入式微处理器大多工作在为特定用户群所专门设计的系统中。n嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令系统可以选用精简指令系统(Reduced Instruction SetComputer,RISC)和复杂指令集系统CISC(Complex Instruction SetComputer, CISC)。
嵌入式微处理器有各种不同的体系,目前全世界嵌入式微处理器已经超过1000多种,体系结构有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86等。即使在同一体系中,也可以具有不同的时钟频率、数据总线宽度、接口和外设。目前没有一种嵌入式微处理器可以主导市场,嵌入式微处理器的选择是根据具体的应用而决定的。
1.2 存储器
嵌入式系统的存储器包含Cache、主存储器和辅助存储器,用来存放和执行代码。
① Cache是一种位于主存储器和嵌入式微处理器内核之间的快速存储器阵列,存放的是最近一段时间微处理器使用最多的程序代码和数据。
Cache一般集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的存储容量大小依不同处理器而定。
② 主存储器用来存放系统和用户的程序及数据,是嵌入式微处理器能直接访问的存储器。主存储器包含有ROM和RAM,可以位于微处理器的内部或外部。常用的ROM类存储器有NOR Flash、EPROM和PROM等,RAM类存储器有SRAM、DRAM和SDRAM等,容量为256KB~1GB。
③ 辅助存储器通常指硬盘、NAND Flash、CF卡、MMC和SD卡等,用来存放大数据量的程序代码或信息,一般容量较大,但读取速度与主存相比要慢一些。
1.3 通用设备接口和I/O接口
嵌入式系统通常具有与外界交互所需要的通用设备接口,如GPIO、 A/D(模/数转换接口)、D/A(数/模转换接口)、RS-232接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。
2.中间层
中间层也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),位于硬件层和软件层之间,将系统上层软件与底层硬件分离开来。
BSP作为上层软件与硬件平台之间的接口,需要为操作系统提供操作和控制具体硬件的方法。不同的操作系统具有各自的软件层次结构,BSP需要为不同的操作系统提供特定的硬件接口形式。BSP使上层软件开发人员无需关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。
BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。BSP一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置等功能。
2.1 嵌入式系统硬件初始化
系统初始化过程按照自底向上、从硬件到软件的次序依次可以分为片级初始化、板级初始化和系统级初始化3个主要环节。
① 片级初始化是一个纯硬件的初始化过程,包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器核心工作模式和嵌入式微处理器的局部总线模式等。
② 板级初始化是一个同时包含软硬件两部分在内的初始化过程,完成嵌入式微处理器以外的其他硬件设备的初始化,设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。
③ 系统级初始化主要进行操作系统的初始化。BSP将对嵌入式微处理器的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操作。最后,操作系统创建应用程序环境,并将控制权交给应用程序的入口。
2.2 硬件相关的设备驱动程序
nnBSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用,而是在系统初始化过程中由BSP将他们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。
3.系统软件层
系统软件层通常包含有嵌入式操作系统(Embedded Operating System,EOS) 、文件系统、网络系统及通用组件模块组成。
3.1 嵌入式操作系统
EOS除具备了一般操作系统最基本的任务调度、同步机制、中断处理、文件处理等功能外,还具有如下特点:
强实时性;
支持开放性和可伸缩性的体系结构,具有可裁减性;
提供统一的设备驱动接口;
支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,提供强大的网络功能;
嵌入式操作系统的用户接口通过系统的调用命令向用户程序提供服务;
嵌入式系统一旦开始运行就不需要用户过多的干预;
嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中;
具有良好的硬件适应性(可移植性)。
3.2 文件系统
嵌入式文件系统主要提供文件存储、检索和更新等功能。嵌入式文件系统通常支持FAT32、JFFS2、YAFFS等几种标准的文件系统,一些嵌入式文件系统还支持自定义的实时文件系统。
嵌入式文件系统以系统调用和命令方式提供文件的各种操作,如设置、修改对文件和目录的存取权限,提供建立、修改、改变和删除目录等服务,提供创建、打开、读写、关闭和撤销文件等服务。
4.应用软件层
应用软件层用来实现对被控对象的控制功能,由所开发的应用程序组成,面向被控对象和用户。