1.3 嵌入式系统简介

关于嵌入式系统的定义很多。例如,较通俗定义是嵌入到对象体系中的专用计算机系统。IEEE(国际电气和电子工程师协会)的定义为嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。可以看出此定义是从应用上考虑的,嵌入式系统是软件和硬件的综合体,还可以涵盖机电等附属装置。国内较权威机构对嵌入式系统的定义是:以应用为中心,以计算机技术为基础,软、硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

嵌入式系统本身是一个相对模糊的定义。手机、MP3、数码相机、机顶盒、媒体播放器和一个PC104的微型工业控制计算机都可以认为嵌入式系统。总之,嵌入式系统采用“量体裁衣”的方式把所需的功能嵌入到各种应用系统中。

1.3.1 嵌入式系统组织结构概述

嵌入式系统的组织架构是由嵌入式处理器、存储器等硬件,以及嵌入式系统软件和嵌入式应用软件所组成的,如图1-8所示。

图1-8 嵌入式系统架构图

嵌入式系统一般由硬件系统和软件系统两大部分组成,其中,嵌入式系统硬件系统包括嵌入式处理器、存储器、I/O系统和配置必要的外围接口部件;嵌入式系统的软件系统包括操作系统和应用软件。嵌入式系统的软、硬件框架如图1-9所示。

目前嵌入式系统一般是专用系统,其功能专一,成本较低。而PC是通用计算平台,嵌入式系统的资源比PC少,软件故障带来的后果要比PC大。嵌入式系统一般采用实时操作系统,嵌入式系统通常都有成本、功耗的要求。例外,嵌入式系统需要多种微处理体系的支持和需要专用的开发工具。

嵌入式系统的开发环境可分为硬件开发工具和软件开发工具:硬件开发工具有宿主机、在线实时仿真器和其他检测工具(如示波器)等;软件开发工具包括编辑、交叉编译、链接、定位软件和调试软件等。

图1-9 嵌入式系统的软、硬件框架

1.3.2 嵌入式硬件系统

嵌入式系统基本硬件架构主要包括微处理器、外围电路及外部设备三大部分,其中外围电路一般由时钟、复位电路、程序存储器、数据存储器和电源模块等部件组成;外部设备一般应配有USB、显示器、键盘或触摸屏等设备及接口电路;核心部件是微处理器。在一片嵌入式微处理器的基础上增加电源电路、时钟电路和存储器电路(ROM和RAM等),就构成了一个嵌入式核心控制模块,其中操作系统和应用程序都可以固化在ROM中,如图1-10所示。嵌入式工业监控系统的组成原理如图1-11所示。

有关嵌入式硬件系统方面的具体电路设计、实现方法及设计实例,本书将作为重点内容在后边几章中详细介绍。

图1-10 典型嵌入式系统的硬件组成

图1-11 嵌入式工业监控系统的组成原理图

1.3.3 嵌入式软件系统

嵌入式系统的软件部分包括操作系统软件和应用程序编程,但有时设计人员也会把这两种软件组合在一起进行应用。应用程序控制着系统的动作和行为,而操作系统控制着应用程序编程与硬件的交互。

嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等,具有编码体积小、面向应用、可裁剪和移植、实时性强、可靠性高、专用性强等特点。嵌入式系统的开发工具,一般包含有程序编辑器、编译器、链接定位器、调试器等。嵌入式系统的硬件和软件位于嵌入式系统产品本身,而开发工具和开发系统则独立于嵌入式系统产品之外。

1.嵌入式操作系统的分类

1)按实时性分类

“实时”表示一个非常短的时间间隔,具有“立即”之含义。当计算机进行实时处理时,要求在接收到数据的同时执行输出操作并输出计算结果,不能超出计算机系统所能容忍的时限。嵌入式系统的软件主要有实时系统和分时系统(非实时系统)两大类,其中实时系统又分为硬(强)实时和软(弱)实时系统。实时嵌入式系统是为执行特定功能而设计的,可以严格地按时序执行功能,其最大的特征就是程序的执行具有确定性。具体可分为三种形式:

(1)具有强实时特点的嵌入式操作系统。在实时系统中,如果系统在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,这样的系统被称为强实时系统或硬实时系统。强实时系统响应时间一般在毫秒或微秒级,如核反应堆处理装置、飞机控制器和数控机床控制器等。一个强实时系统往往在硬件上需要添加专门用于时间和优先级管理的控制芯片,如μC/OS和VxWorks就是典型的强实时操作系统。

