BT
介绍BT的移植和使用方法。
模块介绍
K1平台上主要通过外部BT模块来实现BT功能,支持UART,USB等接口的蓝牙模块。
功能介绍
BT框架图可以分为以下几个层次:
源码结构介绍
BT相关的源码可以分为以下几个部分:
- 蓝牙协议栈,以bluez协议栈为例,代码分为两部分,一部分在内核空间,一部分在用户空间。
- BT HCI驱动,主要实现HCI层。
- 平台相关部分,主要实现模组供电以及使能等相关接口,供rfkill驱动调用。
- 接口驱动,主要实现BT数据传输接口功能,如UART,USB等接口。
BLUEZ协议栈源码在以下目录:
drivers/net/bluetooth
|-- af_bluetooth.c
|-- af_bluetooth.o
|-- bnep #Bluetooth网络封装协议
│ |-- bnep.h
│ |-- core.c
│ |-- Kconfig
│ |-- Makefile
│ |-- netdev.c
│ |-- sock.c
|-- hci_codec.c
|-- hci_codec.h
|-- hci_conn.c
|-- hci_core.c #Hci core实现
|-- hci_debugfs.c
|-- hci_debugfs.h
|-- hci_event.c
|-- hci_request.c
|-- hci_request.h
|-- hci_sock.c
|-- hci_sync.c
|-- hci_sysfs.c
|-- hidp #Bluetooth hid实现
│ |-- core.c
│ |-- hidp.h
│ |-- Kconfig
│ |-- Makefile
│ |-- sock.c
|-- iso.c
|-- Kconfig
|-- l2cap_core.c #l2cap core实现
|-- l2cap_sock.c
|-- lib.c
|-- Makefile
|-- mgmt.c #mgmt蓝牙管理实现
|-- mgmt_config.c
|-- mgmt_config.h
|-- mgmt_util.c
|-- mgmt_util.h
|-- rfcomm #rfcomm协议
│ |-- core.c
│ |-- Kconfig
│ |-- Makefile
│ |-- sock.c
│ |-- tty.c
|-- sco.c
|-- selftest.c
|-- selftest.h
|-- smp.c
|-- smp.h
HCI驱动的源码在以下目录:
drivers/bluetooth
|-- btbcm.c #broadcom厂商实现
|-- btrtl.c #realtek厂商实现
|-- btusb.c #hci uart实现
|-- hci_h4.c #hci h4实现
|-- hci_h5.c #hci h5实现
|-- hci_ldisc.c #蓝牙hci的线路规程
平台相关的源码:
drivers/soc/spacemit/spacemit-rf
|-- spacemit-pwrseq.c #WIFI和蓝牙等公共部分实现
|-- spacemit-wlan.c #WIFI供电,gpio以及时钟相关接口实现
|-- spacemit-bt.c #BT供电,gpio以及时钟相关接口实现
接口相关的源码参考各个接口驱动说明文档。