BLE 协议栈结构学习笔记

Primary Controller Bluetooth Application Host Bluetooth Core Multiple Secondary Controllers

Primary Controller Bluetooth Application Host Bluetooth Core Multiple Secondary Controllers

1、蓝牙系统的主要组成部分

    

    蓝牙系统可以主要分为Bluetooth Application和Bluetooth Core两部分,Bluetooth Core又可分为Host和Controller两部分,有别于物理实体,这些组成部分都是逻辑实体,并不一定一一对应于物理实体,在实际应用中,Host和Bluetooth Application可能位于一个物理     实体中(主控CPU),而Controller位于另外一个物理实体中(蓝牙芯片)。

    蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙应用层协议(Bluetooth Application)。蓝牙核心协议关注对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何使用这些机制;蓝牙应用层协议,是在蓝牙核心协议的基础上,根据具体的应用需求,百花齐放,定义出各种各样的策略,如FTP、文件传输、局域网等等。

    Bluetooth Core由两部分组成,HostController。这两部分在不同的蓝牙技术中(BR/EDR、AMP、LE),承担角色略有不同,但大致的功能是相同的。Controller负责定义RFBaseband等偏硬件的规范,并在这之上抽象出用于通信的逻辑链路(Logical Link);Host负责在逻辑链路的基础上,进行更为友好的封装,这样就可以屏蔽掉蓝牙技术的细节,让Bluetooth Application更为方便的使用。 在一个系统中,Host只有一个,但Controller可以一个,也可以有多个。

 2、蓝牙协议栈各层

  Controller

  • 物理层(Physical Layer)

(1)射频: 工作在2.4GHz ISM频段上,GFSK调制方式。3个固定的广播通道,37个数据通道,每个通道2MHz,采用跳频通信,主从设备由Master跳频图控制跳频。

  • 链路层(Link Layer)

    逻辑层的主要功能,是在已连接的蓝牙设备之间,基于物理链路,建立逻辑信道。所谓的逻辑信道,和城市道路上的车道类似:这里的车道(逻辑信道),从物理角度看,并没有什么分别,只是为了方便交通(数据传输),人为的抽象出来的。同理的

    一条城市道路可以看做一个物理链路(可能有两个方向,我们只考虑其中一个即可),该物理链路根据行车用途,可以划分为多个逻辑信道,如直行车道、右转车道、左转车道、掉头车道、快速车道、慢速车道等等。和车道类似,蓝牙逻辑信道也可以依据传输类型来划分成不同的逻辑信道。(用于管理底层物理链路的控制类传输、传输用户数据的用户类传输、其他一些比较特殊的传输类型)

    BLE的Controller部分主要都围绕这一部分实现,Link层的内容规定了BLE底层是怎么实现蓝牙设备之间的控制、数据传输等。Link层使用了状态机,通过不同事件的发生来切换到不同的状态。

(1)六种链路状态:Standby、Advertise、Scanner、Initiator、Master、Slave

     链路层定义设备处于五种状态中的哪一种

(2)星行拓扑结构

(3)链路层内容包含了:链路状态机,Packet/PDU比特序(低字节优先),设备地址,广播事件、类型、间隔等,链路参数,扫描连接过程等。

  • Host/Controller接口层 (HCI)

(1)是标准蓝牙规格的复用,通过调用额外的命令来实现蓝牙低功耗的特定功能。

(2)很薄的一层,该层上不做任何的处理。

(3)在双设备解决方案中,允许host通过标准的接口(如UART、USB、SDIO等接口)与controller进行通讯。

(4)CC254x的BLE协议栈内部通过使用HCI层来实现高层与底层之间的通讯。Host通过HCI API与低层通信

  Host

  • 逻辑链路控制与适应协议层(L2CAP)

对下,他抽象出和具体技术无关的数据传输通道,至此用户不用再关心繁琐的蓝牙技术细节

对上,他以L2CAP channel endpoints的概念(类似于TCP/IP中的端口),为具体的应用程序(Profiles)提供独立的数据传输通道(也是一个逻辑通道)

(1)允许上层协议和应用程序传输与接收最长23字节长度的数据包。

(2)提供通道管理,允许两个端点的之间的逻辑通道,由Link层支持。

