蓝牙架构(4)—— 2 蓝牙系统架构 (2.0 核心系统架构)

Vol 1架构和术语概述

Part A 2 蓝牙系统架构

Agenda:

2.0 核心系统架构. 

2.0.1 蓝牙BR/EDR最小系统. 

2.0.3 蓝牙BR/EDR/LE最小系统. 

2.0.4 蓝牙核心规范描述内容. 

2.0.5 蓝牙核心系统中的服务. 

2.0.6 蓝牙核心系统的一些可选功能. 

2.0.7 一致性测试. 

Part A 2 蓝牙系统架构

2.0 核心系统架构

(181页)蓝牙核心系统包括一个主机,一个主要控制器和零到多个次要控制器。

2.0.1 蓝牙BR/EDR最小系统

蓝牙BR/EDR最小核心系统包括:

  • 控制器中四个最底层,BR/EDR射频物理层(PHY),链路控制层(LC),基带资源管理器(RM),链路管理器(LM)
  • HCI接口
  • L2CAP(逻辑链路控制和适配层)
  • SDP profile
  • GAP profile

如果蓝牙BR/EDR最小核心系统带有AMP控制器,还会包括:

  • AMP射频物理层(AMP PHY)
  • AMP媒体访问控制层(AMP MAC)
  • AMP适配层(AMP PAL)
  • AMP管理器(AMP Resource Manager)

2.0.3 蓝牙BR/EDR/LE最小系统

如果蓝牙系统包括BR/EDR和LE技术,那么最小核心系统就是上面两个最小核心系统的叠加。完整的蓝牙应用需要更多附加的服务和上层协议。蓝牙的应用场景非常多,所以如果包含所有的协议,系统会非常庞大。目前蓝牙芯片或设备只是针对不同的场景,集成不同的上层服务和协议,不会集成所有的蓝牙协议。在本章中,只讨论蓝牙最小系统中包括的层次和协议。

以下是捆绑BR/EDR/LE技术的蓝牙最小核心系统图(182页):

2.0.4 蓝牙核心规范描述内容

(183页)图中显示了蓝牙最小核心系统的功能模块、控制流和数据流。图中的功能模块只是参考,一般情况下蓝牙规范不会定义实现细节。但是蓝牙规范会定义模块之间的交互。因此图中显示的功能模块是为了帮助描述系统行为。实现方式各个厂商自己定,可能与上图有些差别。

蓝牙规范为所有设备间操作定义标准交互,蓝牙设备根据蓝牙规范交换协议信令。蓝牙核心系统协议包括:

  • Radio (PHY) protocol
  • Link Control (LC)
  • Link Manager (LM) protocol
  • Link Layer (LL) protocol
  • AMP PAL
  • Logical Link Control and Adaptation protocol (L2CAP)
  • AMP Manager Protocol

以上协议都会在蓝牙核心规范中定义。

以下协议会被一些蓝牙应用使用,属于服务层协议。因为使用比较广泛,所以也会在蓝牙核心协议中描述:

  • Service Discovery Protocol (SDP)
  • Attribute Protocol (ATT)

2.0.5 蓝牙核心系统中的服务

图中椭圆的图形表示蓝牙核心系统提供的服务的访问点。这些访问点提供基本原语去控制蓝牙核心系统(原语:可以理解为系统调用)。蓝牙核心系统提供三种服务:

  • 设备控制服务:控制蓝牙设备的行为和模式
  • 通信控制服务:创建、修改、释放连接和通道
  • 数据服务:在通道中传输数据

前两项服务属于控制面(C-plane),后两项服务属于用户面(U-plane)。

在图中,蓝牙控制器的服务接口被定义,使得控制器是一种标准的组件加入到蓝牙系统中。在这种组织方式中,蓝牙控制器管理最低四个层次,蓝牙主机管理L2CAP及以上层次。蓝牙控制器和蓝牙主机之间的标准接口叫做主机控制器接口(Host Controller Interface,HCI)。(但HCI接口是可选的。意思是假如蓝牙系统的用另外一种方式组织,蓝牙主机和蓝牙控制器运行在同一个芯片或硬件上,他们之间就不需要HCI接口)

2.0.6 蓝牙核心系统的一些可选功能

因为蓝牙主机和控制器很可能会分开,主机和控制器之间使用HCI接口进行通信。蓝牙主机和控制器之间都需要buffer存储HCI的命令和数据,而且buffer是有限的。

(184页)基于这种假定,在L2CAP层上需要负担一些资源管理的责任。当L2CAP的PDU(Packet Data Unit)提交给蓝牙控制器发送到对方设备时,L2CAP需要把PDU分段,转变成更多粒度更小、适合存放在控制器buffer的数据包。并且根据通道的质量情况(因为通道可能会被干扰),控制buffer的流量。(因为通道被干扰的时候可能需要重发,这时候数据流变慢,如果主机一直塞数据给控制器,会出现buffer溢出。L2CAP需要根据实际情况,控制数据包提交速度)

蓝牙BR/EDR基带、LE的连接层和AMP的MAC层支持基础的应答/重发请求(ARQ)机制。L2CAP层可以支持一种错误检测和重传的机制(这个机制是可选的,意思是厂商可能提供也能不提供)。这个功能对于纠正一些低概率和不能检测的数据错误非常有用(因为底层的误码大多数是1位,1位误码能被底层传输纠正。2位或多位的错误底层可能检测不出来,即使检测出来也不能纠正。但多位错误概率比较低)。另外一个L2CAP可选的功能是基于窗口流控,这个功能可以管理接收buffer的申请。以上两种功能在特定场景下的服务通信质量(QoS)进行讨论。并非所有的L2CAP功能在LE系统中都可用。

尽管各个厂家生产的蓝牙嵌入系统不会把所有功能层次都整合进去,因此有些假设并不需要。然而蓝牙总体架构和QoS模型在定义的时候会把这些假设考虑进去。

2.0.7 一致性测试

自动化一致性测试是蓝牙核心系统中必备的功能。允许测试器通过控制PHY接口去实现。测试的接口包括:

  • Direct Test Mode (DTM)
  • Generic Test Methodology (GTM)
  • Test Control Interface (TCI)
  • HCI测试命令和HCI测试事件

测试器使用执行测试单元(IUT),通过PHY接口确保从远端设备获得正确的请求应答。测试器通过HCI、DTM、GTM或者TCI接口控制IUT,使得IUT通过PHY接口与远端产生交互。通过这种方法验证一致性。(蓝牙核心规范理解起来有点困难,原理其实比较简单,就是本地设备和远端设备都是由IUT控制,两端的信息IUT都能收集到。IUT枚举各种测试用例,从而观察设备的运行是否正常。)

TCI使用不同的命令集去测试架构中不同的层次和协议。HCI指令集中的子集用作BR/EDR控制器子系统中各层次协议的TCI服务接口。一个独立的服务接口用来测试L2CAP层和协议。它没有在《蓝牙核心规范》中描述,在另一个叫《测试控制接口规范》中描述。L2CAP测试接口仅仅用作一致性测试。

————————————————————————————————————————————

参考

1 BT specification Core 4.2,Bluetooth SIG.

2  https://blog.csdn.net/cocavon/article/details/78726273

————————————————————————————————————————————

作者按:蓝牙从业者,潜心学习BT stack,蓝牙协议奇多无比,概述只是开始,网上资料还比较多,学到后面的各种spec就只剩下英文原版可以参考了,遂把自己的笔记发出来,互相交流,互相交流。

你可能感兴趣的:(躺雨没的学习笔记——蓝牙架构)