您的位置:首页 > 产品设计 > UI/UE

BlueTooth: 蓝牙协议栈实现模式分析

2016-02-27 19:34 567 查看
蓝牙协议栈实现模式分析

蓝牙技术是一项新兴的技术。它的主要目的就是要在全世界范围内建立一个短距离的无线通信标准 。它使用 2.4-2.5 GHz 的 ISM( Industrion Scientifc Medical ) 频段来传送话音和数据。运用成熟、实用、先进的无线技术来代替电缆,它提供了低成本,低功耗的线接口,使所有的固定和移动设备诸如:计算机系统、家庭影院系统、无绳电话系统、通信设备等,通过微微网(PAN,Personal Area Network)连接起来相互通信,实现资源共享。 简而言之,蓝牙技术支持多种电子设备之间的短距离无线通信,这种通信不需要任何线缆,亦不需要用户直接手工干涉;每当一个嵌入了蓝牙技术的设备发觉另一同样嵌入蓝牙技术的设备,它们就能自动同步,并立一种特别的无线网络(ad
hoc), 相互通信,实现资源共享。

1.蓝牙的结构体系

蓝牙协协栈的体系结构如图 1 所示。它是由底层硬件模块,中间层和高端应用层三大部分组成。



1.1蓝牙的底层模块

底层模块是蓝牙技术的核心模块,所有嵌入蓝牙技术的设备都必须包括底层模块。它主要由链路管理层(LMP Link Manager Protocol)、基带层(BB Base Band)和射频(RF Rodio Frequency)组成。

其功能是:

无线连接层(RF)通过2.4GHZ无需申请的ISM频段,实现数据流的过滤和传输,它主要定义了对工作在此频段的蓝牙接收机应满足的要求;

基带层(BB)提供了两种不同的物理链路(同步面向连接链路SCO Synchronous Connection Oriented和异步无连接链路ACL Asynchronous Connection Less),负责跳频和蓝牙数据及信息帧的传输,且对所有类型的数据包提供了不同层次的前向纠错码(FEC Frequency Error Correction)或循环沉余度差错校验(CTC Cyclic Redundancy Check);

LMP层负责两个或多个设备链路的建立和拆除及链路的安全和控制,如鉴权和加密、控制和协商基带包的大小等,它为上层软件模块提供了不同的访问入口;

蓝牙主机控制器接口HCI (Host Controller Interface)由基带控制器、连接管理器、控制和事件寄存器等组成。它是蓝牙协议中软硬件之间的接口,它提供了一个调用下层BB、LM、状态和控制寄存器等硬件的统一命令,上、下两个模块接口之间的消息和数据的传递必须通过HCI的解释才能进行。HCI层以上的协议软件实体运行在主机上,而HCI以下的功能由蓝牙设备耒完成,二者之间通过传输层进行交互。
1.2 中间协议层

中间协议层由逻辑链路控制与适配协议L2CAP (Logical Link Control and Adaptation Protocol)、服务发现协议 SDP (Service Discovery Protocol)、串口仿真协议或称线缆替换协议 RFCOM 和二进制电话控制协议 TCS (Telephony Control protocol Spectocol)组成。

L2CAP 是蓝牙协议栈的核心组成部分,也是其它协议实现的基础。它位于基带之上,向上层提供面向连接的和无连接的数据服务。它主要完成数据的拆装、服务质量控制,协议的复用、分组的分割和重组(Segmentation And Reassembly)及组提取等功能。L2CAP允许高达64KB的数据分组。

SDP是一个基于客户/服务器结构的协议。它工作在 L2CAP层之上,为上层应用程序提供一种机制来发现可用的服务及其属性,而服务的属性包括服务的类型及该服务所需的机制或协议信息。

RFCOMM 是一个仿真有线链路的无线数据仿真协议,符合ETSI 标准的 TS 07.10串口仿真协议。它在蓝牙基带上仿真RS-232的控制和数据信号,为原先使用串行连接的上层业务提供传送能力。

TCS是一个基于 ITU-T Q.931 建议的采用面向比特的协议,它定义了用于蓝牙设备之间建立语音和数据呼叫的控制信令(Call Control Signalling),并负责处理蓝牙设备组的移动管理过程。
1.3 高端应用层

高端应用层位于蓝牙协议栈的最上部分。一个完整的蓝牙协议栈按其功能又可划分为四层:核心协议层(BB、LMP、LCAP、SDP)、线缆替换协议层(RFCOMM)、电话控制协议层(TCS-BIN)、选用协议层(PPP、TCP、TP、UDP、OBEX、IrMC、WAP、WAE)。而高端应用层就是由选用协议层组成。

