- ARM嵌入式系统开发完全入门与主流实践
- 封景刚 吴宝江编著
- 2589字
- 2020-08-28 10:44:58
2.10 主流嵌入式操作系统介绍
其实,嵌入式系统并不是一个新生的事物,从20世纪80年代起,国际上就有一些IT组织和公司,开始进行商用嵌入式系统和专用操作系统的研发,这其中涌现出了一些著名的嵌入式操作系统。
2.10.1 Windows CE
Windows CE是微软公司推出的面向移动智能连接设备的模块化实时嵌入式操作系统。凭借其广泛的适应性、丰富的功能、强大的多媒体能力、友好的开发环境,Windows CE已经被广泛地应用于掌上电脑、智能手机、汽车电子、信息终端等领域。
简单地说,Windows CE就是基于掌上型电脑类的电子设备操作系统。其中CE的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion),E代表电子产品(Electronics)。它是一个抢先式多任务并具有强大通信能力的Win 32嵌入式操作系统,是微软专门为信息设备、移动应用、消费类电子产品、嵌入式应用等非PC领域设计的战略性操作系统产品。
Windows CE的设计目标是:模块化及可伸缩性、实时性能好、通信能力强大、支持多种CPU。
从操作系统内核的角度看,Windows CE具有灵活的电源管理功能,包括睡眠/唤醒模式。在Windows CE中,还使用了对象存储(Object Store)技术,包括文件系统、注册表及数据库。它还具有很多高性能、高效率的操作系统特性,包括按需换页、共享存储、交叉处理同步、支持大容量堆(Heap)等。
Windows CE拥有良好的通信能力,它支持各种通信硬件,亦支持直接的局域网连接及拨号连接,并提供与PC、内部网及Internet的连接,包括用于应用级数据传输的设备及设备间的连接。在提供各种基本的通信基础结构的同时,Windows CE还提供与Windows 9x/NT的最佳集成和通信。
Windows CE的图形用户界面相当出色,它拥有基于Microsoft Internet Explorer的Internet浏览器,此外,还支持TrueType字体。开发人员可以利用丰富灵活的控件库在Windows CE环境下为嵌入式应用建立各种专门的图形用户界面。Windows CE甚至还能支持诸如手写体、声音识别、动态影像、3D图形等特殊应用。
2.10.2 VxWorks
VxWorks操作系统是美国风河(WindRiver)公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。其良好的持续发展能力、高性能的内核及友好的用户开发环境,使之在嵌入式实时操作系统领域占据了一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导、飞机导航等。
VxWorks的实时性体现在它能在限定时间内执行完规定的任务并对外部的异步事件作出响应。实时操作系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合,而分时操作系统由于按照相等的时间片调度进程轮流运行,无法实时响应外部异步事件,因而主要应用于科学计算和实时性要求不高的场合。
VxWorks由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks的内核最小为8KB,即便加上其他必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。VxWorks的内核主要包括以下几个特点。
(1)多任务
为满足真实世界事件的异步性,现代操作系统需提供多任务支持,即由系统内核分配CPU给多个任务并发执行。如果是单CPU,则执行方式的实质是宏观并行、微观串行。
(2)任务调度
真实世界的事件具有继承的优先级,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。VxWorks对这种优先级抢占调度(Preemptive Priority Scheduling)提供了支持,同时,VxWorks也支持同优先级任务间的时间片轮转调度(Round-Robin Scheduling)。
(3)任务间的通信与同步
在一个实时系统中,系统必须提供多个任务间快速且功能强大的通信机制,并要提供为有效地共享不可抢占的资源或临界区所需的同步机制。
(4)任务与中断之间的通信
许多外设以中断方式与CPU通信,不宜在中断服务程序(ISR)中进行过多的处理,通常将相应处理交给特定任务去完成。
VxWorks支持广泛的工业标准如POSIX 1002.1b实时扩展、ANSI C(浮点支持)和TCP/IP网络协议。这些标准促进多种不同产品间的互用性,提升了可移植性,保护了用户在开发和培训方面的投资。
2.10.3 Os-9
Microware OS-9 Kernel基础控制程序,是一个安全、可靠、具有容错能力和高可用性的实时操作系统,用户可以在系统运行的同时动态地添加和更换模块。OS-9的进程模型架构和线程支持,使其成为关键任务应用的理想之选。统一的Unix-style I/O、网络和图形解决方案、MPEG文档管理器等特点,使众多I/O功能更加简便易用。附加的文档管理器由第三方提供,也可将其设置为特定应用程序。
2.10.4 QNX
QNX是一个实时、可扩充的操作系统,它遵循POSIX.1(程序接口)和POSIX.2(Shell和工具),部分遵循POXIX.1b(实时扩展)。它提供了一个很小的微内核和一些可选的配合进程,其内核提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其他的OS服务,都由协作的用户进程实现,因此QNX内核非常小巧(QNX4.x大约为12K),而且运行速度极快。这个灵活的结构使用户可以根据实际需要将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统。
2.10.5 μC/OS-II
μC/OS-II是美国人Jean J. Labrosse开发的实时嵌入式操作系统。这个嵌入式操作系统的源码最初发表在杂志上,1993年,作者将杂志上的文章整理扩展,写成了《μC/OS,The Real-Time Kernel》一书,这本书的热销及源代码的公开推动了μC/OS-II本身的发展。μ C/OS-II目前已经被移植到了Intel、Motorola等公司的81种不同的处理器上。
之所以有如此多的系统采用μC/OS-II作为操作系统,是与μC/OS-II本身的特性分不开的。μC/OS-II其实只是一个实时操作系统的内核,其全部核心代码只有8.3K字节。它只包括了进程调度、时钟管理、内存管理和进程间的通信与同步等基本功能,而没有包括I/O管理、文件系统、网络等额外模块。μC/OS-II进程调度是按抢占式多任务系统设计的,即它总是执行就绪队列中优先级最高的任务。而且,μC/OS-II的移植性很强,它涉及到系统移植的源代码只有3个,代码长度不过两三百行,移植起来并不困难。
2.10.6 Linux
Linux是一套以UNIX为基础发展而成的操作系统。自1991年诞生至今,Linux在很多方面已经赶上甚至超过了很多商用的UNIX系统,它实现了真正的多任务、多用户环境。Linux对硬件配置的要求非常低,能够在4MB内存的386机器上很好地运行,而且可以支持很多种处理器芯片。此外更为重要的是,Linux是公开源代码的,有众多高手愿意在Linux上开发程序,随时对Linux的开放内核进行升级和修补。
在嵌入式系统的应用方面,Linux小得可以放在一张软盘上运行。为实时系统而开发的变种RT Linux(Real-Time Linux),可以让Linux支持硬件实时任务。Linux的开放式原则使得Linux下的驱动和升级变得越来越多、越来越快。
每个嵌入式操作系统都有其各自的特点,必须根据项目实际需要选择相应的操作系统,μC/OS-II以其开源性和简单实用性在教学中获得了广泛应用。