(2)具有弱实时特点的嵌入式操作系统。在弱实时系统中,虽然响应时间同样重要,但是超时却不会发生致命的错误。设计软实时系统时,也需要考虑系统可接受的超时限的次数和延迟。目前大多数实时操作系统都是弱实时系统,它则主要是在软件方面通过编程实现现实的管理。比如Windows CE、Linux是一个多任务分时系统,其系统响应时间在毫秒至秒的数量级上,其实时性的要求比强实时系统要差一些,具体应用如对饭店电子菜谱的查询等。

(3)没有实时特点的嵌入式操作系统。

2)按开发成本分类

大体上分为商用型和免费型。商用型的实时操作系统功能稳定、可靠,有完善的技术支持和售后服务,但价格昂贵,如VxWorks、Windows CE、pSOS、Palm、OS-9、LynxOS和QNX等。免费型的操作系统在价格方面具有优势,目前主要有Linux和µC/OS操作系统,但与商用型OS相比具有不可靠、无技术咨询等特点。

3)按软件结构分类

按软件结构分类有两种形式:最简单的软件结构是循环轮询系统(Polling Loop),程序依次检查系统的每一个输入条件,一旦条件成立就进行相应的处理;事件驱动系统是能对外部事件直接响应的系统,它包括前后台、实时多任务、多处理器等,是嵌入式实时系统的主要形式。

应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为。中断服务程序处理异步事件,这部分可以看成前台行为。后台也可以叫做任务级,前台也叫中断级。很多基于微处理器的产品都采用前后台系统设计的方法,如微波炉、电话机、智能玩具等。从省电的角度出发,平时微处理器处在停机状态,所有的事都靠中断服务程序来完成。

嵌入式软件系统是实现嵌入式计算机系统功能的软件,一般是由嵌入式系统软件、支撑软件和应用软件构成。其中系统软件的作用是控制、管理计算机系统的资源,具体包含嵌入式操作系统、嵌入式中间件(CORBA、OSGI)等。支撑软件是辅助软件开发的工具,具体包括系统分析设计工具、仿真开发工具、交叉开发工具、测试工具、配置管理工具和维护工具等。应用软件面向应用领域,随着应用目的的不同而不同,如手机软件、路由器软件、交换机软件、视频图像、语音、网络软件等。应用程序控制着系统的动作和行为,而操作系统控制着应用程序与嵌入式系统硬件的交互。

在嵌入式系统发展的初期,嵌入式系统的软件是一体化的,即软件中没有把系统软件和应用软件独立开来,整个软件是一个大的循环控制程序,设备控制功能模块、人机操作模块、硬件接口模块等通常在这个大循环中。但是,随着应用的要求越来越复杂,例如需要嵌入式系统能连接Internet、需要嵌入式系统具有多媒体处理功能、需要嵌入式系统具有丰富的人机操作界面等,若再按照传统方法把嵌入式系统设计成一个大的循环控制程序,不仅费时、费力,而且设计的程序可能不能满足需求,因此,嵌入式系统的系统软件平台(即嵌入式操作系统)得到了迅速的发展。

2.嵌入式系统软件结构

完整的嵌入式系统软件结构一般包含有四个层面,它们分别是设备驱动层、操作系统(OS)层、中间件层、应用程序层。也有些书籍将应用程序接口API归属于OS层。由于硬件电路的可裁减性和嵌入式系统本身的特点,其软件部分也是可裁减的。嵌入式软件系统的体系结构如图1-12所示。

1)驱动层

驱动层程序是嵌入式系统中不可缺少的重要部分,使用任何外部设备都需要有相应驱动层程序的支持,它为上层软件提供了设备的接口。上层软件不用理会设备的具体内部操作,只需调用驱动层程序提供的接口即可。驱动层程序一般包括硬件抽象层HAL(提高系统的可移植性)、板极支持包BSP(提供访问硬件设备寄存器的函数包)和相应配置不同设备的驱动程序。

图1-12 嵌入式软件系统的体系结构

板级初始化程序的作用是在嵌入式系统上电后初始化系统的硬件环境,包括嵌入式微处理器、存储器、中断控制器、DMA、定时器等的初始化。系统软件相关的驱动程序是操作系统和中间件等系统软件所需的驱动程序,它们的开发要按照系统软件的要求进行。

2)操作系统(OS)层

