1.3 嵌入式软件的组成
在嵌入式系统发展的早期,其软件十分简单,常常是应用软件直接建立在硬件之上。在一些嵌入式系统中虽然有操作系统,但操作系统和应用软件之间的界线比较模糊,两者往往是一体的。随着嵌入式技术的发展,特别是进入后PC时代后,嵌入式系统上的软件得到了极大的丰富,形成了一个完整的软件体系。如图1.2所示,在这个体系中,嵌入式软件自底向上可分为操作系统、支撑软件、应用软件3个部分。
图1.2 嵌入式软件的组成
1. 操作系统
嵌入式操作系统由操作系统内核、核外服务、应用程序接口(API)、硬件抽象层等几部分组成。嵌入式操作系统一般采用微内核结构,操作系统内核只负责完成任务调度、任务通讯、内存管理、中断管理等一些最基本的功能,而将其他的功能都放在了内核之外。
2. 支撑软件
嵌入式软件上的支撑软件由窗口系统、网络系统、数据库管理系统、Java虚拟机等几个部分组成。另外,对于嵌入式系统来说,软件开发环境虽然大部分运行在台式机上,但从逻辑上讲它仍然应当被认为是支撑软件的一部分。由于嵌入式系统的硬件配置一般都比较低,在它上面开发应用软件是几乎不可能的。为解决这一问题,很多的厂商都陆续推出了自己的软件开发环境,这对应用软件的推广起到了极为重要的作用,它使更多的人加入到了嵌入式应用软件开发者的行列中,提高了开发工作的效率,降低了成本。
嵌入式系统的支撑软件近年来发展非常快,通用计算机上的功能越来越多地在嵌入式系统上实现。例如,目前支持窗口系统、Internet协议和Java虚拟机的嵌入式系统已经很常见。但是由于嵌入式系统的多样化,对支撑软件也提出了差异极大的需求,使某些支撑软件在某些嵌入式系统中变成了过于“奢侈”的物品。例如,对汽车ABS控制系统、汽车发动机控制系统这类深度嵌入的嵌入式系统来说,支持窗口系统完全没有必要。但对于智能手机、个人数字助理(PDA)等一些浅度嵌入的嵌入式系统来说,支持窗口系统则是很必要的。
3. 应用软件
嵌入式应用软件所覆盖的范围非常广,涉及工业控制、家电、商业、金融、交通运输、通信、建筑、环境监测、医疗、军事、安全防御、办公等相当多的领域。它是整个系统功能的体现,系统的功能需要通过应用软件才能实现。在一个嵌入式系统中可以没有支撑软件,甚至没有操作系统,但却不能没有应用软件,否则它就不能成为一个系统。