Bluetooth 技术(一)--- 协议栈设计与演进(Core_v5.2 + 6LoWPAN + Mesh)

前言

蓝牙设备出货量
蓝牙设备最主要的应用领域有四个:

  • 数据传输:从家用电器和健身追踪器到医疗创新和万物互联,蓝牙技术连接着数十亿台日常设备。随着2010年低功耗蓝牙BLE (Bluetooth Low Energy) 协议的推出,让蓝牙设备在物联网领域占据了一席之地。2016年Bluetooth 5 的推出,让蓝牙传输距离扩展4倍、传输速率提高2倍,蓝牙设备在物联网领域的普及进一步加快了。
  • 音频传输:蓝牙技术免去了连接线的烦扰,为音频领域带来了使用体验的变革。虽然BLE 协议在2010年就推出了,但音频需要的传输速率较高,BLE 无法满足需求,只能继续使用2005年推出的EDR(Enhanced Data Rate) 协议。直到2020年低功耗音频(LE Audio,在Bluetooth 5.2中新增)才姗姗来迟,LE Audio 技术将大幅改善真无线音频传输的体验,特别是对最近流行的真无线耳机将有很大的助推作用。
  • 位置服务:在位置服务方面,蓝牙是开发者的首选技术,可助力创建用于地标信息和物品追踪的接近类解决方案,以及用于资产跟踪和导航的定位系统。2019年蓝牙技术联盟推出的Bluetooth 5.1 新增了寻向(Direction Finding)功能,让蓝牙定位精度提高到了厘米级别,满足了市场对更精确定位服务能力的需求。
  • 设备网络:蓝牙本是一种无线个人局域网通讯技术(WPAN),用于主从设备之间的近距离无线通讯,为了满足物联网设备对大规模互联(自组网)和直接访问网络(IP组网)的需求,2017年蓝牙技术联盟推出了Bluetooth mesh networking,可以支持大规模设备互联,首先在家居自动化和商业照明领域被迅速采用,蓝牙mesh已有力证明了其在创建控制、监测及自动化系统方面的适用性,使成百上千台设备能够进行可靠、安全地通信。蓝牙除了支持大规模Mesh 自组网,还支持IP 组网,2014年蓝牙技术联盟发布了IPSP(Internet Protocol Support Profile)规范,用来支持IPv6(借助BLE 6LoWPAN协议层),这样蓝牙设备就可以直接接入Internet 并获得网络服务。

从应用场景可以看到,蓝牙设备的物联网属性越来越强,从下图可以看到蓝牙技术在众多物联网无线技术中的定位越来越清晰明确:
蓝牙技术在物联网领域的定位

一、蓝牙简史

蓝牙技术联盟(SIG: Bluetooth Special Interest Group)由爱立信和IBM 牵头成立于1998年,初始成员共有五个:爱立信、英特尔、诺基亚、东芝和 IBM。

“蓝牙”(Bluetooth)这个名字是斯堪的纳维亚语中 Blåtand / Blåtann(即古挪威语blátǫnn)的一个英语化版本,该词是十世纪的一位国王Harald Bluetooth的绰号,他将纷争不断的丹麦部落统一为一个王国。以此为蓝牙命名的想法最初是Jim Kardach于1997年提出的,Kardach开发了能够允许移动电话与计算机通讯的系统,他的灵感来自于当时正在阅读的一本由Frans G. Bengtsson 撰写的描写北欧海盗和Harald Bluetooth 国王的历史小说The Long Ships,意指蓝牙也将把通讯协议统一为全球标准。
蓝牙标准演化

1.1 Bluetooth BR/EDR/HS

蓝牙的第一个正式标准是2002年发布的Bluetooth 1.1(Bluetooth 1.0 版本问题较多,基本不能用),使用的是BR(Basic Rate)技术,此时蓝牙的理论传输速率为721 Kbps(2005年发布的Bluetooth 1.2 标准的速度),那个年代这个速度可以说很快了(当时PC 上网的Modem 速度才56 Kbps)。但是科技变化太快了,BR技术转眼就过时了,那怎么办呢?