操作系统可隐含底层不同硬件的差异,向上运行应用程序提供一个统一的调用接口,主要完成内存管理、多任务管理和外围设备管理三个任务。在设计一个简单的应用程序时,可以不使用操作系统,仅有应用程序和设备驱动程序。比如,一个指纹识别系统要完成指纹的录入和指纹识别功能,尤其是在指纹识别的过程中需要高速的算法,所以需要32位处理器。但是指纹识别系统本身的任务并不复杂,也不涉及烦琐的协议和管理,对于这样的系统就没有安装操作系统的必要,否则会带来新的系统开销,降低系统的性能。因为运行和存储操作系统需要大量的RAM和ROM,启动操作系统需要时间。在系统运行较多任务、任务调度、内存分配复杂、系统需要大量协议支持等情况下,就需要一个操作系统来管理和控制内存、多任务、周边资源等。依据系统所提供的程序界面来编写应用程序,可大大减少应用程序员的负担。另外,如果想让系统有更好的可扩展性或可移植性,那么使用操作系统也是一个不错的选择。因为操作系统里含有丰富的网络协议和驱动程序,这样可以大大简化系统的开发难度,并提高系统的可靠性。现代高性能嵌入式系统的应用越来越广泛,操作系统的使用成为必然的发展趋势。

操作系统的功能简单来说就是隐藏硬件细节,只提供给应用程序开发人员抽象的接口。用户只需要和这些抽象的接口打交道,而不用在意这些抽象的接口和函数是如何与物理资源相互联系的,也不用去管那些功能是如何通过操作系统调用具体的硬件资源来完成的。如果硬件体系发生变化,只要在新的硬件体系下仍运行着同样的操作系统,那么原来的程序还能完成原有的功能。

操作系统层包括嵌入式内核、嵌入式TCP/IP网络系统、嵌入式文件系统、嵌入式GUI系统和电源管理等部分,其中嵌入式内核是基础和必备的部分,其他部分要根据嵌入式系统的需要来确定。对于使用操作系统的嵌入式系统而言,操作系统一般以内核映像的形式下载到目标系统中。

3)中间件层

目前在一些复杂的嵌入式系统中也开始采用中间件技术,主要包括嵌入式CORBA、OSGI、嵌入式DCOM和面向应用领域的中间件软件,如基于嵌入式CORBA的应用于软件无线电台的应用中间件SCA等。

4)应用层

应用层软件主要由多个相对独立的应用任务组成,每个应用任务完成特定的工作,如I/O任务、计算的任务、通信任务等,由操作系统调度各个任务的运行。实际的嵌入式系统应用软件建立在系统的主任务基础之上。用户应用程序主要通过调用系统的API函数对系统进行操作,完成用户应用功能开发。在用户的应用程序中,也可创建用户自己的任务,任务之间的协调主要依赖于系统的消息队列。

3.嵌入式软件系统的设计与运行流程

操作系统是为应用程序提供基础服务的软件,而应用程序是在CPU上执行的一个或多个程序,在执行过程中会使用输入数据并产生输出数据。应用程序的管理包括程序载入和执行,程序对系统资源的共享和分配,并避免分配到的资源被其他程序破坏。

应用程序的设计流程是先用编辑程序编写源代码,源代码可以由多个文件组成,以实现模块化。然后用编译程序或汇编多个文件,使用链接程序将这些二进制文件组合为可执行文件。这些工作归结起来,可看成实现阶段。最后通过调试程序提供的命令运行得到的可执行文件,以测试所设计的程序。有时可利用解析程序找出程序中存在的性能瓶颈。在此验证阶段,如果找到错误或性能瓶颈,可以返回到实现阶段进行改进,并重复该流程。

嵌入式软件运行流程可主要分为五个阶段,它们分别是上电复位/板级初始化阶段、系统引导/升级阶段、系统初始化阶段、应用初始化阶段、多任务应用运行阶段。

1)上电复位/板级初始化阶段

嵌入式系统上电复位后完成板级初始化工作,板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。

2)系统引导/升级阶段

根据需要分别进入系统软件引导阶段或系统升级阶段。软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。在系统引导阶段有如下三种不同的工作方式:

(1)将系统软件从NOR Flash中读取出来加载到RAM中运行,这种方式可以解决成本及Flash速度比RAM慢的问题,软件可压缩存储在Flash中。

(2)不需将软件引导到RAM中而是让其直接在NOR Flash上运行,进入系统初始化阶段。

(3)将软件从外存(如NAND Flash、CF卡、MMC等)中读取出来加载到RAM中运行,这种方式的成本更低。

