五、Windows WDM驱动介绍 WDM(Win32 Driver Model),即Windows32驱动程序模型,是Microsoft推出的一种新的驱动程序模型,它为不同操作系统的驱动程序提供了统一的框架,从而简化了驱动程序开发的复杂性,减少了驱动程序的重复开发。WDM驱动程序可以在Windows98、WindowsME、Windows2000及WindowsXP下使用。 WDM是在NT 4.0驱动程序基础上发展起来的驱动程序模型,它与NT 4.0驱动程序有许多相似之处,例如他们都采用层次化结构,有相同的IRP处理结构,支持电源管理和WMI等,但WDM驱动程序支持即插即用设备,而且支持更多的硬件标准,如USB、IEEE 1394、ACPI等。 在WDM驱动程序模型中,用物理设备对象PDO(Physical Device Object)表示物理设备,用功能设备对象FDO(Function Device Object)描述物理设备的功能。当系统检测到某个设备时,产生一个对应的PDO,即生成PDO的各种属性,如设备ID号、电源状态等。当设备删除时,对应的PDO也将被删除。一个物理设备只能有一个PDO,但可以有多个FDO,即一个PDO可以对应一个或多个FDO。驱动程序中操作的不是硬件,而是PDO和FDO。 设备驱动程序是操作系统的一部分,由操作系统的I/O管理器管理和调用,操作系统接收到用户的请求后,操作系统的I/O管理器就创建一个I/O请求包(IRP)结构,并将其作为参数传给驱动程序,驱动程序通过识别IRP中的物理设备对象PDO来区分是发送给那个设备的,若PDO对应几个FDO,则FDO可以拦截这些IRP,作相应处理后,再发送给PDO。 IRP结构中存放请求的类型、用户缓冲区首地址、用户请求数据的长度等信息,驱动程序处理完这个请求后,在该结构中填入处理结果,调用IOCompleteRequest将其返回给I/O管理器,操作系统再返回给用户应用程序。 WDM驱动程序加载时,系统不是通过WDM驱动程序的名称识别的,而是通过一个128位的GUID来识别的。 开发WDM驱动程序,通常采用第三方提供的专业开发工具,如WinDriver、DriverStudio等,也可以采用DDK来开发。 六、嵌入式操作系统 嵌入式系统是以应用为中心,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。 6.1 嵌入式操作系统的发展 作为嵌入式系统(包括硬、软件系统)极为重要的组成部分的嵌入式操作系统,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。 嵌入式操作系统伴随着嵌入式系统的发展经历了四个比较明显的阶段: 第一阶段:无操作系统的嵌入算法阶段,以单芯片为核心的可编程控制器形式的系统,具有与监测、伺服、指示设备相配合的功能。应用于一些专业性极强的工业控制系统中,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口。 第二阶段:以嵌人式CPU为基础、简单操作系统为核心的嵌入式系统。CPU种类繁多,通用性比较差;系统开销小,效率高;一般配备系统仿真器,操作系统具有一定的兼容性和扩展性;应用软件较专业,用户界面不够友好;系统主要用来控制系统负载以及监控应用程序运行。 第三阶段:通用的嵌人式实时操作系统阶段,以嵌入式操作系统为核心的嵌入式系统。能运行于各种类型的微处理器上,兼容性好;内核精小、效率高,具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(API);嵌入式应用软件丰富。 第四阶段:以基于Internet为标志的嵌入式系统。这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。 6.2 使用实时操作系统的必要性 嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。 a. 嵌人式实时操作系统提高了系统的可靠性。在控制系统中,出于安全方面的考虑,要求系统起码不能崩溃,而且还要有自愈能力。不仅要求在硬件设计方面提高系统的可靠性和抗干扰性,而且也应在软件设计方面提高系统的抗干扰性,尽可能地减少安全漏洞和不可靠的隐患。长期以来的前后台系统软件设计在遇到强干扰时,使得运行的程序产生异常、出错、跑飞,甚至死循环,造成了系统的崩溃。而实时操作系统管理的系统,这种干扰可能只是引起若干进程中的一个被破坏,可以通过系统运行的系统监控进程对其进行修复。通常情况下,这个系统监视进程用来监视各进程运行状况,遇到异常情况时采取一些利于系统稳定可靠的措施,如把有问题的任务清除掉。 b. 提高了开发效率,缩短了开发周期。在嵌入式实时操作系统环境下,开发一个复杂的应用程序,通常可以按照软件工程中的解耦原则将整个程序分解为多个任务模块。每个任务模块的调试、修改几乎不影响其他模块。商业软件一般都提供了良好的多任务调试环境。 c. 嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。32位CPU比8、16位CPU快,另外它本来是为运行多用户、多任务操作系统而设计的,特别适于运行多任务实时系统。32位CPU采用利于提高系统可靠性和稳定性的设计,使其更容易做到不崩溃。例如,CPU运行状态分为系统态和用户态。将系统堆栈和用户堆栈分开,以及实时地给出CPU的运行状态等,允许用户在系统设计中从硬件和软件两方面对实时内核的运行实施保护。如果还是采用以前的前后台方式,则无法发挥32位CPU的优势。从某种意义上说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。 6.3 嵌入式操作系统选型 当我们在设计信息电器、数字医疗设备等嵌入式产品时,嵌入式操作系统的选择至关重要。一般而言,在选择嵌入式操作系统时,可以遵循以下原则。总的来说,就是“做加法还是做减法”的问题。 6.3.1 市场进入时间 制定产品时间表与选择操作系统有关系,实际产品和一般演示是不同的。目前是Windows程序员可能是人力资源最丰富的。现成资源最多的也就可能是WinCE。使用WinCE能够很快进入市场。因为WinCE+x86做产品实际上是在做减法,去掉你不要的功能,能很快出产品,但伴随的可能是成本高,核心竞争力差。而某些高效的操作系统可能由于编程人员缺乏,或由于这方面的技术积累不够,影响开发进度。 6.3.2 可移植性 操作系统相关性。当进行嵌入式软件开发时,可移植性是要重点考虑的问题。良好的软件移植性应该比较好,可以在不同平台、不同系统上运行,跟操作系统无关。软件的通用性和软件的性能通常是矛盾的。即通用以损失某些特定情况下的优化性能为代价。很难设想开发一个嵌入式浏览器而仅能在某一特定环境下应用。反过来说,当产品与平台和操作系统紧密结合时,往往你的产品的特色就蕴含其中。 6.3.3 可利用资源 产品开发不同于学术课题研究,它是以快速、低成本、高质量的推出适合用户需求的产品为目的的。集中精力研发出产品的特色,其他功能尽量由操作系统附加或采用第三方产品,因此操作系统的可利用资源对于选型是一个重要参考条件。Linux和WinCE都有大量的资源可以利用,这是他们被看好的重要原因。其他有些实时操作系统由于比较封闭,开发时可以利用的资源比较少,因此多数功能需要自己独立开发。从而影响开发进度。近来的市场需求显示,越来越多的嵌入式系统,均要求提供全功能的Web浏览器。而这要求有一个高性能、高可靠的GUI的支持。 6.3.4 系统定制能力 信息产品不同于传统PC的Wintel结构的单纯性,用户的需求是千差万别的,硬件平台也都不一样,所以对系统的定制能力提出了要求。要分析产品是否对系统底层有改动的需求,这种改动是否伴随着产品特色?Linux由于其源代码开放的天生魅力,在定制能力方面具有优势。随着WinCE3.0原码的开放,以及微软在嵌入式领域力度的加强,其定制能力会有所提升。 6.3.5 成本 成本是所有产品不得不考虑的问题。操作系统的选择会对成本有什么影响呢?Linux免费,WinCE等商业系统需要支付许可证使用费,但这都不是问题的答案。成本是需要综合权衡以后进行考虑的——选择某一系统可能会对其他一系列的因素产生影响,如对硬件设备的选型、人员投入、以及公司管理和与其他合作伙伴的共同开发之间的沟通等许多方面的影响。 6.3.6 中文内核支持 国内产品需要对中文的支持。由于操作系统多数是采用西文方式,是否支持双字节编码方式,是否遵循GBK,GBl8030等各种国家标准,是否支持中文输入与处理,是否提供第三方中文输入接口是针对国内用户的嵌入式产品的必需考虑的重要因素。 上面提到用WinCE+x86出产品是减法,这实际上就是所谓PC家电化;另外一种做法是加法,利用家电行业的硬件解决方案(绝大部分是非x86的)加以改进,加上嵌入式操作系统,再加上应用软件。这是所谓家电PC化的做法,这种加法的优势是成本低,特色突出,缺点是产品研发周期长,难度大(需要深入了解硬件和操作系统)。如果选择这种做法,Linux是一个好选择,它让你能够深入到系统底层,如果你愿意并且有能力。 6.4 几种代表性嵌入式操作系统比较 6.4.1 嵌入式Linux 这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近一年多以来成为研究热点,据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%。 由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL,无须为每例应用交纳许可证费。有大量的应用软件可用。其中大部分都遵从GPL,是开放源代码和免费的。可以稍加修改后应用于用户自己的系统。 有大量的免费的优秀的开发工具,且都遵从GPL,是开放源代码的。有庞大的开发人员群体。无需专门的人才,只要懂Unix/Linux和C语言即可。随着Linux在中国的普及,这类人才越来越多。所以软件的开发和维护成本很低。优秀的网络功能,这在Internet时代尤其重要。稳定——这是Linux本身具备的一个很大优点。内核精悍,运行所需资源少,十分适合嵌入式应用。 支持的硬件数量庞大。嵌入式Linux和普通Linux并无本质区别,PC上用到的硬件嵌入式Linux几乎都支持。而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来很大方便。 6.4.2 Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操作系统。为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200KB的ROM。由于嵌入式产品的体积、成本等方面有较严格的要求,所以处理器部分占用空间应尽可能的小。系统的可用内存和外存数量也要受限制,而嵌入式操作系统就运行在有限的内存(一般在ROM或快闪存储器)中,因此就对操作系统的规模、效率等提出了较高的要求。从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过的系统内存,运用程序庞大;版权许可费也是厂商不得不考虑的因素。 6.4.3 VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是Tornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。 VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。 然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。 6.4.4 μC/OS-Ⅱ μC/OS-Ⅱ是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位,16位和32位单片机或数字信号处理器(DSP)。它是在原版本μC/OS的基础上做了重大改进与升级,并有了近十年的使用实践,有许多成功应用该实时内核的实例。它的主要特点如下: ·公开源代码,容易就能把操作系统移植到各个不同的硬件平台上; ·可移植性,绝大部分源代码是用C语言写的,便于移植到其他微处理器上; ·可固化; ·可裁剪性,有选择的使用需要的系统服务,以减少斗所需的存储空间; ·占先式,完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务; ·多任务,可管理64个任务,任务的优先级必须是不同的,不支持时间片轮转调度法; ·可确定性,函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少; ·实用性和可靠性,成功应用该实时内核的实例,是其实用性和可靠性的最好证据。 由于μC/OS-Ⅱ仅是一个实时内核,这就意味着它不像其他实时存在系统那样提供给用户的只是一些API函数接口,还有很多工作需要用户自己去完成。 流媒体技术 流媒体(Streaming Media)是一种以音视频数据流的方式在网络上传递多媒体信息的技术。与传统的多媒体下载不同,流媒体传输具有实时性和连续性的特点。边播放边下载的流式传输方式可以使用户不必等待所有的数据下载到本地。采用不同的码率传输,可以使用户在几十kbit/s低带宽到几十Mbit/s高带宽的不同网络环境中都能在线欣赏到连续不断的较高品质的音视频节目。流媒体技术具有十分广泛的应用领域,如在线直播、网络广告、视频点播、视讯会议、远程教育等。多媒体文件与一般的数据不同,较大的传输负荷将使得网络丢失和拥塞的概率大大增加,因此如何提高音视频传输的服务质量是流媒体技术所面临的最大挑战。 一、技术概述 1、协议支持 一般的数据传输采用的协议有HTTP或FTP,这两种基于TCP可靠传输机制的协议可以完成普通数据在网络上的传输。对于实时音视频数据的传输业务, HTTP或FTP虽然也能支持,但是却具有较大的局限性。首先,数据的实时性需求无法在传输中得到保证,更不能提供像现场直播这样的高实时性的业务。其次,无法支持如快进快退这样的VCR功能。最后,无法实现实时加密,对数据版权的保护有限。 针对流媒体数据独有的特点,一系列与此相关的传输协议以及一个完善的流媒体传输结构框架被提出,并用以解决上述音视频数据传输中遇到的问题。在新的框架体系中,服务器端建立专门用于传输音视频实时数据流的流服务器,所有在网上传输的数据都需要经过一系列的压缩编码,减小其中的数据冗余,然后再被服务器封装成数据包传输给客户端。由于音视频数据少量的差错和丢失对最终播放质量的影响较小,为了避免采用可靠传输带来的时延,提高数据的实时性,因此实时传输协议 RTP是建立在面向无连接的UDP之上的。原有的服务器端和客户端的可靠连接通信则由另一个实时流协议RTSP来完成。 实时传输协议RTP是专门用于因特网上实时多媒体数据传输的一种协议,一般是在UDP数据包之前建立一个RTP包头,其中包含了一些保证数据实时连续性的信息(如序列号、时间戳等),但RTP也可以在TCP或ATM等其他协议上工作。RTP被定义为在一对一或一对多的传输模式下工作,提供时间信息和流同步。 RTP传输协议有如下一些特点: (1)协议的灵活性。RTP不具备传输层协议的完整功能,其本身也不提供任何机制来保证实时地数据传输,不支持资源预留,也不保证服务质量。另外,RTP将部分运输层协议功能(比如流量控制)上移到应用层完成,简化了运输层处理,提高了该层效率。 (2)数据流和控制流分离。RTP的数据报文和控制报文使用相邻的不同端口,这样大大提高了协议的灵活性和处理的简单性。 (3)协议的可扩展性和适用性。RTP通常为一个具体的应用来提供服务,通过一个具体的应用进程实现,而不作为OSI体系结构中单独的一层来实现,RTP只提供协议框架,开发者可以根据应用的具体要求进行充分的扩展。 RTP协议本身不提供流量控制和拥塞控制功能,它靠一个专门的实时传输控制协议(RTCP)来实现。RTCP周期性地统计数据包传输时的丢失情况等信息,服务器根据这些反馈信息来制定流量控制的策略,改变传输码率甚至负载类型,大大提高了实时数据的传输性能。 RTSP 是基于应用层的一个重要的流会话控制协议,建立在TCP协议上,在整个流媒体应用过程中提供整套会话服务,控制着整个媒体流的播放过程。它提供用于音频和视频流的“VCR模式”远程控制功能,用于控制流媒体的播放、暂停、记录等操作。同时,服务器和客户端之间会话的建立与销毁等信息的交互也来自RTSP的支持。 2. 相关技术 为了提供更高质量的服务,在流媒体业务中涉及了相当多的技术。首先,视频在传输之前需要压缩成适合于网络传输的码流。在编码中,一种方法是精细可扩展行编码(FGS),这种压缩机制把视频压缩成基本层和增强层位流,通过位平面编码实现连续的增强层速率控制。 传输信道中的差错控制也可以提高视频传输的质量。前向纠错FEC是其中的一种差错控制方法,可以通过在各个数据包中附加一定的冗余信息来恢复丢失的数据包;也可以通过在编码时在码流中采用一些特殊的编码方式,比如逆向编码、多描述编码、分层编码等来减少数据丢失对质量的影响;还可以在客户端对丢失的信息进行插值预测,尽量削弱差错所带来的影响。 除了采用差错控制来保证传输数据的质量,还可以采用拥塞控制的方法来减轻网络拥塞程度。一种方法是在服务器端根据反馈信息调节数据的发送速率,另一种方法是由客户端增加和减少信道数量来进行速率的调整。两种方法也可以结合起来使用。 媒体流之间的同步通过媒体同步机制来实现。不同的媒体之间的传输和播放是独立的,而最终播放的所有媒体又需要集成在一起,例如音频、视频和其他文本信息的同步播放。流内同步、流间同步和对象间同步是三种类型的同步机制,其本质是在媒体内或媒体间说明时间关系。同步多媒体集成语言SMIL是一种实现媒体同步控制的标准。 数据的安全性由数字版权管理DRM来保证。这是保护多媒体内容免受未经授权的播放和复制的一种方法。如果数字版权无法得到保证,流媒体业务将失去商业运营的可能。DRM通过对内容加密来保护数据和通过附加使用规则来判断用户的使用权限。 二、系统组成 1. 基本组件 流媒体是由各种不同的互相通信交互的软件系统构成的,一个最基本的流媒体系统必须包括编码器(Encoder),服务器(Server)和播放器(Player)三个模块,如图1所示。模块之间通过特定的协议互相
好文档 - 专业文书写作范文服务资料分享网站