(3)该层支持连接参数更新。

L2CAP包括两个子模块:

    (1)  Channel Manager主要负责创建、管理、释放L2CAP channel。

    (2)  L2CAP Resource Manager负责统一管理、调度L2CAP channel上传递的PDU(Packet Data Unit),以确保那些高QoS的packet可以获得对物理信道的控制权。

  • 安全管理层协议(SMP)

      SMP是一个点对点的协议,基于专用的L2CAP channel,用于生成加密和识别用的密匙。

(1)执行鉴权和秘钥管理。

(2)使用AES-128作为加密算法。

(3)定义了建立安全链路协议。

(4)与GAP一起管理两个设备的关系:

(5)配对(Pairing)-当两个设备建立了连接,则加密通道。

(6)鉴权(Authentication)-校验设备是否可信任,防止中间人攻击保护(Man-in-the-Middle attacks)。

(7)绑定(Bonding)-保持两个设备的长期关系。当设备连接上时,保存连接时的安全和身份信息用于下次使用

  • 通用访问配置文件层(GAP)

    GAP是一个基础的蓝牙profile,用于提供蓝牙设备的通用访问功能,包括设备发现、连接、鉴权、服务发现等等。

    GAP 是所有其它应用模型的基础,它定义了在 Bluetooth 设备间建立基带链路的通用方法。还定义了一些通用的操作,这些操作可供引用 GAP 的应用模型以及实施多个应用模型的设备使用。GAP 确保了两个 蓝牙设备(不管制造商和应用程序)可以通过 Bluetooth 技术交换信息,以发现彼此支持的应用程序。

(1)为连接相关的服务定义几个通用过程

      设备发现、连接建立、连接管理、连接结束、初始化安全特性

      大多数GAP函数直接影响Controller下链路层的函数。

(2)配置文件的角色

      GAP层下设备只能工作在下面4种角色之一

      广播者、观察者、外围设备、中心设备

(3)配置文件的多重角色

(4)发现模式

     无广播模式、限时广播模式、永久广播模式

(5)GAP管理广播与扫描的响应数据包

(6)配对

     配对可由中心设备或外围设备发起。在配对过程中,两个设备会产生和交换短期的秘钥用于数据包的解密。中心设备或外围设备都可请求打开绑定功能用与两个设备长期通讯。生成一个长期秘钥,并通过交换和存储就可让设备在再次连接时可快速重新加密,而不需要再进行一次完整的配对过程。   

     在配对过程中,只要有一方设备不请求鉴权信息,那么就可直接跳过密码键入进入工作。

  • 属性协议层(ATT)

(1)概述

     属性是一个离散值,它有下面三个特性组成:

     句柄(handle)或地址

     类型(type)

     权限(permission)

     ATT定义可空中升级协议的读写和发现属性

     服务器通过属性显示数据

  • 通用属性配置文件层(GATT)

(1)概述

     应用程序或配置文件(Profile)可以通过GATT实现属性客户端与属性服务器之间的通讯。

    GATT定义了:

    通过使用属性协议来发现、读、写和获取这些属性指示的过程

    服务或配置文件的各个特征的分组和联系

    配置属性的广播过程

(2)配置文件的分层

    一个配置文件(Profile)由一个或更多服务组成

    一个服务可以包含多个特征值

    在特征值之前必须要有特征值的声明属性

    特征还包含多个可选的描述属性,如Configuration或description

    (不理解的话网上找下BLE服务实例理解下)

 (3) 客户端命令

     当BLE设备处于连接状态时,GATT客户端可执行几个不同子程序与GATT服务设备通讯:

     通过UUID发现特征 -搜索GATT服务器的所有属性,直到找到与指定的UUID匹配的属性。

     读特征值 -读取指定句柄的特征值。

     写特征值 -写一个新的值到指定的特征。

     当GATT服务器如下配置,则就不需要客户端发送请求就可直接将消息发送给GATT客户端:

     通告(Notification) -服务器不需要接收读请求就可以发送特征值,客户段也不需要响应。

     指示(Indication) -服务器不需要接收到读请求就可以发特征值,但客户端必须要响应。

猜你喜欢

转载自blog.csdn.net/qq_31314937/article/details/81155384