蓝牙协议分析协议架构转载蜗窝科技

1.前言

本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析(1)_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。

2.协议层次

蓝牙协议是通信协议的一种,为了把复杂问题简单化,任何通信协议都具有层次性,特点如下:

从下到上分层,通过层层封装,每一层只需要关心特定的、独立的功能,易于实现和维护;

在通信实体内部,下层向上层提供服务,上层是下层的用户;

在通信实体之间,协议仅针对每一层,实体之间的通信,就像每一层之间的通信一样,这样有利于交流、理解、标准化。

蓝牙协议也不例外,其协议层次如下:

从OSI(OpenSystemInterconnection)模型的角度看,蓝牙是一个比较简单的协议,它仅仅提供了物理层(PhysicalLayer)和数据链路层(DataLinkLayer)两个OSI层次。但由于蓝牙协议的特殊性、历史演化因素等原因,其协议层次又显的不简单,甚至晦涩难懂(如上面图片所示的PhysicalLink、LogicalTransport等)。

蓝牙协议分为四个层次:物理层(PhysicalLayer)、逻辑层(LogicalLayer)、L2CAPLayer和应用层(APPLayer)。

物理层,负责提供数据传输的物理通道(通常称为信道)。通常情况下,一个通信系统中存在几种不同类型的信道,如控制信道、数据信道、语音信道等等。

逻辑层,在物理层的基础上,提供两个或多个设备之间、和物理无关的逻辑传输通道(也称作逻辑链路)。

L2CAP层,L2CAP是逻辑链路控制和适配协议(LogicalLinkControlandAdaptationProtocol)的缩写,负责管理逻辑层提供的逻辑链路。基于该协议,不同Application可共享同一个逻辑链路。类似TCP/IP中端口(port)的概念。

APP层,理解蓝牙协议中的应用层,基于L2CAP提供的channel,实现各种各样的应用功能。Profile是蓝牙协议的特有概念,为了实现不同平台下的不同设备的互联互通,蓝牙协议不止规定了核心规范(称作Bluetoothcore),也为各种不同的应用场景,定义了各种Application规范,这些应用层规范称作蓝牙profile。

在以上四个层次的基础上,蓝牙协议又将物理层和逻辑层划分了子层,分别是PhysicalChannel/PhysicalLinks和LogicalTransports/LogicalLinks,这一划分,相当使人崩溃,要多花费大量的脑细胞去理解它们,具体请参考下面的分析。

2.1物理层

物理层负责提供数据传输的物理信道,蓝牙的物理层分为PhysicalChannel和PhysicalLinks两个子层。我们先介绍PhysicalChannel。

2.1.1PhysicalChannel(物理信道)

一个通信系统中通常存在多种类型的物理信道,蓝牙也不例外。另外,由“蓝牙协议分析(1)_基本概念”的介绍可知,蓝牙存在BR/EDR、LE和AMP三种技术,这三种技术在物理层的实现就有很大的差异,下面让我们一一介绍。

首先是相同点,BR/EDR、LE和AMP的RF都使用2.4GHzISM(IndustrialScientificMedical)频段,频率范围是2.-2.GHz。

注1:不同国家和地区蓝牙的频率和信道分配情况是不同,本文所有的描述都以中国采用的“欧洲和美国”标准为准。

除了相同点,剩下的都是不同点了。

BR/EDR是传统的蓝牙技术,它这样定义物理信道:

1)ISM频率范围内被分成79个channel,每一个channel占用1M的带宽,在0channel和78channel之外设立guardband(保护带宽,LowerGuardBand为2MHz,UpperGuardBand为3.5MHz)。

2)采用跳频技术(hopping),也就是说,某一个物理信道,并不是固定的占用79个channel中的某一个,而是以一定的规律在跳动(该规律在技术上叫做"伪随机码",就是"假"的随机码)。因此蓝牙的物理信道,也可以称作跳频信道(hoppingchannel)。

3)BR/EDR技术定义了5种物理信道(跳频信道),BR/EDRBasicPiconetPhysicalChannel、BR/EDRAdaptedPiconetPhysicalChannel、BR/EDRPageScanPhysicalChannel、BR/EDRInquiryScanPhysicalChannel和BR/EDRSynchronizationScanChannel。

4)BR/EDRPageScanPhysicalChannel用于蓝牙设备的发现操作(discovery),即我们常用的搜索其它蓝牙设备(discover)以及被其它蓝牙设备搜索(discoverable)。

5)BR/EDRInquiryScanPhysicalChannel用于蓝牙设备的连接操作(connect),即我们常用的连接其它蓝牙设备(connect)以及被其它蓝牙设备连接(connectable)。