在进入系统升级阶段后,系统可通过网络进行远程升级或通过串口进行本地升级。远程升级一般支持TFTP、FTP、HTTP等方式,本地升级可通过Console口使用超级终端或特定的升级软件进行。

3)系统初始化阶段

在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。系统初始化阶段需要按特定的顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。

4)应用初始化阶段

在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其他初始化工作。

5)多任务应用运行阶段

各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,应用任务分别完成各自特定的功能。

嵌入式应用软件是由基于嵌入式操作系统开发的应用程序组成的,用来实现对被控对象的控制功能。功能层是要面对被控对象和用户,为方便用户操作,往往需要提供一个友好的人机界面。为了简化设计流程,嵌入式应用软件的开发采用一个集成开发环境供用户使用。

在一般简易的嵌入式系统中常采用汇编语言来编写应用程序,而在较复杂的系统中,汇编语言很难胜任,故通常采用高级语言。C语言具有广泛的库函数支持,目前在嵌入式系统中是应用最广泛的编程语言。C++是一种面向对象的编程语言,在嵌入式系统设计中也得到了广泛的应用,但与C语言相比,C++的目标代码往往比较庞大和复杂,在嵌入式系统应用中应充分考虑这一因素。

4.常用的嵌入式操作系统简介

随着集成电路的规模不断提高,涌现出大量价格低廉、结构小巧、功能强大的嵌入式微处理器,为嵌入式系统提供了丰富的硬件平台。操作系统可以运行较多任务,进行任务调度、内存分配。在内部具有大量协议支持,如网络协议、文件系统和良好的图形用户接口(GUI)等功能,可以大大简化系统的开发难度,提高系统的可靠性。

操作系统的移植是指一个操作系统经过适当的修改后,可以被安装在不同类型的微处理器上运行。虽然一些嵌入式操作系统的大部分代码都是使用C语言编写的,但仍要用C语言和汇编语言共同完成一些与微处理器相关的代码。比如,嵌入式实时操作系统μC/OS-II在读写处理器、寄存器时只能通过汇编语言来实现,因为μC/OS-II在设计的时候就已经充分考虑了可移植性。目前,在嵌入式系统中比较常用的操作系统有μC/OS-II、Linux、Windows CE、VxWorks、pSOS、QNX、Palm OS等。

1)μC/OS-II操作系统简介

μC/OS-II(Micro Control Operation System)是美国人Jean J. Labrosse开发的实时操作系统内核。这个内核的产生与Linux有点相似,Labrosse利用一年多的时间开发了这个最初名为μC/OS的实时操作系统,并于1992年在《Embedded System Programming》杂志上发表了相关文章,并将源代码公布在该杂志的网站上。1993年出版专著的热销以及源代码的公开推动了μC/OS-II本身的发展。目前,μC/OS-II已经被移植到Intel、Samsung、Motorola等公司的不同微处理器中。

作为一个实时操作系统,μC/OS-II的进程调度是按占先式、多任务系统设计的,即它总是执行处于就绪队列中优先级最高的任务。μC/OS-II将进程的状态分为就绪状态(Ready)、运行(Running)、等待(Waiting)、休眠(Dormant)和中断(ISR)共五个状态。其应用面覆盖了如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等诸多领域。μC/OS-II操作系统有如下的特点和性能:

(1)公开源代码,全部核心代码只有8.3 KB。它只包含了进程调度、时钟管理、内存管理和进程间的通信与同步等基本功能,而没有I/O管理、文件系统、网络等额外模块。

(2)具有可移植性、可固化、可裁减性。在μC/OS-II操作系统中涉及系统移植的源代码文件只有3个,只要编写4个汇编语言的函数、6个C函数、定义3个宏和1个常量,其代码长度不过二三百行,移植起来并不困难。

一般而言,μC/OS-II的源代码绝大部分是用C语言编写的,经过编译就能在宿主机(PC)上运行,仅有与CPU密切相关的一部分是用汇编语言写成的。这种操作系统的不足之处有如下几个方面:只有多任务调度的简单内核;内存管理过于简单,几乎没有动态内存管理功能;文件系统和图形界面需要外挂;对于设备驱动程序没有专门统一的接口。

2)Linux操作系统简介

Linux是由Linus Torvalds编写及发布的、源代码公开、可免费使用的操作系统。经由Internet上成百上千的程序员的加入,Linux成为了一个几乎支持所有主流32位CPU的操作系统。

