嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)设计的重要组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够硬件虚拟化,使得开发人员从复杂的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序等。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有更为突出的特点。
一般情况下,嵌入式操作系统可以分为两类,一类是面向控制、通信等领域的实时操作系统,如WindRiver公司的VxWorks、ISI的pSOS、QNX系统软件公司的QNX、ATI的Nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书、WebPhone等。
嵌入式操作系统伴随着嵌入式系统的发展大致经历了4个阶段。
第一阶段是无操作系统的嵌入算法阶段,是以单芯片为核心的可编程控制器形式的系统,同时具有与监测、伺服、指示设备等相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接操控,运行结束后清除内存。这一阶段系统的主要特点是:系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格很低,以前在国内工业领域应用较为普遍,但是已经远远不能适应高效的、需要大容量存储介质的现代化工业控制和新兴的信息家电等领域的需求。
第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。这一阶段系统的主要特点是:CPU种类繁多,通用性比较差;系统开销小,效率高;一般配备系统仿真器,操作系统具有一定的兼容性和扩展性;应用软件较专业,用户界面不够友好;系统主要用来控制系统负载以及监控应用程序等应用要求。
第三阶段是通用的嵌入式实时操作系统阶段,是以嵌入式操作系统为核心的嵌入式系统。这一阶段系统的主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精简、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(Application Programming Interface,API),开发应用程序简单;嵌入式应用软件丰富。
第四阶段是以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。
嵌入式实时操作系统RTOS在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得越来越重要。
首先,嵌入式RTOS提高了系统的可靠性。在控制系统中,出于安全方面的考虑,不仅要求系统不能崩溃,还要有自愈能力;不仅要求在硬件设计方面提高系统的可靠性和抗干扰性,而且也应在软件设计方面提高系统的抗干扰性,尽可能地减少安全漏洞和不可靠的隐患。长期以来的前后台系统软件设计在遇到强干扰时,运行的程序往往会产生异常、出错、跑飞,甚至死循环,最终导致系统的崩溃。而RTOS管理的系统,这种干扰可能会引起若干进程中的一个被破坏,但可以通过运行的系统监控进程对其进行修复。通常情况下,这个系统监视进程用来监视各进程运行状况,遇到异常情况时通过采取一些有利于系统稳定可靠的措施,如把有问题的任务清除掉等方法,能够有效解决系统的干扰问题,一般系统不会出现崩溃。
其次,RTOS提高了开发效率,缩短了开发周期。在嵌入式RTOS环境下,开发一个复杂的应用程序,通常可以按照软件工程中的解耦原则将整个程序分解为多个任务模块。每个任务模块的调试、修改几乎不影响其他模块。商业软件一般都提供了良好的多任务调试环境。
再次,嵌入式RTOS充分发挥了高性能CPU(如32位CPU)的多任务潜力。32位CPU比8位、16位CPU快,另外它是为运行多用户、多任务操作系统而设计的,特别适合运行多任务实时系统。采用32位CPU有利于提高系统可靠性和稳定性的设计,使其可靠性容易得到保障。例如,CPU运行状态分为系统态和用户态。将系统堆栈和用户堆栈分开,以及实时地给出CPU的运行状态等,允许用户在系统设计中从硬件和软件两方面对实时内核的运行实施保护。如果还是采用以前的前后台方式,则无法发挥32位CPU的优势。从某种意义上说,没有操作系统的计算机(裸机)是没有太多应用价值的。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的嵌入式应用。
在嵌入式实时操作系统RTOS环境下,开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化,而且对实时性要求苛刻的事件易于得到快速、可靠的处理。通过有效的系统服务,嵌入式RTOS使得系统资源得到更好的利用。但是,使用嵌入式实时操作系统需要额外的ROM/RAM开销,会占用CPU的部分资源,以及内核的开销等。