选用协议层中的 PPP (Point-to-Point Protocol)是点到点协议,它由封装、链路控制协议、网络控制协议组成,它定义了串行点到点链路应当如何传输因特网协议数据,它主要用于LAN接入、拨号网络及传真等应用规范;

TCP/IP(传输控制协议/网络层协议)、UDP(User Datagram Protocol 对象交换协议)是三种已有的协议,它定义了因特网与网络相关的通信及其他类型计算机设备和外围设备之间的2通信。蓝牙采用或共享这些已有的协议去实现与连接因特网的设备的通信,这样,既可提高效率,又可在一定程度上保证蓝牙技术和其它通信技术的互操作性;

OBEX(Object Exchange Protocol)是对象交换协议,它支持设备间的数据交换,采用客户/服务器模式提供与 HTTP(超文本传输协议)相同的基本功能。该协议作为一个开放性标准还定义了可用于交换的电子商务卡、个人日程表、消息、和便条等格式;WAP(Wireless Application
Protocol)是无线应用协议,它的目的是要在数字蜂窝电话和其它小型无线设备上实现因特网业务。它支持移动电话浏览网页、收取电子邮件和其它基于因特网的协议。

WAE(Wireless Application Environment) 是无线应用环境,它提供用于 WAP 电话和个人数字助理

PDA(Personal Digtital Assistant) 所需的各种应用软件。
2. 蓝牙软件的实现

蓝牙的技术规范除了包括蓝牙的应用部分(即应用模型)外,还包括有很重要的高层协议栈部分。在实现蓝牙的时候,一般是将蓝牙分成两部分耒考虑的(如图一所示),其一,是硬件实现部分,它位于 HCI 的下面,亦即上面提到的底层硬件模块(蓝牙的硬件实现详见《电子技术应用》2002.11 期);其二是软件实现部分。软件实现部分位于
HCI 的上面,包括了蓝牙协议栈上层的 L2CAP、RFCOMM、SDP和 TCS以及蓝牙的一些应用。下面我们来讨论蓝牙高层协议栈的目的、结构、性能及其实现过程。
2.1 蓝牙高层协议栈的主要目标



图 2 协议栈及相关环境
蓝牙高层协议栈的主要目标是支持确定目标的用户模型;支持多种硬件平台;具有良好的用户使用接口,能够使用传统的应用,在可能的情况下使用现 有的协议;最小的源码数量;最大的重用;具有可维护性。蓝牙高层协议栈在实现操作系统独立性时使用了虚拟操作系统(VOS
Virtual Operating System)的概念,在操作系统和协议之间设计了一个虚拟操作系统接口,把蓝牙主机栈直接用到很多嵌入式实时操作系统中(如:OSE、Psos+、VxWorks 等),同时亦可用到标准的操作系统中(如:Windows 和 UNIX 等),而这些移植和使用都不需要改变协议栈的源码,这样,既提高了效率又在一定程度上保证了不同技术和设备的互操作性;为了实现硬件的独立性,蓝牙协议栈在 HCI 层以下附加了一个串行接口层,实现到不同 HCI 接口的映射;为了利用传统的应用,以及便于使更多的用户能够开发基于蓝牙的应用,蓝牙协议栈提供了蓝牙应用程序接口(API Application
Programming Interface);为了管理和配置协议栈的各个层次,在蓝牙协议栈软件中附加了一个协议栈的管理模块。这样蓝牙协议栈在上述几个方面都实现了有效的隔离,消除了对外部环境的依赖性,用户不再需要对蓝牙协议栈的源码进行任何改变,用户只需通过简单的编译和链接就可以集成进最新的蓝牙主机栈。如上图 2 所示。

2.2 蓝牙高层协议栈的组成



图 3 蓝牙高层协议栈的组成模块

蓝牙的高层协议栈通常设计成一个软件部件,而运行在主机设备上,所以,有时又称为主机栈(Host Stack)。它的结构如上图3 所示。它主要是由高层协议模块、硬件支持模块、协议管理器模块、剖面接口模块等组成。

高层协议模块主要由服务发现协议(SDP)、射频通信协议(RFCOMM)、逻辑链路控制与适配协议(L2CAP)、电话控制规范(TCS )、服务发现应用程序规范(SDAP)、对象交换协议(OBEX)以及串行应用规范(SPP)组成(而这些规范是任何蓝牙协议栈都必须实现的);