EDR(Enhanced Data Rate)技术应运而生,SIG 在2005年发布的Bluetooth 2.0 支持增强数据速率的EDR 技术,用来加快数据传输速率。EDR 的比特率可以达到3 Mbps,实际最大的数据传输速率为2.1 Mbps,EDR 相比BR 采用了什么新技术来增强数据传输速率呢?

EDR 改进了传输数据的调制方式,BR 技术采用GFSK(Gaussian Frequency-Shift Keying) 高斯频移键控对传输数据进行调制,EDR 技术则使用PSK(Phase-Shift Keying)相移键控来提高调制码率(EDR 采用了两种调制方式 π/4-DQPSK 和 8-DPSK),EDR 通过采用更高效的调制方式可以获得先前3 倍传输速率的提升。随着科技的发展,EDR 技术又落伍了,看看人家Wi-Fi 11g/11a 的传输速率都达到54 Mbps了,EDR 的2.1Mbps 显得太寒酸了,这次蓝牙该如何应对Wi-Fi 的竞争呢?

HS(High Speed) 技术来救场了,SIG 在2009 年发布的Bluetooth 3.0 引入的HS 技术,可以提供高达 24 Mbps 的理论数据传输速度,这么高的速率提升是如何做到的呢?蓝牙组织想到个主意,直接把WIFI 的PHY层和MAC层拿来使用,这就是AMP (Alternate MAC and PHY layer extension) 技术。不过呢,由于蓝牙自身的PHY + MAC层和AMP 技术差异太明显了,这次扩展只能是交替使用(Alternate)的,也就是BR/EDR 和 HS-AMP 不能同时使用(从Wi-Fi 11g 拿来的AMP 有54 Mbps 的传输速率,因为交替使用只能达到24 Mbps),蓝牙链路的协商建立依然使用BR/EDR 技术,高数据速率传输采用AMP 技术(AMP 不能单独使用,只是BR/EDR 的可选项补充),两套技术交替使用就显得不够简洁高效了,因此HS-AMP 技术并没有大规模普及。
BR/EDR/AMP Controller
蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙应用层协议(Bluetooth Application)。蓝牙核心协议关注对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何使用这些机制;蓝牙应用层协议,是在蓝牙核心协议的基础上,根据具体的应用需求,百花齐放,定义出各种各样的策略,如FTP、文件传输、局域网等等。

