简要分析蓝牙驱动

蓝牙驱动我们只要做三个步骤:
    1.启动串口驱动
    2.蓝牙初始化
    3.通过hciattach建立串口和蓝牙协议层的数据连接通道
为什么呢?
    1.从整体上来说,我们的蓝牙是一个模块,顾名思义,该有的都有了,剩下的是 与蓝牙芯片相关的。另外模块供应商应该都会提供他们自己的代码。
    2.通讯条件。首先必须和CPU通讯,这需要个接口,这个接口可以是uart,usb,即直接焊接,或通过UART转USB。还需要和modem通讯,这也需要一个接口。编译内核时make menuconfig 选择即可。
    3.初始化蓝牙模块,上电,设置寄存器PSKEY。通过bccmd来完成。
其中,Bccmd是用来和CSR的芯片进行BCCMD(Bluecore command protocol)通讯的一个工具。BCCMD并非蓝牙协议栈的标准,而是CSR芯片的专属协议。
调用格式为:bccmd [-t <transport>] [-d <device>] <command> [<args>]
其中transport类型包括HCI USB BCSP H4等等。
    4.原始数据获取与传递
通过hciattach建立串口和蓝牙协议层的数据连接通道,这直接与蓝牙芯片相关,供应商都会做自己的处理。

数据流:
uart-->hci_uart-->bcsp-->hci-->l2cap-->rfcomm

按照数据流简要分析
1.uart
注册串口-->配置串口-->用户open()调用-->寄存器准备好-->设置中断函数接收-->缓存并判断-->传递到tty层-->数据交给ldisc

2.hci_uart
注册ldisc-->通过ldisc交给了bcsp(bcsp_init的时候)

3.bcsp
接收数据(bcsp_recv)-->数据包处理(包头,crc,类型,应答)-->去掉bcsp包头

4.hci
接收bcsp数据(通过tasklet处理)-->根据包类型的处理函数
hci_event_packet :事件处理,包括扫描,信号,授权等
hci_acldata_packet : 无连接事件,l2cap 基于这个函数
hci_scodata_packet : 面向连接事件

5.l2cap
接收数据-->数据处理-->去掉l2cap包头

6.rfcomm
触发rfcomm事件-->接收数据-->数据处理好了



3. 蓝牙驱动介绍............................................................................................................................................... 4 3.1 串口驱动介绍........................................................................................................................................ 5 3.2 初始化.................................................................................................................................................... 5 3.2.1 模块上电........................................................................................................................................ 5 3.2.2 PSKEY的设置................................................................................................................................. 6 3.3 HCIATTACH的工作原理.......................................................................................................................... 7 3.3.1 Hci_uarbcsp层的加入................................................................................................................. 9 3.3.2 hci层的加入.................................................................................................................................. 10 3.3.3 hci_attach的内核处理.................................................................................................................. 11 4. 数据在驱动的传递流程.............................................................................................................................. 13 4.1 UART层的数据接收.............................................................................................................................. 13 4.2 HCI_UART的数据接收.......................................................................................................................... 14 4.3 BCSP层的处理...................................................................................................................................... 15 4.4 HCI层及以上的处理............................................................................................................................. 15 4.5 数据流程的总结.................................................................................................................................. 17 5. 扫描过程的分析......................................................................................................................................... 18 5.1 用户使用例子...................................................................................................................................... 18 5.2 用HCITOOL扫描时的逻辑..................................................................................................................... 18 5.2.1 上层逻辑...................................................................................................................................... 18 5.2.2 内核层逻辑.................................................................................................................................. 19 5.3 通过DBUS触发的逻辑.......................................................................................................................... 21 5.3.1 上层逻辑之adapter dbus方法的建立........................................................................................... 21 5.3.2 上层扫描方法的调用................................................................................................................... 22 5.3.3 Dbus触发的扫描对应于内核层的处理........................................................................................ 25 5.3.4 上层的扫描数据收集................................................................................................................... 26 5.3.5 Hci_send_frame的讨论................................................................................................................. 28 6. A2DP的使用过程........................................................................................................................................ 28 6.1 如何使用.............................................................................................................................................. 28 6.2 服务的激活.......................................................................................................................................... 29 6.3 设备的创建.......................................................................................................................................... 30 6.3.1............................................................................................................................................................. 33 6.3.2............................................................................................................................................................. 33 6.3.3............................................................................................................................................................. 33 6.3.4............................................................................................................................................................. 33 6.4 设备的连接.......................................................................................................................................... 33
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值