摘要:蓝牙通信平台在嵌入式系统的实现过程中,OBEX(对象交换)始终是很重要的一部分,基于OBEX的蓝牙文件传输得到广泛应用。而OBEX的实现是基于蓝牙仿真接口,所以蓝牙串口驱动程序的实现就有了很重要的意义。介绍了Windows CE下串口驱动程序的结构和一种具体的实现方法。
Windows CE作为一种典型的嵌入式操作系统,通过将蓝牙应用移植到Widows CE中,对于如pSOS+、Nucleus等其它嵌入式系统,具有典型意义。由于OBEX上的文件传输应用建立在RFCOMM实现的蓝牙仿真串口上,本文介绍OBEX文件传输的蓝牙虚拟串口驱动程序的实现。
1 Windows CE设备驱动程序概述
Windows CE支持广泛的基于各种CE平台的设备驱动程序。目前,它提供了四种设备模型,其中两种是专用于Windows CE的模型,另外两种外部模型来自其它操作系统。基于Windows CE的两种模型是本机的设备驱动程序和流接口驱动程序。两种外部模型用于通用串行总线(USB)和网络驱动器接口标准(NDIS)的驱动程序。
由于蓝牙协议是在无线技术下的仿真串口,蓝牙中OBEX的许多应用正是基于蓝牙仿真串口。而流接口驱动程序通过一组流接口函数使得应用程序可以通过文件系统中的特殊文件而与设备接口,因此蓝牙仿真串口的功能性更适合流接口驱动程序的结构。
图1
2 Windows CE下蓝牙串口驱动程序的实现
虽然蓝牙设备驱动程序的实现采用流接口驱动程序设计,但由于两种驱动程序的基本结构与原理相似,所以下文从本机设备驱动程序结构开始,可以更清楚地认识蓝牙设备驱动程序的实现原理。
2.1 本机设备驱动程序结构
Windows CE中包含的样本设备驱动程序分为两种类型:单片驱动程序(Monolithic device driver)和分层的驱动程序(Layered Devicedriver)。单片驱动程序基于单个码片,该码片直接把硬件设备的功能性通过设备驱动程序接口传递给操作系统。与单片驱动程序相比,分层的驱动程序由两个设置好的层组成:上层是模型设备驱动程序(MDD),下层是依赖平台的驱动程序(PDD)。本文采用分层的驱动程序来连接蓝牙硬件和上面的文件传输应用。图1说明了两种驱动程序是如何在Windows CE操作系统中集成的。
设备驱动程序接口(DDI)是在MDD中实现的函数集,GWES模块通过这个接口调用设备驱动程序;设备驱动程序服务器提供接口(DDSI)是在PDD中实现的函数集并由MDD调用。由于微软提供了所有与MDD模块相关的源代码,所以对这部分不用做任何改动,只需将自己的PDD模块与MDD模块链结成一个公用库。
理解了本机设备驱动程序的结构后,从图1右边不难看出,流接口驱动程序只是把流接口作为它们的DDI使用。在这种情况下,不必要把这些驱动程序与GWES模块逻接起来。它们以普通的DLL方式存在并根据需要被调用。
2.2 蓝牙仿真串口驱动程序实现
蓝牙仿真串口是用蓝牙RFCOMM协议实现无电缆的无线串口通信,与本机设备驱动程序一样,实现流接口的串口驱动程序同样只需实现蓝牙的PDD模块。
PDD模块包括四部分:第一部分是必须自己实现的所有DDSI接口;第二部分是蓝牙协议栈包括FRCOMM、SDP、L2CAP以及HCI实体;第三部分是HCI传输层通过UART或者USB接口连接到蓝牙硬件;最后一部分是为蓝牙应用提供的图形界面接口和控制端口模块,用来对整个协议栈初始化、蓝牙硬件初始化、搜索附近的蓝牙设备以及发现指定设备上的服务。如图2所示。
在图2所示的蓝牙仿真串口驱动程序的系统结构中,设备管理程序是用户层的程序,在基于Windows CE的平台上不停地运行着。设备管理程序不是内核的一部分,但它是与内核、注册表和注接口驱动程序DLL有相互影响的单独部分。它主要执行以下任务:
HWOBJ BluetoothObj={ /*描述蓝牙仿真串口特征*/
(PDEVICE_LIST)&SerDL,
THREAD_IN_PDD,/*中断处理全部由PDD层处理*/
0,
NULL,
(PHW_VTBL)&BluetoothVTbl/*包含需要实现的所有标准串口DDSI函数的列表*/
};
HWOBJ BluetoothCTRLObj={/*描述蓝牙控制端口特征*/
(PDEVICE_LIST)&SerDL,
THREAD_IN_PDD,
0,
NULL,
(PHW_VTBL)&CTRLVTb1
};
PHWOBJ rgpHWObjects[]={/*包含两个PDD实例的数组*/
&BluetoothObj,
&BluetoothCTRLObj
};
DEVICE_LIST SerDL={/*存储设备驱动程序中所有串口设备*/
“CESerial.dll”,/*串口驱动程序的名字*/
sizeof(rgpHWObjects)/sizeof(PHWOBJ),/*串口设备的数目*/
regHWObjects
};
PDEVICE_LIST GetSerialObject(VOID)
{
return (&SerDL);
}
图2
在串口驱动程序中注册了两个串口设备后,就要实现这两个PDD实例对应的流接口函数。微软为要实现的串口PDD模块提供了一个HWOBJ(Haredware Object)类型的串行对象表,这个结构列出了实现串口驱动的所有接口函数指针。见下面的描述:
typedef struct _HW_VTBL{
PVOID(*HWInit)(ULONG Identifier,PVOID pMDDCon-text,PHWOBJ pHWObj);
…,
…,
BOOL(*HWIoct1)(PVOID pHead,DWORD dwCode,
PBYTE pBufIn,DWORD dwLenIn,PBYTE pBufOut,DWORD
DwLenOut,PDWORDpdwActualOut);
} HW_VTBL,*PHW_VTBL;
用户通过修改串行口PDD的串行对象表改变函数集或函数名。下面的结构BluetoothVTbl的定义了蓝牙仿真串口DDSI函数的名称。
Const HW_VTBL BluetoothVTbl={
BluetoothInitSerial,
…,
…,
BluetoothIoctl
};
同样用结构变量CTRLVTbl定义了控制端口的DDSI函数名列表。由于这个串口设备用作内部实现特殊的功能,下面只列出了需要关心的主要函数名。
Const HW_VTBL CTRLVTbl={
CTRLInitSerial,
CTRLDeinit,
CTRLOpen,
CTRLClose,
…,
…,
CTRLIoctl
};
蓝牙作为一个驱动新经济的引擎,将会 对以嵌入式系统为主的“后PC机”时代的到来产生巨大的推动作用,同时它还将面临来自象IrDA、802.11、HomeRF等无线通信技术的挑战。而将OBEX成功引入蓝牙,使得在嵌入式系统下工作的蓝牙通信设备上传输文件、同步、打印等应用成为可能,因此在蓝牙中起着举足轻重的作用。
- Wind(30405)
- 驱动程序(47092)
相关推荐
Windows CE 5.0系统级开发介绍
基于Windows CE的流驱动程序如何去实现?
嵌入式操作系统Windows CE研究
怎么在不同的硬件设备上实现Windows CE的驱动开发?
采用WinCE实现SPI接口驱动程序
WINCE驱动程序开发指南
41WDM设备驱动程序开发,Windows 2000/XP WD
0PCI设备驱动程序设计(Windows通用)
0使用Visual Studio .NET
38Windows XP驱动程序编写方法
122Windows98/2000驱动程序编写方法
29Windows CE下的串口驱动设计
22大地电磁仪的Windows CE驱动程序设计
24PCI设备Windows通用驱动程序设计
24Windows CE 下通用串行总线(USB)驱动程序开发
28Windows CE下多线程串口通信
28Windows 2000/XP下I/O设备驱动程序的设计
18基于Windows CE的USB设备驱动程序设计
33Windows CE下通用串行总线(USB)驱动程序开发
21Windows CE.NET下触摸屏驱动程序的开发
57Windows CE.Net下基于流驱动的AD驱动设计与实现
19Windows CE.NET平台流接口USB驱动的设计
38Windows CE.NET平台流接口USB驱动的设计
3Windows CE下GPIO驱动程序的设计与应用
48Windows CE.NET 下ADC驱动开发设计
12uclinux串口驱动程序
18uclinux串口驱动程序源码
40Windows CE中实现蓝牙串口驱动程序
16Windows CE环境下无线网卡的自动安装
1109
PCI设备WINDOWS驱动程序的开发
3196Windows设备驱动程序编写时的主要问题及解决方案
1549Windows CE下SM501 STN驱动程序的设计
37Windows CE平台上开发采集板驱动程序
42Windows CE下事件驱动的串行通信方式
42基于S3C2410的Windows CE驱动开发
54基于Windows CE.NET数控系统的插补控制
34Windows WDM设备驱动程序开发指南
0WinCE的OLED驱动程序设计
1891
嵌入式Win CE中CAN总线控制器的驱动设计与实现
1653
Windows CENET环境下的流接口驱动程序开发
3Windows CEnet设备驱动程序开发研究
0Windows CENET中断架构分析和高速AD驱动程序的开发
0Windows CE环境下扩展串口通信功能的方法
5Windows CE平台上开发采集板驱动程序
0Windows CE驱动程序开发
0Windows CE设备驱动程序开发
0Windows CE下GPS与PDA串行通信的实现
5Windows CE下蓝牙协议栈驱动的实现
5Windows CE在指纹传感器设备驱动程序开发中的应用
0Windows CE中实现蓝牙串口驱动程序
6基于S3C2410的Windows CE驱动开发
0基于WinCE的串行外设接口驱动程序设计实现
3基于Windows CE PS2键盘的同步串口实现
6基于Windows CE.NET的设备驱动程序开发
0基于Windows CENET嵌入式数据采集卡的驱动程序设计
0基于Windows CE的USB设备驱动程序设计
5基于WINDOWS CE的开放式数控系统设备驱动程序开发
0基于WinDriver for CE的视频采集驱动程序设计
0嵌入式Windows CE设备驱动的研究实现
1在Windows CE下实现串口通信
6WindowsCE5的驱动程序的代码和结构、安装过程
3Windows CE的驱动程序开发解析
0微软改变处理Windows 10不兼容驱动程序的方法
3065CP210x VCP Drivers的USB转串口Windows驱动程序免费下载
43
电子发烧友App




评论