Bluetooth Core 由Host和Controller 两部分组成,这两部分在不同的蓝牙技术中比如BR/EDR、AMP、LE,承担角色略有不同,但大致的

  • 22
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
摘 要:基于对Linux 下蓝牙协议栈BlueZ 源代码的分析,给出BlueZ的组织结构和特点。分析蓝牙USB 传输驱动机制和数据处理过程, 给出实现蓝牙设备驱动的重要数据结构和流程,并总结Linux 下开发蓝牙USB 设备驱动的一般方法和关键技术。 关键词:Linux 系统;蓝牙协议栈;设备驱动 USB Device Driver for Linux Bluetooth Stack LIANG Jun-xue, YU Bin (Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004) 【Abstract】This paper depicts the structure and characteristics of BlueZ based on analyzing the source code of Linux bluetooth stack BlueZ. It analyzes the implementation of bluetooth USB transport driver scheme and data processing procedure in detail, and gives the key data structure and implementation of bluetooth device driver. It summarizes the approach of developing Linux bluetooth USB device driver and the key technology. 【Key words】Linux system; bluetooth stack; device driver 计 算 机 工 程 Computer Engineering 第 34 卷 第 9 期 Vol.34 No.9 2008 年 5 月 May 2008 ·开发研究与设计技术· 文章编号:1000—3428(2008)09—0273—03 文献标识码:A 中图分类号:TP391 1 概述 蓝牙技术是开放式通信规范,而 Linux 是开放源码的操 作系统。廉价设备与免费软件的结合,促进了蓝牙技术和 Linux 的发展与融合。 Linux最早的蓝牙协议栈是由Axis Communication Inc在 1999 年发布的 OpenBT 协议栈。 随后, IBM 发布了 BlueDrekar 协议栈,但没有公开其源码。Qualcomm Incorporated 在 2001 年发布的 BlueZ 协议栈被接纳为 2.4.6 内核的一部分。此外, Rappore Technology 及 Nokia 的 Affix Bluetooth Stack 都是 Linux 系统下的蓝牙协议栈,应用在不同的设备和领域中。 BlueZ 是 Linux 的官方蓝牙协议栈,也是目前应用最广 泛的协议栈,几乎支持所有已通过认证的蓝牙设备。对于基 于主机的蓝牙应用,目前常见的硬件接口有 UART, USB 和 PC 卡等,USB 作为 PC 的标准外设接口,具有连接方便、兼 容性好和支持高速设备等特点,已广泛应用于蓝牙设备。 目前对 Linux 下 USB 设备驱动的研究已较为广泛而深 入[1-4] ,但对 Linux 下的蓝牙设备驱动还没有专门的研究。本 文在分析 USB 设备驱动和蓝牙协议栈的基础上,总结了 Linux 下开发蓝牙 USB 驱动程序的一般方法,并深入剖析了 其关键技术。 2 Linux 蓝牙协议栈 BlueZ 简介 BlueZ 目前已成为一个开放性的源码工程。它可以很好 地在 Linux 支持的各种体系的硬件平台下运行,包括各种单 处理器平台、多处理器平台及超线程系统。 BlueZ 由多个独立的模块组成,内核空间主要包括设备 驱动层、蓝牙核心及 HCI 层、L2CAP 与 SCO 音频层、 RFCOMM, BNEP, CMTP 与 HIDP 层、通用蓝牙 SDP 库和后 台服务及面向所有层的标准套接字接口;在用户空间提供了 蓝牙配置、测试及协议分析等工具。其组织结构如图 1 所示, BlueZ 没有实现专门的 SDP 层,而是将其实现为运行在后台 的蓝牙服务库例程(图 1 没有描述该后台服务)。 RFOMM 层支 持标准的套接口,并提供了串行仿真 TTY 接口,这使串行端 口应用程序和协议可以不加更改地运行在蓝牙设备上,例如 通过点对点协议 PPP 可实现基于 TCP/IP 协议簇的所有网络 应用。BNEP 层实现了蓝牙的以太网仿真,TCP/IP 可以直接 运行于其上。 USB设备驱动 (hci_usb.o) L2CAP层(l2cap.o) RFCOMM层 (rfcomm.o) BNEP层 (bnep.o) CMTP层 (cmtp.o) 串口设备驱动 (hci_uart.o) 虚拟串口设备驱动 (hci_vhci.o) 音频 socket RFCOMM socket BNEP socket CMTP socket L2CAP socket HCI socket 内核 空间 用户 空间 串口设备 CAPI设备 输入设备 网络设备 HDIP socket 音频设备 AF_BLUETOOTH socket 音频层(sco.o) PPP TCP/IP AF_INET socket BNEP层 (bnep.o) 其他设备驱动 (bluecard_cs.o等) BlueZ工具和实用程序 HDIP层 (hdip.o) BlueZ核心 及HCI层(bluez.o/bluetooth.o) 图 1 BlueZ 组织结构 3 蓝牙 USB 设备驱动 设备驱动程序在 Linux 内核中起着重要作用,它使某个 硬件能响应一个定义良好的内部编程接口。这些接口隐藏了 设备的工作细节,用户通过一组独立于特定驱动程序的标准 调用来操作设备。而将这些调用映射到作用于实际硬件设备 的特有操作上,则是驱动程序的任务。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流云IoT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值