硬件支持模块主要是由主机控制接口如 HCI USB、HCI URAT、HCI RS232D等组成(这些模块不一定全部实现,可只选其中之一);

协议管理器模块的主要作用是负责对蓝牙协议栈根据使用环境进行配置,根据不同的操作系统和用户模型选用不同的配置方案(这是必须包括的模块);

剖面接口模块是由对象上载应用规范(OPP)、文件传输协议(FTP)、Sync、CTP、DUN、HS、FAX、LAN组成,它们是蓝牙规范规定的蓝牙剖面,还可以包括其它一些特有的剖面结构(这些模块不一定全部实现)。蓝牙高层协议栈各模块的功能已在 1.3 节中论述过,这里就不再详解。

2.3 模块及应用程序接口

(1) 主机控制接口(HCI)

蓝牙作为一种短距离的无线网络技术,为设备之间的互联提供了方面。使用蓝牙互联的主机大都具有处理器、总线和操作系统,蓝牙必须与它们有机地融合在一起才能很好地发挥作用。主机控制接口(HCI)为主机提供了直接控制 蓝牙模块的方法和途径。通过 HCI 把蓝牙模块和主机连接在一起。HCI 模块由HCI 事件管理、HCI 命令管理、HCI AC/SCO 数据传输、HCI 传输层API、向上层输出的
API 模块组成。HCI 固件通过访问基带命令、链路管理器命令、硬件状态寄存器、控制寄存器、事件寄存器实现对蓝牙硬件的 HCI 命令。

(2) RFCOMM 及其接口

前面曾提到 RFCOMM 是一个基于ETST 标准 TS 07.10的传输协议,提供了对 RS-232串行接口的仿真。它在两个蓝牙设备之间同时最多提供60条连接,最大可以接收/发送 32KB大小的数据分组。RFCOMM 的目的是使运行在两个不同设备上的通信路径具有一个通信段,这个通信段可以是终端用户的应用,亦可以是高层协议或表示终端用户应用的一些服务。RFCOMM
能够提供 DLC 的建立与释放、DLC 参数协商、数据发送、流量控制开/关命令、调制状态命令、远端端口协商、远端线路状态与测试命令等功能;而 RFCOMM 协议层接口能够提供启动过程、连接过程、聚合接口、数据交换接口、串行仿真接口功能。

(3) SDP及其接口

服务发现协议(SDP)是蓝牙框架的一个关键部分,它由服务发现代理(SDA)、服务发现服务器(SDS)、服务数据库管理器(SDM)三个模块组成。SDA 负责查询存在的服务及其属性,代表客户应用发送请求;SDS 负责对 SDA请求进行响应,根据 SDA 的请求,从 SDM 中取出相关的数据送给 SDA;SDM负责管理服务数据库和栈数据库。可以说 SDP 是所有应用模型的一个基础,它同时为应用提供了一种使用
L2CAP 连接发现可用服务以及决定这些可用服务的特征手段。利用 SDP 获得信息,蓝牙的设备就可以建立适当的连接。服务发现的应用程序接口( API ) 能够提供 L2CAP连接、服务查询会话、服务属性会话、服务查询属性会话、服务浏览、L2CAP连接断开功能。
(4) L2CAP接口

逻辑链路控制与适配协议(L2CAP)是数据链路层的一部分,它向上层提供面向连接和无连接的服务。L2CAP 部件向一个或多个适配协议输出服务。L2CAP 接口实际上是一个消息接口,每个关于适配实体的消息都有一个可用的函数,用这个函数耒生成相的消息并向正确的目的地发送该消息,而且适配实体的的用户还可以自由地组织这些消息。总的耒说,L2CAP 对面向连接的信道控制模块必须能实现:面向连接的信道连接、信道配置、信道数据传输、信道连接的断开、回送处理及实现对特定信息的交换;而对无连接的信道控制模块必须实现:无连接信道数据的发送、组处理及开启/关闭无连接信道的数据接收。

(5) 栈连接管理器(SCM)及其接口

在图 3 蓝牙协议栈的组成模块中虽然没有这一部分,但是所有蓝牙协议栈的实现都必须包括这样一个部件,该部件由数据和语音链接管理模块及安全管理模块组成,负责处理和管理蓝牙的基带连接。且必须完成以下功能:生成数据链路和语音链路;在链路配对的情况下,保持链路密钥;确保蓝牙栈建立的数据和语音链路之上的多个应用之间的相互独立;SMC在L2CAP层起本地路由功能,使用本地地址建立一个本地数据链路时生成的本地名柄。

(6) 蓝牙应用程序接口(API)

