
1.系统软件
系统软件控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。
2.应用软件
应用软件是嵌入式系统中的上层软件,它定义了嵌入式设备的主要功能和用途,并负责与用户进行交互。应用软件是嵌入式系统功能的体现,如飞行控制软件、手机软件、MP3播放软件、电子地图软件等,一般面向于特定的应用领域。
3.支撑软件
支撑软件指辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具、交叉编译器、源程序模拟器和配置管理工具等。
在嵌入式系统当中,系统软件和应用软件运行在目标平台的(即嵌入式设备上),而对于各种软件开发工具来说,它们大部分都运行在开发平台(PC机)上,运行Windows或Linux操作系统。
嵌入式软件除了具有通用软件的一般特性,同时还具有一些与嵌入式系统密切相关的特点。
(l)规模较小
在一般情况下,嵌入式系统的资源多是比较有限的,要求嵌入式软件必须尽可能地精简,多数的嵌入式软件都在几MB以内。
(2)开发难度大
嵌入式系统由于硬件资源的有限,使得嵌入式软件在时间和空间上都受到严格的限制,需要开发人员对编程语言、编译器和操作系统有深刻的了解,才有可能开发出运行速度快、存储空间少、维护成本低的软件。嵌入式软件一般都要涉及到底层软件的开发,应用软件的开发也是直接基于操作系统的,这就要求开发人员具有扎实的软、硬件基础,能灵活运用不同的开发手段和工具,具有较丰富的开发经验。嵌入式软件的运行环境和开发环境比PC机复杂,嵌入式软件是在目标系统上运行的,而嵌入式软件的开发工作则是在另外的开发系统中进行,当应用软件调试无误后,再把它放到目标系统上去。
(3)高实时性和可靠性要求
具有实时处理的能力是许多嵌入式系统的基本要求,实时性要求软件对外部事件做出反应的时间必须要快,在某些情况下还要求是确定的、可重复实现的,不管系统当时的内部状态如何,都是可以预测的。同时,对于事件的处理一定要在限定的时间期限之前完成,否则就有可能引起系统的崩溃。
在航天控制、核电站、工业机器人等实时系统对嵌入式软件的可靠性要求是非常高的,一旦软件出了问题,其后果是非常严重的。
(4)软件固化存储
为了提高系统的启动速度、执行速度和可靠性,嵌入式系统中的软件一般都固化在存储器芯片或微处理器中。