6)BR/EDRBasicPiconetPhysicalChannel和BR/EDRAdaptedPiconetPhysicalChannel主要用在处于连接状态的蓝牙设备之间的通信。它们的区别是,BR/EDRAdaptedPiconetPhysicalChannel使用较少的RF跳频点。BR/EDRBasicPiconetPhysicalChannel使用全部79个跳频点,而BR/EDRAdaptedPiconetPhysicalChannel是根据当前的信道情况使用79个跳频点中的子集,但是跳频数目也不能少于20个。这个主要是因为蓝牙使用ISM频段,当蓝牙和WIFI共存的时候,部分跳频点被WIFI设备占用而使得蓝牙设备在这些跳频点上的通信总是失败,因此,需要避过那些WIFI设备占用的频点。

7)BR/EDRSynchronizationScanChannel可用于无连接的广播通信,后续文章会详细介绍。

8)同一时刻,BT设备只能在其中一个物理信道上通信,为了支持多个并行的操作,蓝牙系统采用时分方式,即不同的时间点采用不同的信道。

LE是为蓝牙低功耗而生的技术,为了实现低功耗的目标,其物理信道的定义与BR/EDR有些差异:

1)ISM频率范围内被分成40个channel,每一个channel占用2M的带宽,在0channel和39channel之外设立guardband(保护带宽,LowerGuardBand为2MHz,UpperGuardBand为3.5MHz)。

2)LE技术定义了2种物理信道,LEPiconetchannel和LEAdvertisementBroadcastChannel。

3)LEPiconetChannel用在处于连接状态的蓝牙设备之间的通信,和BR/EDR一样,采用调频技术。和BR/EDR不一样的地方是,只会在40个频率channel中的37个上面跳频。

4)LEAdvertisementBroadcastChannel用于在设备间进行无连接的广播通信,这些广播通信可用于蓝牙的设备的发现、连接(和BR/EDR类似)操作,也可用于无连接的数据传输。

8)和BR/EDR一样,同一时刻,BT设备只能在其中一个物理信道上通信,为了支持多个并行的操作,蓝牙系统采用时分方式,即不同的时间点采用不同的信道。

AMP是为高速数据传输设计的技术,其物理层规范直接采用.11(WIFI)的PHY规范,主要有如下特点:

AMP物理信道只有一种,即AMPPhysicalChannel,主要用于已连接设备之间的数据通信,和BR/EDR技术中的BR/EDRAdaptedPiconetPhysicalChannel位于一个级别,可以互相切换使用。

2.1.2PhysicalLinks(物理链路)

由2.1.1的描述可知,蓝牙协议为BR/EDR、LE和AMP三种技术定义了8种类型的物理信道,包括:

AMPphysicalchannel

BR/EDRBasicPiconetPhysicalChannelBR/EDRAdaptedPiconetPhysicalChannelBR/EDRPageScanPhysicalChannelBR/EDRInquiryScanPhysicalChannelBR/EDRSynchronizationScanChannel

LEPiconetChannelLEAdvertisementBroadcastChannel

而物理链路,则是对这些物理信道(主要是BR/EDR技术中的BasicPiconetPhysicalChannel和AdaptedPiconetPhysicalChannel)的进一步封装,其主要特征是(可参考2.5中的图片以辅助理解):

1)PhysicalLink是一个虚拟概念,不对应协议中任何的实体,数据包封包/解包的过程中不被体现。

2)AMPPhysicalChannel、LEPiconetChannel、LEAdvertisementBroadcastChannel均有一个一一对应的PhysicalLink,分别是AMPPhysicalLink、LEActivePhysicalLink、LEAdvertisingPhysicalChannel。

3)BR/EDRPageScanPhysicalChannel、BR/EDRInquiryScanPhysicalChannel、BR/EDRSynchronizationScanChannel只在特定时间段使用,且无法控制任何属性,因此不需要再PhysicalLink中体现。

4)BR/EDRBasicPiconetPhysicalChannel和BR/EDRAdaptedPiconetPhysicalChannel是BR/EDR技术中已连接设备之间进行数据通信的通道,且同一时刻只能根据应用场景选择一种channel进行数据传输。因此这两个channel被map到BR/EDRActivePhysicalLink、BR/EDRParkedPhysicalLink和BR/EDRConnectionlessSlaveBroadcastPhysicalLink三个物理链路上。

5)BR/EDRActivePhysicalLink和BR/EDRParkedPhysicalLink的抽象主要有两个方面的意义:5-1)屏蔽底层的Basic/AdaptedPiconetPhysicalChannel之间的差异,统一使用PhysicalLink取代。在需要的时候,可以通过上层的链路管理协议,指定使用哪一种physicalchannel(BasicorAdapted)。5-2)可以通过PhysicalLink的抽象,控制PhysicalChannel的一些属性(如发射功率、收发周期等),以达到节省功耗的目的。而上面的层次(如逻辑层)不需要对这些动作知情。

6)BR/EDRActivePhysicalLink定义了连接状态的蓝牙设备在链路处于active状态时的物理链路,该物理链路对应的设备的发射功率是可修改的。

