嵌入式操作系统选型分析

早期的嵌入式系统很多都不用操作系统,它们都是为了实现某些特定功能,使用一个简单的循环控制对外界的控制请求进行处理,不具备现代操作系统的基本特征(如进程管理、存储管理、设备管理、网络通讯等)。但随着控制系统越来越复杂,应用范围越来越广泛的时候,缺少操作系统就造成了很大的限制。C语言的出现促进了操作系统的发展。20世纪80年代以来,出现了各种各样的商业用嵌入式操作系统。如QNXVxWorksRT-Linux以及Windows CE等。使得在嵌入式系统设计时有了很大的选择余地,但选择的操作系统是否恰当对整个系统的开发有着挚为关键的影响。总的来说,嵌入式操作系统的选择可以遵从一下几条主要原则:

l        实时性。嵌入式操作系统的实时性主要与系统的结构、任务调度策略、中断处理手段以及内存管理方法有关。

l        系统定制能力。工业控制产品不同于民用PCWinTel(微软WindowsIntel处理器)结构,后者比较简单,前者需求则是千差万别的,因此硬件系统也都不一样,所以对系统的定制能力有较高的要求。

l        可移植性。当进行嵌入式软件开发时,可移植性是要重点考虑的问题。良好的软件移植性应该比较好,可以在不同平台、不同系统上运行,跟操作系统无关。

l        可利用资源。产品开发不同于学术课题研究,它以快速、低成本、高质量的推出适合用户需求的产品为目的。集中精力研发出产品的特色,其他功能尽量由操作系统附加或采用第三方产品,因此操作系统的可利用资源对于选型是一个重要参考条件。如果有大量的资源可以利用,无疑会极大的缩短开发周期降低成本。

l        网络能力。现在的工业控制系统对联网的要求越来越多,即使目前的产品不需要具有联网的能力,也应该为以后的升级留下余地。

l        图形界面开发能力。好的图形界面对多数控制系统来说都是必不可少的,相应的开发工具是否功能强、使用简单对开发的影响很大。

l        中文内核支持。毕竟,作为国内的工业控制系统,如果不支持中文,怎么能不说是一个缺憾?

l        已有的条件。在满足可靠应用的条件下,降低开发成本是每个控制系统开发考虑最多的因素之一。能根据自己的实际情况,合理的利用已有的条件,将会对降低成本有很大的作用,也会缩小产品的上市时间。

下面就四种常见的嵌入式操作系统对实时性、网络能力、图形界面开发以及开放性等方面进行分析比较,并结合课题的实际情况,阐述了选择QNX作为本课题的嵌入式系统设计平台的理由。

1.1           Windows CE

1.1.1  系统结构

Windows CE可分为四个主要模块[10,11,12,24],如图2.1所示,它们分别是内核模块、对象存储/文件系统模块、网络与通讯模块、GWES模块(图形、窗口、事件子系统)。此外还有三个重要的组成部分:驱动程序、设备管理器、OALOEM适配层,OEM Adaptation Layer)。

2.1 Windows CE体系结构图

Windows CE内核模块是coredll.dll表示,最小为200KB。它是Windows CE操作系统的核心,并为应用程序提供基本服务:进程管理、多任务多线程管理、内存和资源管理、中断处理、异常处理等。Windows CERAM存储内存空间又被称为“对象存储(Object Store)”。一般包括三种类型的数据:Windows CE文件系统(包括数据文件和程序)、系统注册表和Windows CE数据库(一种结构化存储方法,Pocket PC内置程序多使用它)。Windows CE提供了比桌面系统更丰富的通讯支持。GWES模块即图形、窗口、事件子系统,是用户、应用程序、操作系统之间的图形用户界面。而且Windows CE支持在没有图形界面的设备上使用诸如窗口、消息机制和电源管理的特性。

1.1.2  任务调度

Windows CE内核支持按优先级抢占的方式调度多任务。Windows CE最多支持32个进程,系统启动时至少创建4个进程:nk.exe(内核)filesys.exe(文件系统)gwes.exe(GUI支持)device.exe(加载维护系统设备驱动程序)。大多数平台还有exeplorer.exe(外壳)等服务进程,用户实际可以使用的进程也只有20多个。进程有自己受保护的32MB虚拟地址空间,但没有优先级。Windows CE支持的优先级是线程的优先级。线程是操作系统调度和运行的基本单位。线程由进程创建,是进程的一个实体,总是隶属于进程,并共享进程的地址空间。线程总数只受物理内存的限制。Windows CE实现抢占式、基于优先级的线程调度,线程之间由8个优先级来竞争CPU时间片。线程间的“同步”由“等待函数”和“等待对象”实现:将等待对象作为参数传递给等待函数,等待函数直到满足条件才返回;如果不满足条件,那么调用线程一直处于等待状态。Windows CE支持的“等待对象”包括:临界区域对象、事件对象和互斥体对象。

1.1.3  中断处理

四种操作系统都采用同样的传统中断模式。用户往某一中断源挂接特定中断后,实时操作系统创建一条ISR(中断服务例程)。所有的ISR地址保存在中断向量表中,并被硬件直接调用。ISR先执行一些保护现场的操作,然后调用用户定义的中断响应函数。