嵌入式系统越来越追求数字化、网络化和智能化。因此,原来在某些设备或领域中占主导地位的软件系统已经很难再继续使用。这样要求整个系统必须是开放的、提供标准的应用编程接口软件API(Application Programming Interface),并且能够方便地与众多第三方的软硬件沟通。

随着Linux的迅速发展,嵌入式Linux现在已经有了许多版本,包括强实时的嵌入式Linux(RT-Linux和KURT-Linux)和一般的嵌入式Linux(如µClinux和Pocket Linux等)。其中,RT-Linux通过把通常的Linux任务优先级设为最低,而所有的实时任务的优先级都高于它,以达到既兼容通常的Linux任务,又保证实时性能的目的。

自由免费软件Linux的出现对目前商用嵌入式操作系统带来了冲击,它可以被移植到多个不同结构的CPU和硬件平台上,具有一定的稳定性、各种性能的升级能力,而且开发更加容易。其特点是:

● 开放源代码,不存在黑箱技术,易于定制裁减,在价格上极具竞争力;

● 内核小、功能强大、运行稳定、效率高,不仅支持x86CPU,还可支持其他数十种CPU芯片;

● 有大量的且不断增加的开发工具和开发环境,沿用了UNIX的发展方式,遵循国际标准,可方便地获得众多第三方软/硬件厂商的支持;

● Linux内核的结构在网络方面是非常完整的,它提供了对十兆位以太网、百兆位以太网、千兆位以太网、无线网络、令牌网、光纤网、卫星等多种联网方式的全面支持;此外,在图像处理、文件管理及多任务支持等诸多方面也都非常出色;

● 一个可用的Linux系统包括内核和应用程序两个部分,应用程序包括系统的部分初始化、基本的人机界面和必要的命令等内容;内核为应用程序提供了一个虚拟的硬件平台,以统一的方式对资源进行访问,并且透明地支持多任务;

● Linux内核一般可分为六个部分,进程调度、内存管理、文件管理、进程间通信、网络和驱动程序。

另一种常用的嵌入式Linux是µClinux,它是指对Linux经过小型化裁剪后,能够固化在容量只有几百KB或几MB的存储器芯片中,应用于特定嵌入式场合的专用Linux操作系统。μClinux也是针对没有存储器管理单元MMU的处理器而设计的,它不能使用处理器的虚拟内存管理技术。对内存的访问是直接的,使用程序中的地址都是实际的物理地址。有关Linux操作系统的更详细介绍,请参考有关书籍。

Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。传统的嵌入式开发的程序调试和调试工具是用在线仿真器(ICE)实现的。它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序,但一般价格比较昂贵,只适合做非常底层的调试。使用嵌入式Linux,一旦软硬件能够支持正常的串口功能,即使不用仿真器,也可以很好地进行开发和调试。嵌入式Linux提供的工具链有利用GNU的gcc做编译器,用gdh、kgdh、xgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。

3)Windows CE操作系统简介

Windows CE是Microsoft公司专门为一些体积小、资源要求低的便携式、手持式等信息设备而开发出来的一个非常小巧精致的嵌入式软实时操作系统。这个操作系统的核心全部是由C语言开发的,操作系统本身还包含许多由各个厂家用C语言和汇编语言开发的驱动程序。Windows CE的内核提供内存管理、占先式多任务和中断处理等功能。内核的上面使用的是图形用户界面GUI和桌面应用程序。在GUI内部运行着所有的应用程序,而且多个应用程序可以同时运行,但是,Windows CE没有DOS模式。

Windows CE以多种方式将一个虚拟的桌面计算机置于掌上或放置于口袋中,它可以被看成Windows 98/NT的微缩版,但是Windows CE和Windows 98/NT之间还存在着一些明显的差别。作为Windows操作系统的嵌入式微型版本,Windows CE不得不放弃某些Windows操作系统中一些复杂的特性和功能。Windows CE操作系统的基本内核需要至少200 KB的ROM。

Windows CE是针对有限资源的平台而设计的多线程、完整优先权、多任务的操作系统,但它不是一个硬实时操作系统。高度模块化是它的重要特性,它适合作为可裁减的32位嵌入式操作系统。Windows CE既适用于工业设备的嵌入式控制模块,也适用于消费类电子产品,如电话、机顶盒和掌上电脑等。针对不同的目标设备硬件环境,可以在内核基础上添加各种模块,从而形成一个定制的嵌入式操作系统。Windows CE的核允许每个进程有256个优先级,采用占先式优先权调度法。

