蓝牙组网驱动:中断处理与兼容性调试实战 - 第1节
1.1 蓝牙技术演进:从线缆替代到万物互联
蓝牙技术自 1994 年由爱立信提出以来,已从简单的串口线缆替代方案演变为支撑物联网(IoT)的核心无线通信技术。其演进历程可划分为四个关键阶段,每个阶段都带来了传输速率、功耗、拓扑能力与协议栈架构的深刻变革。
核心演进脉络: 蓝牙 1.x(语音/数据基础) → 蓝牙 2.x + EDR(高速率) → 蓝牙 3.0 + HS(交替 MAC/PHY) → 蓝牙 4.0(经典 + BLE 双模) → 蓝牙 5.x(Mesh 组网、长距离、广播扩展) → 蓝牙 6.0(信道探测、高精度定位)。
1.1.1 关键版本里程碑
| 版本 | 发布年份 | 核心特性 | 速率 / 功耗 | 组网能力 |
|---|---|---|---|---|
| 1.1 / 1.2 | 2002 / 2003 | 基本速率 (BR)、AFH 跳频 | 1 Mbps / 高 | 点对点、微微网 |
| 2.0 + EDR | 2004 | 增强数据速率 (EDR) | 3 Mbps / 中 | 微微网 + 散射网雏形 |
| 3.0 + HS | 2009 | 交替 MAC/PHY (802.11) | 24 Mbps / 中 | 微微网 |
| 4.0 | 2010 | 低功耗蓝牙 (BLE) 引入 | 1 Mbps / 极低 | 广播、点对点 |
| 4.2 | 2014 | LE 安全连接、隐私增强 | 1 Mbps / 极低 | IPv6 支持 |
| 5.0 | 2016 | 2 Mbps PHY、广播扩展、Mesh | 2 Mbps / 极低 | Mesh 网络、广播组 |
| 5.1 / 5.2 | 2019 / 2020 | 方向定位、LE 音频、等时信道 | 2 Mbps / 极低 | 多流音频广播 |
| 6.0 | 2024 | 信道探测、高精度测距 | 2 Mbps / 极低 | 厘米级定位 |
1.2 经典蓝牙与低功耗蓝牙 (BLE) 对比
蓝牙 4.0 规范首次定义了双模架构:经典蓝牙(BR/EDR) 面向持续流式传输场景,低功耗蓝牙(BLE) 面向间歇性小数据量传输。两者在协议栈、物理层、应用场景上存在本质差异。
1.2.1 协议栈架构差异
- 经典蓝牙协议栈: 包含 L2CAP、RFCOMM、SDP、AVDTP、AVRCP 等完整协议层,支持串口仿真、音频流、文件传输。控制器包含 BR/EDR 基带、链路管理器 (LM)、链路控制器 (LC)。
- BLE 协议栈: 精简为 L2CAP、ATT、GATT、SM、GAP 五层核心。控制器包含 LL(链路层)、PHY(物理层)。无 RFCOMM 和 SDP,通过 GATT 实现服务发现。
| 对比维度 | 经典蓝牙 (BR/EDR) | 低功耗蓝牙 (BLE) |
|---|---|---|
| 物理层速率 | 1 Mbps (BR) / 3 Mbps (EDR) | 1 Mbps (LE 1M) / 2 Mbps (LE 2M) |
| 信道数量 | 79 个 (1 MHz 间隔) | 40 个 (2 MHz 间隔) |
| 跳频方式 | 1600 hops/s,79 信道伪随机 | 自适应跳频,37 数据 + 3 广播 |
| 连接建立延迟 | ~100 ms (查询 + 寻呼) | ~3 ms (广播 + 扫描) |
| 峰值功耗 | ~100 mW (Class 2) | ~10 mW (典型) |
| 拓扑支持 | 微微网 (最多 7 个活跃从设备) | 广播、连接、Mesh (无限制) |
| 典型应用 | 音频耳机、文件传输、鼠标键盘 | 传感器、信标、智能家居、医疗 |
驱动开发提示: 在 Linux 内核中,经典蓝牙使用
btusb / hci_uart 驱动,中断处理集中在 HCI 事件线程;BLE 则依赖 hci_uart 的 LL 唤醒中断和 bluetooth 子系统的 LE 事件回调。两者在中断上下文、skb 处理、电源管理上差异显著,是兼容性调试的核心难点。
1.3 蓝牙组网拓扑结构
蓝牙组网能力随版本演进逐步增强,从最简单的星型(微微网),到多跳散射网,再到大规模Mesh 网络。理解这三种拓扑是驱动中断设计和兼容性调试的基础。
1.3.1 星型拓扑(微微网 Piconet)
一个微微网包含 1 个主设备(Master)和最多 7 个活跃从设备(Active Slave),另有最多 255 个休眠从设备(Parked Slave)。主设备控制跳频序列和时隙分配,所有通信必须经过主设备转发。
- 时隙结构: 主设备在偶数时隙发送,从设备在奇数时隙回复。每个时隙 625 μs。
- 中断触发: 主设备接收从设备数据时触发 HCI 事件中断;从设备在接收到主设备轮询包后触发 TX 完成中断。
- 驱动挑战: 多从设备并发时,中断处理需保证时隙同步,避免 HCI 缓冲区溢出。
1.3.2 散射网(Scatternet)
散射网由多个微微网通过桥接设备(Bridge Node)互连而成。桥接设备可以同时属于多个微微网,在不同时隙切换角色(主或从)。散射网扩展了蓝牙的覆盖范围,但引入了复杂的时隙调度和中断同步问题。
- 桥接模式: 桥接设备在微微网 A 中作为从设备,在微微网 B 中作为主设备,通过 TDM 方式分时工作。
- 中断复杂度: 桥接设备需要在不同微微网的时隙边界切换上下文,中断处理程序必须维护多个连接句柄和跳频表。
- 驱动兼容性: 多数商用蓝牙控制器不支持散射网,驱动层需通过 HCI 命令查询控制器能力。
1.3.3 Mesh 网络
蓝牙 Mesh 网络基于 BLE 广播承载,采用管理型泛洪(Managed Flooding)或GATT 承载方式通信。每个节点既是终端也是中继,支持大规模设备组网(理论数万节点)。Mesh 网络不依赖中心控制器,具备自愈能力。
| 特性 | 星型(微微网) | 散射网 | Mesh |
|---|---|---|---|
| 最大节点数 | 7 活跃 + 255 休眠 | 受桥接调度限制 | 理论无上限(实际 ~1000+) |
| 路由方式 | 主设备集中转发 | 桥接设备分时转发 | 泛洪 / 有向转发 |
| 中断模型 | 单连接 HCI 事件 | 多连接上下文切换 | 广播接收 + 中继转发 |
| 驱动复杂度 | 低 | 高(时隙同步) | 中(广播风暴控制) |
| 典型场景 | 耳机、鼠标 | 工业传感器链 | 智能照明、楼宇自动化 |
兼容性调试警示: Mesh 网络依赖 BLE