一. 声明
本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:
第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。
第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等
第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等
第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。
第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)
第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等
第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展
第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。
另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。
------------------------------------------------------------------------------------------------------------------------------------------
CSDN学院链接(进入选择你想要学习的课程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144
蓝牙交流扣扣群:970324688
Github代码:https://github.com/sj15712795029/bluetooth_stack
入手开发板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708
------------------------------------------------------------------------------------------------------------------------------------------
二. 前言
首先在介绍以下内容之前,我们先来介绍下我们的CSDN课程,以下介绍内容都会在 CSDN课程 手把手教你蓝牙协议栈入门(点击我)中第二小节介绍。
三. Wireshark/Frontline/Ellisys工具的使用
1. Wireshark的使用
我们随便打开一个用我们协议栈为例,打开界面如下:
我个人是把Wireshark分为以下几个部分
1)菜单栏位
2)工具栏位
3)视图栏位
4)选中包汇总栏位
5)选中包raw data栏位
我们分别来介绍下以上栏位
1)菜单栏位,菜单栏位没啥好讲的,我主要说下着色规则吧,因为你可能用Wireshark打开可能没有颜色,所以对各个HCI数据包类型区分的不是很清晰
选择视图->着色规则
要勾选对应的协议,然后打开视图->着色分组列表。就可以了
2)工具栏位,没啥好讲的,就是菜单栏位的一些快捷按钮,可以按照自己的喜好加进来
3)视图栏位,视图栏位我们有以下几个要说明的
①过滤功能
可以看到着色规则的地方有规律关键字
比如我们先看下HCI command,那么我们敲下bthci_cmd,会过滤出来hci command
还有很多过滤的命令,具体看着色器关键字
②协议数据包
显示整个流程的封包,可以点击某一个封包会在视图④视图⑤中具体显示内容
4)选中包汇总栏位
5)选中包raw data栏位
2. Frontline的使用
Frontline工具其实有很多型号,就蓝牙而言比如有抓air log sniffer的,有抓HCI log的(需要接线到蓝牙芯片TX,RX,通过夹子接都蓝牙芯片飞出来的线)
我们此部分来讲通过Frontline来打开btsnoop,首先安装完Frontline后会显示以下几个内容
目前我们只是用到Capture File Viewer.把btsnoop文件直接拖到Carture File Viewer就行了,打开效果如图所示:
在看btsnoop的时候一般只会用到图片中①②③
①是显示raw data的,打开如图所示:
一般是配合着②来使用,②视图选中某一个封包后①会跳转到具体的位置。
②是显示整个交互封包的流程的整个封包视图,打开如图所示:
分别包括具体消息的解析视图,协议分层视图以及协议整个封包视图,可以选中某一个命令,最左侧就会出现对应的解析
③实现是整个交互流程流程图,打开如图所示:
这些流程图可以dump出来,可以从协议来区分,也可以让整个流程图出来,至于其他应用菜单,可以去查看下user manual手册。
3. Ellisys工具的使用
那到了Ellisys了,是我最喜欢的工具了·,Ellisys的air log sniffer要二三十万吧·一般不是专业开发蓝牙的估计不会选择使用这个工具,但是即使我们不买这个设备,安装了Ellisys的工具也可以看btsnoop的·下面我就一步一步教你通过Ellisys来打开btsnoop.
1)首先打开APP,这个没什么好说的,Ellisys不能直接把btsnoop拖进来打开
2)选择File->Import,出现以下界面。
3)选择HCI data.commands and events.点击next.会出现以下界面。
4)然后选择BT snoop HCI,通过Browser来打开特定的文件。点击next
5)到了这步就不用管了,直接Finsh就好了·打开效果如图所示
其中下图是协议选择框
把鼠标放上去就会有对应的是什么协议提示出来。比如上图我们选择的是All layers,就是所以协议都会显示。
这个框就是协议交互每包数据的显示
右边的框框就是特定选中数据包协议的解析
另外,Ellisys还有到处audio,流程图等操作,这部分文档讲解起来比较麻烦,建议看我们视频教程吧!