7)BR/EDRParkedPhysicalLink定义了连接状态的蓝牙设备在链路处于parked状态时的物理链路。parked状态是一种特殊的连接状态,连接双方没有正在进行的数据传输,所有的链路消耗,都是为保持连接所做的事情。此时可以通过降低在物理信道上的收发频率而降低功耗。该物理链路和BR/EDRActivePhysicalLink使用相同的物理信道。

8)BR/EDRConnectionlessSlaveBroadcastPhysicalLink使用BR/EDRAdaptedPiconetPhysicalChannel,用于一点到多点的广播通信。

9)由上面的描述可知,物理链路这一层抽象,实在是可有可无,希望大家不要纠结,知道怎么回事即可。

2.2逻辑层

逻辑层的主要功能,是在已连接(LEAdvertisementBroadcast可以看做一类特殊的连接)的蓝牙设备之间,基于物理链路,建立逻辑信道。所谓的逻辑信道,和城市道路上的车道类似:

一条城市道路可以看做一个物理链路(可能有两个方向,我们只考虑其中一个即可),该物理链路根据行车用途,可以划分为多个逻辑信道,如直行车道、右转车道、左转车道、掉头车道、快速车道、慢速车道等等。

这里的车道(逻辑信道),从物理角度看,并没有什么分别,只是为了方便交通(数据传输),人为的抽象出来的。和车道类似,蓝牙逻辑信道的划分依据是传输类型,主要包括下面3类(即LogicalLink):

1)用于管理底层物理链路的控制类传输,包括AMP-C、ACL-C、PSB-C、LE-C、ADVB-C。

2)传输用户数据的用户类传输,包括AMP-U、ACL-U、PSB-U、LE-U、ADVB-U。

3)其它比较特殊的传输类型,包括流式传输(stream)、PBD(ProfileBroadcastData)。

以上每种LogicLink都会在下层对应一个LogicalTransport,这些LogicalTransport具有一些属性值,如流控、应答/重传机制等。如下:

AMPACL(AsynchronousConnection-OrientedLink),基于AMP技术的、面前连接的、异步传输链路,为AMP-U提供服务。

BR/EDRACL,基于BR/EDR技术的ACL链路,为ACL-C、ACL-U提供服务。

SCO/eSCO(SynchronousConnection-Oriented/ExtendedSCO),基于BR/EDR技术的、面向连接的、同步传输链路,为stream类型的LogicalLink提供服务。

ASB(ActiveSlaveBroadcast)、PSB(ParkedSlaveBroadcast),基于BR/EDR技术的、面向连接的广播传输链路,为ACL-U、PSB-U、PSB-C提供服务。

CSB(ConnectionlessSlaveBroadcast),基于BR/EDR技术的、无连接的广播链路,为PBD提供服务。

LEACL,基于LE技术的、面前连接的、异步传输链路,为LE-U、LE-C提供服务。

ADVB(AdvertisingBroadcast),基于LE技术的、广告/广播链路,为ADVB-U、ADVB-C提供服务。

注2:AMP-C没有对应的LogicalTransport,而是直接控制AMPPhysicalLink完成所需功能。

注3:蓝牙逻辑层的抽象也是让人醉了!还是那句话,不要逼自己去理解一个疯子的行为,不然自己也会疯的。

2.3L2CAPChannels

L2CAP是LogicalLinkControlandAdaptationProtocol(逻辑链路控制和适配协议)的缩写,蓝牙协议到这个层次的时候,就清爽多了:

对下,它在用户类XXX-ULogicalLink的基础上,抽象出和具体技术无关的数据传输通道(包括单播和广播两类),至此用户就不再需要关心繁杂的蓝牙技术细节。

对上,它以L2CAPchannelendpoints的概念(类似TCP/IP中的端口),为具体的应用程序(profile)提供独立的数据传输通道(当然,也是一个逻辑通道)。

2.4Profiles

profile是蓝牙Application的代指,也可以翻译为服务,为了实现不同平台下的不同设备的互联互通,蓝牙协议为各种可能的、有通用意义的应用场景,都制定的了规范,如SPP、HSP、HFP、FTP、IPv6/6LoWPAN等等。

Profiles基于L2CAP提供的L2CAPchannelendpoints实现,在它们对应的层次上进行数据通信,以完成所需功能。有关蓝牙profile的介绍,会在后续文章中陆续给出,这里就不再详细说明了。

2.5总结

下面图片包含上面各个层次(除了APPlayer)中涉及到的一些实体、概念以及相互关系,供大家参考。

摘录自:Core_v4.2.pdf----Vol1:ArchitectureTerminologyOverview----PartA:Architecture----3DATATRANSPORTARCHITECTURE----3.2TRANSPORTARCHITECTUREENTITIES

3.蓝牙核心框架

蓝牙规范有两类:一类是蓝牙核心规范,由BluetoothCoreSpecification定义,囊括到L2CAP层,以及相关的核心profile;另一类是蓝牙Application规范,包含了各种各样的profile规范(具体可参考“







































最好的白癜风医院是哪家
北京哪个看白癜风的医院好



转载请注明:http://www.92nongye.com/gaishu/204616378.html