对于应用程序开发者来说,Windows CE提供了Windows程序员熟悉的各种开发环境,如Microsoft Win32 API、ActiveX控件、消息队列、COM接口、ATL和MFC,它们不仅有助于提高开发者的开发效率,而且有利于从其他Microsoft平台上移植各种成功的应用程序。Windows CE通过ActiveSync实现嵌入式设备与台式计算机之间的通信。Windows CE与Windows等桌面操作系统的区别表现在以下五个方面:

(1)Windows CE不能运行现有的任何Windows应用程序,这意味着所有建立在Windows CE上的实时应用软件都必须为Windows CE重新编译、链接。

(2)Windows CE有严格的内存限制。虽然目前PC的内存容量惊人地快速增长,为Windows的运行提供了充分的内存空间,但在Windows CE下情况却不同。Windows CE的内存限制主要区别体现在减少物理内存数量、用户控制内存的容量和能够自动处理调整内存状态三个方面。

(3)Windows CE有精简的运行库和API。Windows CE和Windows 98/NT平台的一个很大区别是前者缩减了C/C++运行库和API。许多常见的ANSI函数已被Windows API函数代替或被完全删除。也就是说,现有的Windows程序可能一开始不能被Windows CE编译,必须做一些相应的修改。

(4)Windows CE设备通常没有鼠标。在Windows 98/NT中,鼠标用来控制一个应用程序及其显示,或者说改变对象、改变窗口大小、在屏幕上拖放目标以及导航菜单条目。换句话说,用鼠标可以完成Windows 98/NT下的所有操作。但是,大部分Windows CE设备没有鼠标。Windows CE设备中用一个被称为指示笔的笔样工具来代替鼠标。与鼠标不同,指示笔在屏幕上没有固定的指示标志,也就是所谓光标,Windows CE的指示笔只在用户用它轻击(敲击或触击)屏幕时才与操作系统和应用程序交互,但有些功能却不能像鼠标那样实现,如改变窗口大小和右键单击。Windows CE的指示笔仍然能有效地选择对象、导航菜单项等。Windows CE的窗口不能改变大小,窗口要么是最大化,要么是创建时的尺寸。

(5)Windows CE硬件不完全标准化。Windows操作系统可以运行在任意标准配置的硬件上,如配备有Intel(或兼容)的芯片、适当内存、适当彩色或分辨率的显示器的计算机上。但Windows CE却并非如此,每个Windows CE设备厂商以不同方式进行设计,因此Windows CE设备不像计算机那样有标准配置。

Windows CE内建了对多媒体、通信(TCP/IP、SNMP及TAPI等)和安全的支持,并已经有了各种常用的应用程序。利用这些开发环境,可以比较容易地实现娱乐、通信和事务处理等嵌入式应用。ActiveSync提供了从串行口、红外线接口到网络电缆的各种目前常用的通信手段。Windows CE提供了互联网的浏览服务和其他服务,使其适用于需要与互联网连接的系统中。

Windows CE主要包括:内核、存储、图形及多媒体、进程间通信、通信服务、安全服务、用户界面服务、Internet服务和本地化支持。使用Windows CE用户需与Microsoft公司签订合同方可获得源代码。Windows CE 4.2、CE5.0和CE6.0等版本是一种针对小容量、移动式、智能化、32位、连接设备的模块化软实时嵌入式操作系统。针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台。

4)VxWorks操作系统简介

VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式(无MMU)实时操作系统(RTOS),具有良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域牢牢占据着一席之地。

VxWorks操作系统基于微内核结构,由400多个相对独立的目标模块组成,用户可以根据需要增加或减少模块来裁剪和配置系统,其链接器可按应用的需要来动态链接目标模块。操作系统内部包括了进程管理、存储器管理、设备管理、文件管理、网络协议及系统应用等部分。VxWorks操作系统只占用很小的存储空间,并可高度裁剪,保证了系统能以高的效率运行。大多数VxWorks有专用API,采用GNU的编译和调试器。

VxWorks系统是一个运行在目标机上的高性能嵌入式实时操作系统,所具有的显著特点是可靠性、实时性和可裁减性。VxWorks是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统,它支持如x86、Sun Sparc、Motorola MC68xxx、MIPS、PowerPC等多种处理器。在美国的F-16和F-18战斗机、B2隐形轰炸机、爱国者导弹和“索杰纳”火星探测车上使用的都是VxWorks操作系统。