WindowsCE中实现蓝牙串口驱动程序摘要蓝牙通信平台在嵌入式系统的实现过程中,对象交换始终是很重要的一部分,基于的蓝牙文件传输得到广泛应用。而的实现是基于蓝牙仿真接口,所以蓝牙串口驱动程序的实现就有了很重要的意义。介绍了下串口驱动程序的结构和一种具体的实现方法。关键词蓝牙嵌入式系统驱动程序作为一种典型的嵌入式操作系统,通过将蓝牙应用移植到中,对于如+、等其它嵌入式系统,具有典型意义。由于上的文件传输应用建立在实现的蓝牙仿真串口上,本文介绍文件传输的蓝牙虚拟串口驱动程序的实现。1设备驱动程序概述支持广泛的基于各种平台的设备驱动程序。目前,它提供了四种设备模型,其中两种是专用于的模型,另外两种外部模型来自其它操作系统。基于的两种模型是本机的设备驱动程序和流接口驱动程序。两种外部模型用于通用串行总线和网络驱动器接口标准的驱动程序。由于蓝牙协议是在无线技术下的仿真串口,蓝牙中EX的许多应用正是基于蓝牙仿真串口。而流接口驱动程序通过一组流接口函数使得应用程序可以通过文件系统中的特殊文件而与设备接口,因此蓝牙仿真串口的功能性更适合流接口驱动程序的结构。图12下蓝牙串口驱动程序的实现虽然蓝牙设备驱动程序的实现采用流接口驱动程序设计,但由于两种驱动程序的基本结构与原理相似,所以下文从本机设备驱动程序结构开始,可以更清楚地认识蓝牙设备驱动程序的实现原理。2.1本机设备驱动程序结构W中包含的样本设备驱动程序分为两种类型单片驱动程序M和分层的驱动程序L。单片驱动程序基于单个码片,该码片直接把硬件设备的功能性通过设备驱动程序接口传递给操作系统。与单片驱动程序相比,分层的驱动程序由两个设置好的层组成上层是模型设备驱动程序MDD,下层是依赖平台的驱动程序PDD。本文采用分层的驱动程序来连接蓝牙硬件和上面的文件传输应用。图1说明了两种驱动程序是如何在W操作系统中集成的。设备驱动程序接口DDI是在MDD中实现的函数集,GWES模块通过这个接口调用设备驱动程序;设备驱动程序服务器提供接口DDSI是在PDD中实现的函数集并由MDD调用。由于微软提供了所有与MDD模块相关的源代码,所以对这部分不用做任何改动,只需将自己的PDD模块与MDD模块链结成一个公用库。理解了本机设备驱动程序的结构后,从图1右边不难看出,流接口驱动程序只是把流接口作为它们的DDI使用。在这种情况下,不必要把这些驱动程序与GWES模块逻接起来。它们以普通的DLL方式存在并根据需要被调用。22蓝牙仿真串口驱动程序实现蓝牙仿真串口是用蓝牙RFCOMM协议实现无电缆的无线串口通信,与本机设备驱动程序一样,实现流接口的串口驱动程序同样只需实现蓝牙的PDD模块。PDD模块包括四部分第一部分是必须自己实现的所有DDSI接口;第二部分是蓝牙协议栈包括FRCOMM、SDP、L2CAP以及HCI实体;第三部分是HCI传输层通过UART或者USB接口连接到蓝牙硬件;最后一部分是为蓝牙应用提供的图形界面接口和控制端口模块,用来对整个协议栈初始化、蓝牙硬件初始化、搜索附近的蓝牙设备以及发现指定设备上的服务。如图2所示。在图2所示的蓝牙仿真串口驱动程序的系统结构中,设备管理程序是用户层的程序,在基于W的平台上不停地运行着。设备管理程序不是内核的一部分,但它是与内核、注册表和注接口驱动程序DLL有相互影响的单独部分。它主要执行以下任务={*描述蓝牙仿真串口特征*_&,__,*中断处理全部由层处理*0,,_&*包含需要实现的所有标准串口函数的列表*};={*描述蓝牙控制端口特征*_&,__,0,,_&1};[]={*包含两个实例的数组*&,&};_={*存储设备驱动程序中所有串口设备*,*串口驱动程序的名字*,*串口设备的数目*/};_{&;}图2在串口驱动程序中注册了两个串口设备后,就要实现这两个实例对应的流接口函数。微软为要实现的串口模块提供了一个类型的串行对象表,这个结构列出了实现串口驱动的所有接口函数指针。见下面的描述__{*,-,;⋯,⋯,*1,,,,,,;}_,*_;用户通过修改串行口的串行对象表改变函数集或函数名。下面的结构的定义了蓝牙仿真串口函数...