蓝牙应用程序接口(API)就是要解决层与层之间的通信问题。通常是通过正确调用请求消息函数耒进行层 A 与 B 之间的通信。请求函数将为一个特定的请求消息分配内存,消息中可以填入函数的输入参数,然后消息根据使用的要求送到 B 层。消息的处理和为消息分配内存一般是通过虚拟操作系统(VOS)的服务例程耒完成。在蓝牙协议栈中层与层之间的通信与一般的协议之间的通信概念和机制相同,都是使用请求、确认、指示和响应四种原语耒实现。

3.东芝蓝牙协议栈产品 BluetoothTM Utility软件介绍

东芝蓝牙协议栈BluetoothTM Utility软件是东芝公司专门为Windows而设计的软件栈,其结构如图 4 所示。



图 4 东芝蓝牙栈的软件结构
3.1 结构、特性及应用

东芝蓝牙协议栈产品BluetoothTM Utility软件栈是由主机控制接口以上的蓝牙协议栈(L2CAP、RFCOMM、SDP)、硬件驱动程序(USB和PC卡)、应用程序接口(API)和支持蓝牙剖面的用户应用模块组成。它与蓝牙的1.0b板一致。该软件栈能够实现通用访问应用规范GAP(Generic Access Profile)特性和业务发现应用规范SDAP(Service
Discovery Application Profile)特性,它包括了蓝牙服务中心、蓝牙监视和蓝牙的LocalCOM三个方面的应用。其中,蓝牙服务中心主要是指用户接口UI(User Interface)方面的应用,它为蓝牙最终用户提供了发现远端的设备、查询在远端设备提供的服务、与远端设备进行连接、以及列表管理等多种蓝牙服务;蓝牙监视是在当系统加电后,用户就可以使用该应用耒控制蓝牙设备的供电状态并能够指示蓝牙设备的连接模式、状态 、standby模式和断电模式;蓝牙的LocalCOM主要是一个向导应用,用户可以用它耒与自己选择的远端设备生成虚拟的COM、服务和连接。该软件栈中的L2CAP和RFCOMM是作为驱动程序模块耒实现的,而SDP协议是作为用户模式应用耒实现的。对蓝牙用户支持的剖面特性还使用了一些Windows
COM应用和电话应用,这些应用使用应用程序接口(API)与蓝牙协议栈进行通信。如图 4 中的蓝牙ad hoc网络应用软件SPANworks就是通过API与其它包含蓝牙技术的设备进行数据交换的。

3.2 协议栈支持的使用环境

(1) 该软件栈可以支持各种不同的硬件平台,它为各种硬件平台提供了硬件设 备驱动程序和蓝牙总线驱动程序,包括位于这些驱动程序之上的L2CAP和HCI,这样,就可以很方便地通过一个公共设备驱动程序接口与主机控制器进行通信。

(2) 该软件套件是独立于硬件的,当有新硬件时,只需添加新硬件的驱动程序 而无须对上层软件进行任何的改变。

(3) 从图4 中可以看出 RFCOMM 驱动程序和 SDP服务位于蓝牙总线驱动程 序之上,中间是蓝牙总线驱动程序的 API,所以,当有新的剖面应用要开发的时候,只需在蓝牙总线驱动程序的 API 之上增加相应的协议驱动程序和服务就可以了。

(4) 该软件栈可以支持的操作系统:Microsoft Windows 98 Second Edition; Microsoft Windows Millennium Edition; Microsoft Windows 2000;Microsoft Windows NT Version 4.0。

(5) 该软件栈可以支持的硬件接口:PCMCIA、USB、UART。

(6) 该软件栈可以支持的应用剖面:普通接入剖面、服务发现剖面、串行接口 剖面、拨号网络剖面、传真剖面、LAN 接入剖面、对象推剖面以及文件传输剖面。

(7) 该软件栈实现了如下的协议:L2CAP、RFCOMM、OBEX以及 SDP。

4.结束语

蓝牙技术作为一个开放的无线应用标准,能通过无线连接的方式将一定范围内的固定或移动设备连接起来,使人们能够更方便更快速地进行语音和数据的交换,这无疑地将会成为未来无线通信领域的一个重要的研究方向。本文所描述的蓝牙技术硬件实现模式分析,只是蓝牙核心技术中的一部分,随着蓝牙技术的不断完善与产品的成功开发,可以肯定,蓝牙技术将会逐渐进入我们的工作和生活,成为我们生活中不可缺少的一部分。

http://blog.csdn.net/blueangle17/article/details/23432463
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: