嵌入式系统是专用计算机应用系统,它具有一般计算机组成的共性,也是由硬件和软件组成。本文完整地描述了嵌入式系统的软硬件各部分的组成结构。
嵌入式系统的硬件基本结构
嵌入式系统的硬件架构,是以嵌入式处理器为中心,由存储器、I/O设备、通信模块以及电源等必要的辅助接口组成。嵌入式系统是量身定做的专用计算机应用系统,又不同于普通计算机组成,在实际应用中的嵌入式系统硬件配置非常精简,除了微处理器和基本的外围电路以外,其余的电路都可根据需要和成本进行裁剪、定制,非常经济、可靠。
嵌入式系统的硬件核心是嵌入式微处理器,有时为了提高系统的信息处理能力,常外接DSP和DSP协处理器(也可内部集成),以完成高性能信号处理。
随着计算机技术、微电子技术、应用技术的不断发展及纳米芯片加工工艺技术的发展,以微处理器为核心的集成多种功能的SoC系统芯片已成为嵌入式系统的核心。在嵌入式系统设计中,要尽可能地满足系统功能接口的SoC芯片。这些SoC集成了大量的外围USB、UART、以太网、AD/DA、IIS等功能模块。
可编程片上系统SOPC(System On Programmable Chip)结合了SoC和PLD、FPGA各自的技术优点,使得系统具有可编程的功能,是可编程逻辑器件在嵌入式应用中的完美体现,极大地提高了系统的在线升级、换代能力。
以SoC/SOPC为核心,用最少的外围部件和连接部件构成一个应用系统,满足系统的功能需求,这也是嵌入式系统发展的一个方向。
因此,现代嵌入式设计是以处理器/SoC/SOPC为核心来完成系统设计的,其外围接口包括存储设备、通信扩展设备、扩展设备接口和辅助的机电设备(电源、连接器、传感器等),构成硬件系统。
嵌入式系统软件的层次结构
在设计一个简单的应用程序时,可以不使用操作系统,但在设计较复杂的程序时,可能就需要一个操作系统(OS)来管理和控制内存、多任务、周边资源等。依据系统所提供的程序界面来编写应用程序,可大大减少应用程序员的负担。
对于使用操作系统的嵌入式系统来说,嵌入式系统软件结构一般包含4个层面:设备驱动层、实时操作系统RTOS、应用程序接口API层、实际应用程序层。有些书籍将应用程序接口API归属于OS层,嵌入式系统的软件结构,是按3层划分的。由于硬件电路的可裁剪性和嵌入式系统本身的特点,其软件部分也是可裁剪的。
对于功能简单,仅包括应用程序的嵌入式系统,一般不使用操作系统,仅有应用程序和设备驱动程序。现代高性能嵌入式系统的应用越来越广泛,操作系统的使用成为必然发展趋势。本小节主要讲述的是具有操作系统的嵌入式软件层次。
1.驱动层程序
驱动层程序是嵌入式系统中不可缺少的重要部分,使用任何的外部设备都需要有相应的驱动层程序的支持,它为上层软件提供了设备的操作接口。上层软件不会理会设备的具体内部操作,只需调用驱动层程序提供的接口即可。驱动层程序一般包含硬件抽象层HAL、板级支持包BSP和设备驱动程序。
板级支持包实现的功能大体有以下两个方面:
系统启动时,完成对硬件的初始化。例如,对系统内存、寄存器以及设备的中断进行设置。这是比较系统化的工作,它要根据嵌入式开发所选的CPU类型、硬件以及嵌入式操作系统的初始化等多方面决定BSP应实现什么功能。
为驱动程序提供访问硬件的手段。驱动程序经常要访问设备的寄存器,对设备的寄存器进行操作。如果整个系统为统一编址,则开发人员可直接在驱动程序中用C语言的函数访问设备寄存器。但是,如果系统为单独编址,则C语言就不能直接访问设备中的寄存器,只有汇编语言编写的函数才能进行对外围设备寄存器的访问。BSP就是为上层的驱动程序提供访问硬件设备寄存器的函数包。