H4、H5、BCSP 与低功耗 UART 协议
1. H4
最简单framing:
1 | 1-byte packet type + HCI header + payload |
无校验、重传或序号,依赖可靠UART和通常的RTS/CTS。h4_recv_buf()按packet descriptor组帧。
2. H5 / Three-wire
H5提供:
-SLIP式定界/转义;
-seq/ack;
-可靠包重传;
-可选CRC;
-link establishment;
-无需硬件flow control的能力。
状态机和retrans timer比H4复杂。错误波特率、peer reset或丢字节会触发重新同步。
3. BCSP
CSR BlueCore协议,同样有reliable/unreliable channels、ack、CRC和SLIP framing,主要服务旧硬件。
4. HCILL
TI Low Level协议在H4数据外加入sleep/wakeup控制,协调主机和controller UART clock/power。
5. QCA IBS
Qualcomm In-Band Sleep使用wake/sleep字节和timer管理TX/RX休眠,避免常开UART。hci_qca.c还管理regulator、clock、speed和firmware。
6. Broadcom
Broadcom仍以H4传包,但serdev driver管理shutdown GPIO、device wake/host wake、clock和runtime PM。
7. Protocol选择
选择依据controller,不是主机SoC:
- H4:广泛;
- H5:Realtek及部分3-wire芯片;
- LL:TI;
- QCA:Qualcomm;
- BCM:Broadcom;
- ATH3K:Atheros;
- MRVL:Marvell。
8. 本defconfig
显式启用 BT_HCIUART_ATH3K,它select H4。没有显式启用H5/BCM/QCA等,除非其它Kconfig选择或实际构建配置追加,否则对应对象不会进入 hci_uart.o。
9. 性能
UART吞吐受波特率、flow control、调度延迟和small packet开销限制。ACL吞吐高时必须使用稳定RTS/CTS;低功耗握手参数过激会增加首包时延。
正在加载留言…