一种多硬件兼容蓝牙设备驱动系统的制作方法

文档序号:7763967阅读:506来源:国知局
专利名称:一种多硬件兼容蓝牙设备驱动系统的制作方法
技术领域
本发明涉及数字家庭技术领域,具体涉及一种多硬件兼容蓝牙设备驱动系统。
背景技术
随着以数字技术为核心的信息技术发展,引发了电视传输技术和方式的革命,催 生了数字家庭等技术的出现。在三网融合的呼声越来越高的今天,以数字电视机顶盒为核 心的数字家庭网络发展前景一片大好。各种数字家庭设备如手机、蓝牙摄像头等通过蓝牙 接口连入互联网,数字家庭用户则通过管理平台对网络设备进行管理,比如远程监控等等。 但是,我们发现数字电视及数字家庭三网融合、3C融合交互应用中的多硬件接口驱动和通 讯问题是目前面临的最大问题,其无法实现可扩展性和方便硬件加载和升级,满足不了数 字家庭技术接口发展需求。

发明内容
本发明实施例提供了一种多硬件兼容蓝牙设备驱动系统,出并实现适用于数字家 庭多硬件的蓝牙驱动,以解决数字电视及家庭网关中的多硬件接口的并发兼容驱动问题, 增强数字电视用户的体验度。相应的,本发明实施例提供了一种多硬件兼容蓝牙设备驱动系统,包括蓝牙协议模块,用于实现高层应用服务,包括WAE/WAP规范,用来满足在无线通信 网络上开发应用及服务的需求;TCP/UDP传输控制协议,对象交换协议OBEX,以及点对点协 议PPP,音频/电话A/T命令,二进制电话控制协议TCS-BIN,串口仿真协议RFC0MM,服务发 现协议SDP,逻辑链路控制和适配协议L2CAP,音频、蓝牙主机控制器接口 HCI,链路管理协 议(LMP),基带BB协议,射频RF协议;蓝牙设备接口模块,用于完成探测蓝牙硬件设备,嵌入式接口模式初始化工作;设备驱动功能模块,用于蓝牙设备建立物理链接,建立L2CAP逻辑链路,设备间数 据通信就绪,等待数据收发事件,启动数据通信,然后根据收发类型调用不同函数,在数据 收发处理完毕,撤销链路,系统各参数复位;蓝牙设备模块,对应于各蓝牙硬件设备。所述设备驱动功能模块中的调用函数包括hci_rx_taSk函数和hci_tx_taSk函 数,其中hci_rX_taSk用于负责接收数据的任务,从hdev- > rx_q队列中取数据,然后 根据数据的类型调用上层函数处理;hci_tX_taSk用于负责发送数据的任务,发送所有 connection中的ACL和SCO数据,以及hdev- > raw_q中的数据包。所述多硬件兼容蓝牙设备驱动系统采用Linux内核模块LKM机制,根据LKM机制 设计出的蓝牙设备驱动能屏蔽硬件差异的外部设备接口标准。本发明对比现有技术有如下的有益效果结合数字电视系统特点及Linux系统内 核优化技术,采用LKM(Linux Kernel Module)机制,设计出的蓝牙设备驱动能屏蔽硬件差 异的“硬件套接层”,灵活实现丰富的外部设备接口标准,具有可扩展性,方便硬件加载和升级。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1为本发明实施例中的多硬件兼容蓝牙设备驱动系统结构示意图;图2为本发明实施例中的多硬件兼容蓝牙设备驱动系统工作流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它 实施例,都属于本发明保护的范围。下面结合附图和实施例对本发明作进一步的描述。图1示出了本发明的多硬件兼容蓝牙设备驱动系统结构示意图,该系统包括蓝牙 协议模块101、蓝牙设备接口模块102、设备驱动功能模块103、蓝牙设备模块104,其中蓝牙协议模块101,用于实现高层应用服务,主要包括WAE/WAP规范,用来满足在 无线通信网络上开发应用及服务的需求;TCP/UDP传输控制协议,对象交换协议OBEX,以及 点对点协议PPP,音频/电话(A/T命令),二进制电话控制协议(TCS-BIN),串口仿真协议 (RFCOMM),服务发现协议(SDP),逻辑链路控制和适配协议(L2CAP),音频、蓝牙主机控制器 接口(HCI),链路管理协议(LMP),基带(BB)协议,射频(RF)协议等等;蓝牙设备接口模块102,用于完成探测蓝牙硬件设备,嵌入式接口模式初始化等工 作;设备驱动功能模块103,用于蓝牙设备建立物理链接,建立L2CAP逻辑链路,设 备间数据通信就绪,等待数据收发事件,启动数据通信,然后根据收发类型调用不同函数, hci_rX_taSk是负责接收数据的任务,它从hdev- > rx_q队列中取数据,然后根据数据的 类型调用上层函数处理。hci_tx_task是负责发送数据的任务,发送所有connection中的 ACL和SCO数据,以及hdev- > raw_q中的数据包。数据收发处理完毕,撤销链路,系统各参 数复位;蓝牙设备模块104,对应于各蓝牙硬件设备,这里的的蓝牙设备模块104和蓝牙设 备接口模块102用于获取蓝牙设备设备信息,如PID号、VID号等等。这里的设备驱动功能 模块103实现是该蓝牙驱动程序的核心功能。首先当蓝牙设备寻求接入主机时,主机控制 器HCI使用控制通道枚举,并给其分配唯一设备地址(1-127),同时读取该设备的class, subclass和protocol等设备描述符。如果读取到的设备描述符如果读取到的设备描述符 信息与hci_usb驱动程序注册到USB核心的信息相匹配,则将设备与相应的驱动程序进行 绑定。调用hci_usb_driver中指定的探测函数hci_usb_probe,初始化结构体hci_usb中 部分数据,并注册HCI设备。并由函数module_init、hci_usb_init、usb_register依次执行,usb_register 最终调用 usb_register_driver 完成驱动向内核注册。hci_usb_probe 模块搜索外接蓝牙设备,蓝牙设备建立物理链接,建立L2CAP逻辑链路,设备间数据通信就 绪,等待数据收发事件,启动数据通信,然后根据收发类型调用不同函数,hci_rX_taSk是负 责接收数据的任务,它从hdev- > rx_q队列中取数据,然后根据数据的类型调用上层函数 处理。hci_tx_task是负责发送数据的任务,发送所有connection中的ACL和SCO数据,以 及hdev- > raw_q中的数据包。数据收发处理完毕,撤销链路,系统各参数复位。本发明中,将蓝牙协议模块101在系统中固定不变,不同的设备只需修改底层的 模块,大大提高了设备的兼容性和可加载性。蓝牙协议模块分为三个层次。所述高层应用 层。该层主要包括WAE/WAP规范,用来满足在无线通信网络上开发应用及服务的需求;TCP/ UDP传输控制协议,对象交换协议OBEX,以及点对点协议PPP,音频/电话(A/T命令)等 等。所述中间层协议。在该层中,包含了二进制电话控制协议(TCS-BIN),串口仿真协议 (RFCOMM),服务发现协议(SDP),逻辑链路控制和适配协议(L2CAP),音频。所述底层硬件 层,主要包含蓝牙主机控制器接口(HCI),链路管理协议(LMP),基带(BB)协议,射频(RF) 协议。需要说明的是,这里的多硬件兼容蓝牙设备驱动系统采用LKM(LinuXKernel Module)机制,设计出的蓝牙设备驱动能屏蔽硬件差异的“硬件套接层”,灵活实现丰富的外 部设备接口标准,具有可扩展性,方便硬件加载和升级。通用层、体系结构层、外围层及层次 间接口层四部分组成。这里的蓝牙驱动的硬件抽象层主要为嵌入式操作系统内核提供统一 的功能服务接口,并在各层的调用之间设计了统一的调用接口,便于扩展和移植到其他硬 件平台。在设计该多硬件兼容蓝牙设备驱动系统时采用的是面向对象的方法,即一个设备 就是一个对象(net_deVice结构),它内部有自己的数据和方法。这里的通用层是不涉及体 系结构及外围端口寄存器具体操作的、能够通用于各种硬件平台的一层。当扩展或移植到 其他硬件平台上时,上层无须修改,而只须进行下层替换。该多硬件兼容蓝牙设备驱动系统 方设计出来的设备驱动能够适用于多硬件接口,兼容性强。需要说明的是,这里的多硬件兼容蓝牙设备驱动系统将整个驱动将分为蓝牙协议 层,蓝牙设备接口层,设备驱动层,蓝牙设备层四个部分。这里的蓝牙协议层是不涉及体系结构及外围端口寄存器具体操作的、能够通用于 各种硬件平台的一层。通用层内包括对统一的与编译器无关的协议栈的定义,以及提供 给嵌入式操作系统内核的对抽象设备的各种统一的操作服务的接口通用的实现部分。蓝牙 协议层中抽象设备操作的实现中需要涉及的操作,是通过调用体预先统一定义的接口进行 的。当扩展或移植到其他硬件平台上时,上层无须修改,而只须进行下层替换。这里的蓝牙设备接口层主要对体系结构相关的数据类型以及数据结构进行定义, 包括寄存器上下文保存格式的定义以及对中断异常向量起始地址、各种异常和中断处理的 入口偏移等,并负责通用硬件抽象层功能中体系结构相关部分的实现。实现的内容主要是 对各个寄存器的访问,对于中断异常向量表的操作以及底层的中断和异常处理。蓝牙设备 接口层的实现是按照上层规定的调用接口来进行的,因而针对不同的体系结构,上层蓝牙 协议层无须进行修改。针对某种体系结构设计实现的蓝牙设备接口层能够通用于CPU内核 体系结构兼容的嵌入式微处理器的硬件平台上,从而易于硬件抽象层在体系结构兼容的嵌 入式微处理器硬件平台上的扩展和移植。
这里的设备驱动层主要为嵌入式操作系统内核提供统一的功能服务接口,并在各 层的调用之间设计了统一的调用接口,便于扩展和移植到其他硬件平台。下层的功能实现 需要按照与上层确定的接口规范来进行。其中某些上下层之间的接口,尤其是蓝牙设备层 与上层之间的接口是使用宏定义的方式进行的。这里的蓝牙设备层主要包括对外围I/O接口和设备属性的定义,并且负责对各个 外围I/O设备端口寄存器的访问操作。蓝牙设备层的实现需要根据上层定义的接口进行。 通用硬件抽象层的蓝牙设备层必须提供对存储控制、总线控制、中断控制器、定时器控制 器、UART等基本I/O接口和设备的I/O端口寄存器的访问功能。本发明中所述的蓝牙驱动程序遵循该设计方法。设计时采用的是面向对象的方 法。一个设备就是一个对象(net_deViCe结构),它内部有自己的数据和方法。一个蓝牙设 备最基本的方法有初始化。发送和接收。本发明所述蓝牙驱动程序,最主要的工作就是完成设备驱动层。在Linux中所 有蓝牙设备都抽象为一个接口,这个接口提供了对所有蓝牙设备的操作集合。由数据结 构struct usb_deVice来表示蓝牙设备在内核中的运行情况,即蓝牙设备接口。数据结构 usb_device中有很多供系统访问和协议层调用的设备方法,包括初始化,打开和关闭设备 的open和stop函数,处理数据包发送的bt_Usb_data函数,包含传送数据的缓冲区、I/O端 点、消息队列以及缓冲区的消息串和消息串读写位置索引、传送缓冲区的指针以及表示设 备是否被激活、是否存在、是否打开灯状态标志位。在系统和驱动程序之间定义有专门的数 据结构进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供对多协议的支持。本发明提出的蓝牙驱动与USB core的通信时大多通过批量方式来传送的,其中通 URB (usb request block) ijfffiiM的^专$^1intusb_submit_urb (urb_t*urb)
现数据间交换。在嵌入式系统中,所有设备驱动程序,都必须向内核注册器设备驱动。对于蓝牙 USB设备驱动注册,该过程首先创建一个指向uSb_driver类型的结构体hci_usb_driver, 具体内容包括指定驱动程序的名字(hci_usb)、探测函数(hci_uSb_probe)、断开函数 (hci_usb_disconnect)、中断函数(hci_usb_suspend)、恢复函数(hci_usb_resume)、所支 持蓝牙设备列表(bluetooth_ids)。并由函数 module_init、hci_usb_init、usb_register 依次执行,usb_register最终调用usb_register_drover完成驱动向内核注册。当插入蓝牙设备时,USB core就会调用probe方法来检测被传递进来的信息,以 确定该设备是不是和驱动程序匹配,同时填充StrUCt_USb_deViCe完成对该设备的初始 化,使Ι/ο,memory可用,唤醒设备,申请内存空间,配置蓝牙的Ι/ο,memory资源,注册设备。 当蓝牙设备被拔出时,USB core就会调用disconnect方法来完成卸载。释放蓝牙设备和 PCI资源,停用PCI设备,使PCI设备中的设备指针赋空。驱动程序通过显式的模块初始化和消除函数注册与注销模块,调用modulejnit 来初始化一个模块,并在卸载时调用moduelexit函数。如图2所示,基于本发明实施例中的多硬件兼容蓝牙设备驱动系统中的方法流程 图,其可包括系统初始化、建立物理链路、数据传送和接收等。首先系统初始化,嵌入式接口 模式设置初始化,蓝牙模块初始化。hci_USb_pr0be模块搜索外接蓝牙设备,蓝牙设备建立物理链接,建立L2CAP逻辑链路,设备间数据通信就绪,等待数据收发事件,启动数据通信,然后根据收发类型调用不同函数,hci_rx_task 是负责接收数据的任务,它从hdev- > rx_q队列中取数据,然后根据数据的类型调用上层 函数处理。hci_tx_task是负责发送数据的任务,发送所有connection中的ACL和SCO数 据,以及hdeV->raW_q中的数据包。数据收发处理完毕,撤销链路,系统各参数复位。具 体流程如下S201 系统初始化,嵌入式接口模式设置于初始化,蓝牙模块初始化;S202 蓝牙设备搜寻,周围有无蓝牙设备;S203 蓝牙设备建立物理链接、建立L2CAP逻辑链路、设备间数据通信就绪、等待 数据收发事件;S204 有无数据交换事件;S205:判断收发类型;S206 数据接收处理HCI包数据接收、HCI解包、L2CAP解包、向上层端口发送数 据;S207 数据发送处理从上层端口接收数据、L2CAP打包、HCI打包、HCI包数据发 送;S208 数据收发处理完毕,撤销L2CAP逻辑链路,系统各参数复位。需要说的是,这里的当蓝牙设备插入主机时,主机控制器HCI使用控制通道枚举, 并给其分配唯一设备地址(1-127),同时读取该设备的class,subclass和protocol等设 备描述符。如果读取到的设备描述符如果读取到的设备描述符信息与hci_usb驱动程序注 册到USB核心的信息相匹配,则将设备与相应的驱动程序进行绑定。调用hCi_USb_driVer 中指定的探测函数hci_uSb_probe,初始化结构体hci_usb中部分数据,并注册HCI设备。综上,本发明具有以下有益效果1、实现了数字家庭的蓝牙驱动程序。数字家庭蓝 牙设备可以通过该驱动向内核提供注册信息,从而接入家庭网络进行通信。拓宽了数字家 庭业务范围。2采用LKM(Linux Kernel Module)机制,设计出屏蔽硬件差异的“硬件套接 层”,灵活实现丰富的外部设备接口标准。3充分的利用面向对象技术的强大功能,该驱动程 序具有平台无关性、硬件接口无关性等特点。4提供跨硬件和OS平台的透明性的蓝牙驱动 程序,可以工作于多平台或OS环境,这样我们的驱动程序可以方便的在不同蓝牙设备和不 同操作系统中运行。需要说明的是,上述系统和系统内的各单元之间的信息交互、执行过程等内容,由 于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处 不再赘述。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介 质可以包括只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。以上对本发明实施例所提供的一种多硬件兼容蓝牙设备驱动系统,本文中应用了 具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本 发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的 限制。
权利要求
1.一种多硬件兼容蓝牙设备驱动系统,其特征在于,包括蓝牙协议模块,用于实现高层应用服务,包括WAE/WAP规范,用来满足在无线通信网络 上开发应用及服务的需求;TCP/UDP传输控制协议,对象交换协议OBEX,以及点对点协议 PPP,音频/电话A/T命令,二进制电话控制协议TCS-BIN,串口仿真协议RFC0MM,服务发现 协议SDP,逻辑链路控制和适配协议L2CAP,音频、蓝牙主机控制器接口 HCI,链路管理协议 (LMP),基带BB协议,射频RF协议;蓝牙设备接口模块,用于完成探测蓝牙硬件设备,嵌入式接口模式初始化工作; 设备驱动功能模块,用于蓝牙设备建立物理链接,建立L2CAP逻辑链路,设备间数据通 信就绪,等待数据收发事件,启动数据通信,然后根据收发类型调用不同函数,在数据收发 处理完毕,撤销链路,系统各参数复位;蓝牙设备模块,对应于各蓝牙硬件设备。
2.如权利要求1所述的多硬件兼容蓝牙设备驱动系统,其特征在于,所述设备驱动功 能模块中的调用函数包括hci_rx_task函数和hci_tx_task函数,其中hci_rx_task用于 负责接收数据的任务,从hdev- > rx_q队列中取数据,然后根据数据的类型调用上层函数 处理;hci_tx_task用于负责发送数据的任务,发送所有connection中的ACL和SCO数据, 以及hdev- > raw_q中的数据包。
3.如权利要求1所述的设计方法,其特征在于,所述多硬件兼容蓝牙设备驱动系统采 用Linux内核模块LKM机制,根据LKM机制设计出的蓝牙设备驱动能屏蔽硬件差异的外部 设备接口标准。
全文摘要
本发明实施例公开了一种多硬件兼容蓝牙设备驱动系统,包括蓝牙协议模块,用于实现高层应用服务,包括WAE/WAP规范,用来满足在无线通信网络上开发应用及服务的需求;蓝牙设备接口模块,用于完成探测蓝牙硬件设备,嵌入式接口模式初始化工作;设备驱动功能模块,用于蓝牙设备建立物理链接,建立L2CAP逻辑链路,设备间数据通信就绪,等待数据收发事件,启动数据通信,然后根据收发类型调用不同函数,在数据收发处理完毕,撤销链路,系统各参数复位;蓝牙设备模块,对应于各蓝牙硬件设备。通过实施本发明,可实现丰富的外部设备接口标准,具有可扩展性,方便硬件加载和升级。
文档编号H04B5/00GK102082968SQ20101052874
公开日2011年6月1日 申请日期2010年10月29日 优先权日2010年10月29日
发明者戴洪学, 朱建宝, 罗笑南, 陈任 申请人:广东星海数字家庭产业技术研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1