Windows CE采用的是基于优先级的可嵌套中断机制。Windows CE的中断处理分为两部分:ISRIST(中断服务线程)。ISR是核心代码部分,IST是用户代码部分。Windows CE可以将中断请求(ISR)映射为硬件中断,并且实现相应的ISRISTWindows CE的中断机制是:当ISR被触发时,ISR只负责启动IST,一旦IST启动后,ISR立即就返回,以便响应新的中断。IST负责处理实际的中断处理。ISR运行在特殊的上下文中。IST是一个普通的应用程序线程,具有它自己的上下文和堆栈。

1.1.4  内存管理

Windows CE实现了“分页虚拟内存管理系统”。实现虚拟内存机制需要设备中的CPU具有MMUMemory Manager Unit)。Windows CE使用CPUMMU来实时地将虚拟地址转换为物理地址。Windows CE为全部应用程序实现的虚拟地址空间为2GB,为每个应用程序实现的虚拟地址空间为32MB。虚拟页面可以处于三种状态:空闲、保留、提交(占用)。空闲页(free)是可以被保留或提交的可用页。保留页(reserved)是逻辑页已分配但没有分配物理存储的页。提交/占用页(committed)是物理存储已分配的页。

1.1.5  网络能力

Windows CE提供了丰富的通讯支持,主要有:串行通讯(支持PPP/SLIP协议实现的串行直接连接和拨号连接),TCP/IPFTPHTTP协议和Winsock1.1的一个子集合,红外通讯协议IrDAIrSockIrComm,通过网络驱动程序接口规范(NDIS)支持局域网,支持远程访问RASUSB连接、蓝牙连接和无线局域网连接等,支持SSPI(“安全支持提供者接口”)、CAPI(密码API)、TAPI(电话API)等。

1.1.6  图形界面开发

Windows CE程序开发语言主要是eVBeVC。程序开发工具重要由微软提供,主要产品有eMbedded Visual ToolsWindows CE Platform Builder。此外,也可使用Java语言开发Windows CE程序,相关工具由SUN公司提供,包括PC端的Java运行环境J2SDK for windowsPersonal Java的仿真器PJEEPersonal Java Emulation Environment)。

1.1.7  开放性

这里所谓的开放性主要指的是与POSIX标准的符合程度。POSIX表示可移植操作系统接口(Portable Operating System Interface)。IEEE最初开发POSIX标准,是为了提高UNIX环境下应用程序的可移植性。然而,POSIX并不局限于UNIX。许多其它的操作系统,例如Microsoft Windows NT,都支持POSIX标准,尤其是 IEEE Std. 1003.1-19901995 年修订)或 POSIX.1POSIX.1 提供了源代码级别的C语言应用编程接口(API)给操作系统的服务程序,例如读写文件。POSIX.1已经被国际标准化组织(International Standards OrganizationISO)所接受,被命名为ISO/IEC 9945-1:1990 标准。

Windows CE是直接从NT发展过来的,继承了1000多个Win32 API 函数。Win32Widows NTWindows 95的编程接口。Win32对于Windows就像POSIX对于Unix一样。

1.2           RT-Linux

1.2.1  系统结构

RT-Linux从本质上讲是对通用操作系统的Linux的实时改造的变种[1,6,13,14,28,57]

Linux作为一种通用操作系统,虽然由于其开放性近来在嵌入式设计中有了较广的应用,但由于其注重的是系统的平均性能,在很多方面使得Linux不适合实时应用。主要的几点包括:分时调度策略,较低的时钟分辨率,内核的非抢占式机制,过多的禁止中断操作,以及虚拟内存机制。这些对于通用操作系统来说非常出色的设计在实时系统中都变得不合时宜。

然而,RT-LinuxLinux作为新的实时内核调度下的最低优先级任务执行。其本身的实现只需要一个实时内核。设计中的巧妙之处是通过截获底层中断改造了Linux,取得CPU控制权执行实时任务。这样,只需对Linux进行较小的改动就可以实现实时功能,且能够使用Linux下提供的丰富开发工具和己有功能,如网络功能,图形接口等。更重要的是,RT-Linux还继承了Linux具备的开放性、标准化、技术支持丰富、便宜等特性。并且,Linux内核升级与RT-Linux升级保持了彼此独立,使得整个系统更容易维护。

RT-Linux实现了一个小的实时核心,仅支持底层任务创建、中断服务例程的装入、底层任务通信队列、中断服务例程(ISR)和Linux进程。原来的非实时Linux内核作为一个可抢占的任务运行于这个小内核之上,所有的任务都在内核地址空间运行。它不同于微内核和大型内核,是双内核体系结构。

与其他RTOS相比,RT-Linux进程间通信不够灵活。其实时任务之间,及实时任务与其他Linux任务之间的通信方式只有一种:RTFIFORTFIFO缓冲区分配在内核地址空间。对RTFIFO的读写操作均为原子操作,不能够阻塞。

2.2和图2.3分别示出了纯Linux体系结构和RT-Linux体系结构。

2.2  Linux体系结构图

2.3 RT-Linux体系结构图

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值