Board logo

标题: 嵌入式操作系统Windows CE研究 [打印本页]

作者: samwalton    时间: 2014-2-23 11:05     标题: 嵌入式操作系统Windows CE研究

嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
    嵌入式操作系统是支持嵌入式系统应用的操作系统软件,它是嵌入式系统极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。嵌入式操作系统的出现,大大提高了嵌入式系统开发的效率,在嵌入式操作系统之上开发嵌入系统将减少系统开发的工作量,增强嵌入式应用软件的可移植性,使嵌入式系统的开发方法更具科学性。近年来,随着电子技术的不断进步,嵌入式系统开发己成为热点,
    Windows CE 是Microsoft 公司专门针对嵌入式产品领域开发的嵌入式操作系统,该系统是一种紧凑、高效、可伸缩的32 位的操作系统,主要面向各种嵌入式系统和产品。它所具有的多线程、多任务、完全抢占式的特点是专为各种有很严格资源限制的硬件系统所设计的。它的模块化设计使嵌入式系统和应用程序开发者能够方便地加以定制以适应一系列产品,例如:消费类电子设备、专用工业控制器和嵌入式通信设备等的需要[1]。
    Windows CE最大的好处在于界面的通用性,用户容易接收;同时,可以将Windows通用操作系统下的应用程序移植到嵌入式应用系统中。关于Windows CE的研究文献有许多,但是缺少从构建平台到网络应用的系统分析,本文从网络应用出发,深入研究Windows CE下如何实现TCP/IP协议,这对嵌入式网络应用很有意义。
    1 基于Windows CE的嵌入式系统的结构[2][3]
    要进行嵌入式系统的应用开发,必须先建立一个开发平台。一个基于Windows CE 的平台由Windows CE 操作系统核组件、OEM 适配层(OEM Adaptation Layer ,OAL) 和设备驱动程序以及组成系统的硬件设备组成,图1为基于Windows CE平台的层次结构。
    从图1 中可以看出,一个基于Windows CE 的嵌入式系统可分为四个层次,从底层到上层分别是硬件层、OEM层、操作系统层和应用程序层。

图1 基于Windows CE的目标平台及其组件


   
    硬件层是系统的硬件,包括微处理器和各种周边设备。OEM层是一个硬件抽象层,它提供了硬件和操作系统之间的接口,操作系统要访问具体的硬件就可以通过OEM层提供的API 进行访问,而不必直接与硬件打交道。操作系统层中有Windows CE 的组件,用户可以根据自己的系统的需要进行定制,选择需要的组件,去掉不必要的组件,这样可以减小内存需求,使系统性能达到最佳。应用程序层是用户为特定的嵌入式系统开发的应用程序。
    在操作系统层中,设备管理器提供对可安装设备的支持,允许在系统中安装诸如PC 卡存储器和调制解调器之类的设备已扩充功能,内核提供最基本的操作系统功能,例如进程调度、内存管理、进程通信等。图形、窗口事件处理模块将用户的击键、鼠标移动和控件选择转换为消息,传送给应用程序和操作系统来处理用户的输入。对象存储、文件系统、数据库和注理用户的输入。对象存储、文件系统、数据库和注册表提供存储数据的能力。附加技术模块指由CE操作系统提供的一些可选择的专用功能模块,如Java语言支持模块、手写体输入识别模块等。用户界面模块为系统提供一个与PC 电脑上的视窗操作系统类似的图形化操作界面。对系统设计者而言,需要自行开发的是应用程序和直接与硬件有关的部分,包括硬件系统本身、OAL 、设备驱动程序。其中,OAL 是指建立在硬件设备与系统内核之间的一层代码,主要任务是为内核管理具体的硬件设备时钟、中断和实施电源管理提供支持。设备驱动程序负责支持操作系统对目标硬件的访问。OAL 和驱动程序都要针对具体的硬件设备编写。
    一般硬件设备制造商会为设备提供驱动软件支持,如果有专门为CE 系统编写的驱动程序,只需将其加入到操作系统的相应模块中就可用了。如果没有,则应根据厂商提供的驱动程序开发包编写。通常这些开发包总已经包含了完成各种硬件操作的标准代码,开发者的工作只是将其与相应的CE 系统API函数对应起来。在CE 系统中,所有涉及硬件的操作都通过调用相应的API 接口函数来完成,而OAL 和驱动程序就是要为这些API 函数提供支持,将其翻译为直接对目标硬件进行底层操作。通过这种方式,CE 系统将应用程序与具体的硬件设备进行了隔离,应用程序只需调用API 函数就可以实现对硬件的访问。这样,程序员在开发应用程序时就没有必要编写任何直接针对硬件的代码,因此不必考虑具体的硬件特性,而应用程序也具有了不依赖于具体硬件设备的独立性。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0