Bluetooth HCI 驱动架构与源码总览
1. 分层
1 | bluetoothd / mgmt / AF_BLUETOOTH sockets |
本目录实现 HCI设备和主机之间的 transport,不实现 L2CAP、RFCOMM、SMP、BNEP等上层协议。
2. HCI driver contract
Transport分配 hci_dev并设置:
- bus;
- open/close/flush;
- send;
- setup/configure;
- shutdown;
- set_bdaddr/set_diag等可选回调;
- quirks和 capabilities。
hci_register_dev()后HCI Core负责命令、事件、连接、mgmt和用户接口。
3. TX
1 | HCI Core skb |
skb packet type区分 command、ACL、SCO、ISO、vendor diag。
4. RX
1 | USB completion/UART parser/SDIO IRQ |
Framing错误、长度错误和USB status更新统计并触发重组/恢复。
5. Firmware
Intel/Broadcom/Realtek/QCA/MediaTek/Marvell helpers在 setup阶段识别芯片、下载 patch/config、设置地址和特性。固件路径及格式是厂商相关的。
6. RK3588
RK3588没有SoC内部 Bluetooth controller,常配 Wi-Fi/BT combo module:
-Bluetooth多走 UART;
-Wi-Fi多走 PCIe/SDIO;
-共享电源/32.768kHz clock;
-BT reset、host-wake、device-wake GPIO;
-RTS pin在休眠时可切GPIO。
厂商板型使用 bluetooth-platdata,并非标准 Broadcom/Realtek UART child binding。
7. 安全边界
Controller firmware、HCI raw socket、VHCI和debug接口均有高权限风险。量产应限制 CAP_NET_ADMIN/CAP_NET_RAW、固件来源和 /dev/vhci访问。
正在加载留言…