“Bt ble”的版本间的差异

来自百问网嵌入式Linux wiki
 
(未显示同一用户的29个中间版本)
第1行: 第1行:
 
=第01节_生活中的实例_医院的结构=
 
=第01节_生活中的实例_医院的结构=
{{Welcome}}
 
  
参考文章:<br>
 
蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍 http://www.wowotech.net/bluetooth/ble_stack_overview.html
 
  
 +
参考文章: [http://www.wowotech.net/bluetooth/ble_stack_overview.html  蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍 ]
  
<code>大堂:</code> 按指定流程确定科室、挂号 (发现、连接) <br>
+
 
 +
{|
 +
|-
 +
| [[File:bt_ble_chapter1_001.jpg | 1000px ]]|| <code>大堂:</code> 按指定流程确定科室、挂号 (发现、连接) <br>
 
<code>医务室:</code> 组合检查结果, 给出诊疗意见 (提供服务)<br>
 
<code>医务室:</code> 组合检查结果, 给出诊疗意见 (提供服务)<br>
 
<code>检验室:</code> 提供检查结果, (提供属性)<br>
 
<code>检验室:</code> 提供检查结果, (提供属性)<br>
第13行: 第14行:
 
<code>快递员:</code> 送货、收货 (传输)<br>
 
<code>快递员:</code> 送货、收货 (传输)<br>
  
小城缺乏医生,那里的人生病全靠硬扛。
+
<code>小城缺乏医生,那里的人生病全靠硬扛。
张三年少时立志学医,为全城百姓看病。
+
张三年少时立志学医,为全城百姓看病。</code>
  
 
张三天生聪明,他想学会所有医术:眼科、牙科、外科、内科、...,<br>
 
张三天生聪明,他想学会所有医术:眼科、牙科、外科、内科、...,<br>
第29行: 第30行:
 
忘了告诉你们,张三家财万贯。<br>
 
忘了告诉你们,张三家财万贯。<br>
 
他很快回乡建了一个医院,名为“张三远程诊疗医院”:<br>
 
他很快回乡建了一个医院,名为“张三远程诊疗医院”:<br>
 +
|}
 +
 +
 +
 +
 +
  
1. 在大堂里,  (按程序确定科室、挂号)
+
1. 在大堂里,  (按程序确定科室、挂号)<br>
  贴着各个科室介绍,好像这小医院有很多科室似的。
+
{{Space}}贴着各个科室介绍,好像这小医院有很多科室似的。<br>
  人们来挂号时,可以选择某某科(它就对应医学院的某某楼)。
+
{{Space}}人们来挂号时,可以选择某某科(它就对应医学院的某某楼)。<br>
  
2. 在医务室里,
+
2. 在医务室里,<br>
  (医生知道怎么跟教授们联系、知道教授们提供什么帮助、综合查看各项检查单)
+
{{Space}}(医生知道怎么跟教授们联系、知道教授们提供什么帮助、综合查看各项检查单)<br>
  只有张三一人。
+
{{Space}}只有张三一人。<br>
  病人进来一看,顿觉上当,大声嚷嚷:
+
{{Space}}病人进来一看,顿觉上当,大声嚷嚷:<br>
  全医院只有你一个医生,你骗鬼呢?
+
{{Space}}全医院只有你一个医生,你骗鬼呢?<br>
 
    
 
    
  张三也不生气,微微一笑:
+
{{Space}}张三也不生气,微微一笑:<br>
  哦,你要看眼科,我稍懂。
+
{{Space}}哦,你要看眼科,我稍懂。<br>
  你这是白内障,  
+
{{Space}}你这是白内障, <br>
  我知道医学院眼科中心的白内障科王教授是专家,
+
{{Space}}我知道医学院眼科中心的白内障科王教授是专家,<br>
  请他远程指导,你就放心吧。
+
{{Space}}请他远程指导,你就放心吧。<br>
  来,睁开眼让我看看。
+
{{Space}}来,睁开眼让我看看。<br>
  嗯,挺严重,
+
{{Space}}嗯,挺严重,<br>
  抽血验一下吧,
+
{{Space}}抽血验一下吧,<br>
  哦,还要滴泪验一下。
+
{{Space}}哦,还要滴泪验一下。<br>
  
3. 检验室:(执行检验操作,得到各项结果)
+
3. 检验室:(执行检验操作,得到各项结果)<br>
  也只有一人,设备也有限。   
+
{{Space}}也只有一人,设备也有限。  <br>
  她唠叨道:
+
{{Space}}她唠叨道:<br>
  张医生送来一瓶血和一瓶泪,
+
{{Space}}张医生送来一瓶血和一瓶泪,<br>
  我们这只有验血的机器啊,
+
{{Space}}我们这只有验血的机器啊,<br>
  眼泪得送到医学院眼科中心的检验科去,
+
{{Space}}眼泪得送到医学院眼科中心的检验科去,<br>
  我再问他们,把结果告诉张医生,
+
{{Space}}我再问他们,把结果告诉张医生,<br>
  收发室的师傅,来一下。
+
{{Space}}收发室的师傅,来一下。<br>
  
  一般来说,
+
{{Space}}一般来说,<br>
  对方也就是告诉我什么血红蛋白、抗体、抗原的,
+
{{Space}}对方也就是告诉我什么血红蛋白、抗体、抗原的,<br>
  每一项分开我都知道,
+
{{Space}}每一项分开我都知道,<br>
  合起来是什么意思,我就不明白了,
+
{{Space}}合起来是什么意思,我就不明白了,<br>
  得像张医生那样能综合起来、才能看病。
+
{{Space}}得像张医生那样能综合起来、才能看病。<br>
  得了,
+
{{Space}}得了,<br>
  我得把每一项上报给张医生。
+
{{Space}}我得把每一项上报给张医生。<br>
 
 
4. 收发室:(收发室的人是医院员工,可以在医院内部运送;让快递员在医院内部走动就不合适)
 
  上头经常让我收东西、寄东西,
 
  有时时候是血、有时候是泪,
 
  我哪懂这些,
 
  只管放入冷藏盒,交给快递部就可以了。
 
 
 
  别以为我只是收发这些要化验的样品,
 
 
    
 
    
  上面的领导们,要跟别的医院联络感情时,
+
4. 收发室:(收发室的人是医院员工,可以在医院内部运送;让快递员在医院内部走动就不合适)<br>
  比如寄寄明信片、土特产时,
+
{{Space}}上头经常让我收东西、寄东西,<br>
  也都要靠我先跟对方收发室沟通,
+
{{Space}}有时时候是血、有时候是泪,<br>
  可别把这些明信片、土特产拿去化验了。
+
{{Space}}我哪懂这些,<br>
 +
{{Space}}只管放入冷藏盒,交给快递部就可以了。<br>
  
 +
{{Space}}别以为我只是收发这些要化验的样品,<br>
 +
{{Space}}上面的领导们,要跟别的医院联络感情时,<br>
 +
{{Space}}比如寄寄明信片、土特产时,<br>
 +
{{Space}}也都要靠我先跟对方收发室沟通,<br>
 +
{{Space}}可别把这些明信片、土特产拿去化验了。<br>
 +
<syntaxhighlight lang="c" >
 
           (医院内部)
 
           (医院内部)
 
--------------------------------------------------
 
--------------------------------------------------
 
           (医院外部)
 
           (医院外部)
 +
</syntaxhighlight>
 +
5. 快递公司在医院的驻点:(贴快递单然后交给快递员,或 收快递后交给收发室)<br>
 +
{{Space}}我们送的东西啊,<br>
 +
{{Space}}可能是给医学院的眼科楼,也可能是给牙科楼,<br>
 +
{{Space}}我们得在东西上贴地址,到时对方快递部到车上自取。<br>
 +
 +
{{Space}}比如说收发室说这瓶眼泪是给王教授的,<br>
 +
{{Space}}那我知道他在眼科楼,就贴"眼科楼"。<br>
 +
 +
{{Space}}有时候我们得知道对方上不上班啊,<br>
 +
{{Space}}所以还得放个询问的牌子在车子上,<br>
 +
{{Space}}如果上班的话他们看到牌子就会告诉我。<br>
  
5. 快递公司在医院的驻点:(贴快递单然后交给快递员,或 收快递后交给收发室)
+
{{Space}}太多数时候他们会主动告诉我,<br>
  我们送的东西啊,
+
{{Space}}他们上班时也会放个牌子在车上,<br>
  可能是给医学院的眼科楼,也可能是给牙科楼,
+
{{Space}}我看到后就知道了。<br>
  我们得在东西上贴地址,到时对方快递部到车上自取。
 
 
 
  比如说收发室说这瓶眼泪是给王教授的,
 
  那我知道他在眼科楼,就贴"眼科楼"。
 
 
 
  有时候我们得知道对方上不上班啊,
 
  所以还得放个询问的牌子在车子上,
 
  如果上班的话他们看到牌子就会告诉我。
 
 
 
  太多数时候他们会主动告诉我,
 
  他们上班时也会放个牌子在车上,
 
  我看到后就知道了。
 
 
    
 
    
  
6. 快递员:(发货、收货)
+
6. 快递员:(发货、收货)<br>
  我只是开车的,
+
{{Space}}我只是开车的,<br>
  天天在兜圈子,每出一次车就是兜一次圈子。
+
{{Space}}天天在兜圈子,每出一次车就是兜一次圈子。<br>
  兜圈子的意思,就是这些医院、医学楼,
+
{{Space}}兜圈子的意思,就是这些医院、医学楼,<br>
  每出一次车都要路过。
+
{{Space}}每出一次车都要路过。<br>
 
+
 
  他们的快递员,
+
{{Space}}他们的快递员,<br>
  就在门口等着我的车,
+
{{Space}}就在门口等着我的车,<br>
  从车上拿他们的货就可以了。
+
{{Space}}从车上拿他们的货就可以了。<br>
 
+
 
  货是什么?我不知道,也不在乎。
+
{{Space}}货是什么?我不知道,也不在乎。<br>
  货给谁?我不知道,也不在乎,他们自取。
+
{{Space}}货给谁?我不知道,也不在乎,他们自取。<br>
  
  送达最重要!
+
{{Space}}送达最重要!<br>
  道路千万条,
+
{{Space}}道路千万条,<br>
  这条不通换一条。
+
{{Space}}这条不通换一条。<br>
  
 
=第02节_BLE协议各层的形象化理解=
 
=第02节_BLE协议各层的形象化理解=
参考文章:
+
参考文章:[https://blog.csdn.net/caodaxia/article/details/78567996 nordicN51822 ble_app_hrs 属性服务器示例句柄分布]<br>
nordicN51822 ble_app_hrs 属性服务器 示例 句柄分布
+
如果图片文字看不清楚,请点击两次查看原图<br>
https://blog.csdn.net/caodaxia/article/details/78567996
+
[[File:bt_ble_chapter2_001.jpg  | 1000px]]
  
 
<syntaxhighlight lang="c" >
 
<syntaxhighlight lang="c" >
第134行: 第140行:
 
PHY:  Physical Layer, 物理层                        (快递员: 运输, 此路不通就另换一条            <==> 无线收发器,传输, 跳频)
 
PHY:  Physical Layer, 物理层                        (快递员: 运输, 此路不通就另换一条            <==> 无线收发器,传输, 跳频)
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
=第03节_BLE协议各层数据格式概述=
 
=第03节_BLE协议各层数据格式概述=
 +
 
公司内部怎么派件?
 
公司内部怎么派件?
1. 同部门的,需要知道具体派送给谁:具体到人
+
*1.同部门的,需要知道具体派送给谁:具体到人
2. 上级部门的,只需要知道给哪一个部门即可,他们部门内部再分发:具体到部门
+
*2.上级部门的,只需要知道给哪一个部门即可,他们部门内部再分发:具体到部门
 +
 
 
所以,需要:
 
所以,需要:
1. 分辨一个快件,是本部门的、还是其他部门的
+
*1.分辨一个快件,是本部门的、还是其他部门的
2. 如果是本部门的,需要分辨这个快件是谁的
+
*2.如果是本部门的,需要分辨这个快件是谁的
3. 如果是其他部门的,直接扔给该部门,不需要再分辨这个快件是谁的
+
*3.如果是其他部门的,直接扔给该部门,不需要再分辨这个快件是谁的
  
怎么送快件?
+
怎么送快件?<br>
 +
[[File:bt_ble_chapter3_001.jpg|1000px]]
 +
<br>
 +
[[File:bt_ble_chapter2_003.png|1000px]]
 
   
 
   
 +
BLE各层协议格式概述:<br>
 +
[[File:bt_ble_chapter3_002.jpg|1000px]]
  
+
=第04节_BLE协议抓包演示=
 
 
 
 
BLE各层协议格式概述:
 
  
 +
实际开发中,抓包涉及的硬件框图如下:
  
 +
[[File:bt_ble_chapter4_001.jpg|1000px]]
  
=第04节_BLE协议抓包演示=
 
 
实际开发中,抓包涉及的硬件框图如下:
 
 
  
学习时,抓包涉及的硬件框图如下:
+
学习时,抓包涉及的硬件框图如下:<br>
 +
[[File:bt_ble_chapter4_002.jpg|1000px]]
 
*a.使用手机来模拟蓝牙外设(Peripheral),可以很方便地新建外设的服务。
 
*a.使用手机来模拟蓝牙外设(Peripheral),可以很方便地新建外设的服务。
 
*b.使用USB蓝牙模块(CSR8510A10)作用蓝牙中央设备(Central),在PC上运行Bluetooth LE Explorer,可以很方便地去连接、设置蓝牙外设。
 
*b.使用USB蓝牙模块(CSR8510A10)作用蓝牙中央设备(Central),在PC上运行Bluetooth LE Explorer,可以很方便地去连接、设置蓝牙外设。
第164行: 第174行:
 
   
 
   
 
抓包过程涉及三个软件:
 
抓包过程涉及三个软件:
a.Windows PC:Bluetooth LE Exploer 用于控制蓝牙中央设备,发起连接外设、操作外设。从Microsoft Store安装即可。使用方法见视频。
+
#<code>WindowsPC:Bluetooth LE Exploer</code> 用于控制蓝牙中央设备,发起连接外设、操作外设。从Microsoft Store安装即可。使用方法见视频。
b.Windows PC:Wireshark 抓包软件,通过Sniffer硬件来抓包。安装、使用方法参考文档《BLE_sniffer抓包工具使用手册》
+
#<code>WindowsPC:Wireshark</code> 抓包软件,通过Sniffer硬件来抓包。安装、使用方法参考文档《BLE_sniffer抓包工具使用手册》
c.Android手机:com-ble-peripheral-sim.apk BLE外设模拟软件,可以很方便地新建BLE服务。
+
#<code>Android手机:com-ble-peripheral-sim.apk</code> BLE外设模拟软件,可以很方便地新建BLE服务。
  
  
第175行: 第185行:
  
 
=第05节_BLE协议物理层(PHY)=
 
=第05节_BLE协议物理层(PHY)=
 +
[[File:bt_ble_chapter5_001.jpg|1000px]]<br>
 
fc = 2402 + 2k, k=0,1,2,…,39, fc是无线信道k的中心频率
 
fc = 2402 + 2k, k=0,1,2,…,39, fc是无线信道k的中心频率
 
   
 
   
 
参考文章: 低功耗蓝牙开发权威指南,Robin Heydon
 
参考文章: 低功耗蓝牙开发权威指南,Robin Heydon

2019年4月10日 (三) 10:52的最新版本

第01节_生活中的实例_医院的结构

参考文章: 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍


Bt ble chapter1 001.jpg 大堂: 按指定流程确定科室、挂号 (发现、连接)

医务室: 组合检查结果, 给出诊疗意见 (提供服务)
检验室: 提供检查结果, (提供属性)
收发室: 接收或派发物品, 这些物品可能是工作相关, 也可能是私人物品 (各种通道 channel)
快递公司驻点: 贴快递单 (访问地址)
快递员: 送货、收货 (传输)

小城缺乏医生,那里的人生病全靠硬扛。 张三年少时立志学医,为全城百姓看病。

张三天生聪明,他想学会所有医术:眼科、牙科、外科、内科、...,
眼科又分为近视与矫正科、小儿科、白内障科、……
牙科又分为种植科、正畸科、……
每一个医科里,都可以细分出更多的专业。
这是个疯狂的计划,医学院的所有教授们都知道他终将失败。

张三每天、每时、每分都在学习,终于精疲力尽。
他失去了希望:我真的不能为所有人、看所有病吗?
教授们决定帮这个有着赤子之心的年轻人,
告诉他:你只需要掌握基本的医学常识,我们远程帮你!

忘了告诉你们,张三家财万贯。
他很快回乡建了一个医院,名为“张三远程诊疗医院”:




1. 在大堂里, (按程序确定科室、挂号)
    贴着各个科室介绍,好像这小医院有很多科室似的。
    人们来挂号时,可以选择某某科(它就对应医学院的某某楼)。

2. 在医务室里,
    (医生知道怎么跟教授们联系、知道教授们提供什么帮助、综合查看各项检查单)
    只有张三一人。
    病人进来一看,顿觉上当,大声嚷嚷:
    全医院只有你一个医生,你骗鬼呢?

    张三也不生气,微微一笑:
    哦,你要看眼科,我稍懂。
    你这是白内障,
    我知道医学院眼科中心的白内障科王教授是专家,
    请他远程指导,你就放心吧。
    来,睁开眼让我看看。
    嗯,挺严重,
    抽血验一下吧,
    哦,还要滴泪验一下。

3. 检验室:(执行检验操作,得到各项结果)
    也只有一人,设备也有限。
    她唠叨道:
    张医生送来一瓶血和一瓶泪,
    我们这只有验血的机器啊,
    眼泪得送到医学院眼科中心的检验科去,
    我再问他们,把结果告诉张医生,
    收发室的师傅,来一下。

    一般来说,
    对方也就是告诉我什么血红蛋白、抗体、抗原的,
    每一项分开我都知道,
    合起来是什么意思,我就不明白了,
    得像张医生那样能综合起来、才能看病。
    得了,
    我得把每一项上报给张医生。

4. 收发室:(收发室的人是医院员工,可以在医院内部运送;让快递员在医院内部走动就不合适)
    上头经常让我收东西、寄东西,
    有时时候是血、有时候是泪,
    我哪懂这些,
    只管放入冷藏盒,交给快递部就可以了。

    别以为我只是收发这些要化验的样品,
    上面的领导们,要跟别的医院联络感情时,
    比如寄寄明信片、土特产时,
    也都要靠我先跟对方收发室沟通,
    可别把这些明信片、土特产拿去化验了。

           (医院内部)
--------------------------------------------------
           (医院外部)

5. 快递公司在医院的驻点:(贴快递单然后交给快递员,或 收快递后交给收发室)
    我们送的东西啊,
    可能是给医学院的眼科楼,也可能是给牙科楼,
    我们得在东西上贴地址,到时对方快递部到车上自取。

    比如说收发室说这瓶眼泪是给王教授的,
    那我知道他在眼科楼,就贴"眼科楼"。

    有时候我们得知道对方上不上班啊,
    所以还得放个询问的牌子在车子上,
    如果上班的话他们看到牌子就会告诉我。

    太多数时候他们会主动告诉我,
    他们上班时也会放个牌子在车上,
    我看到后就知道了。


6. 快递员:(发货、收货)
    我只是开车的,
    天天在兜圈子,每出一次车就是兜一次圈子。
    兜圈子的意思,就是这些医院、医学楼,
    每出一次车都要路过。

    他们的快递员,
    就在门口等着我的车,
    从车上拿他们的货就可以了。

    货是什么?我不知道,也不在乎。
    货给谁?我不知道,也不在乎,他们自取。

    送达最重要!
    道路千万条,
    这条不通换一条。

第02节_BLE协议各层的形象化理解

参考文章:nordicN51822 ble_app_hrs 属性服务器示例句柄分布
如果图片文字看不清楚,请点击两次查看原图
Bt ble chapter2 001.jpg

Host(纯软件的概念)                                   (跟医院的功能简单类比) 
GAP:   Generic Access Profile, 通用访问规范          (大堂: 按指定流程确定科室、挂号               <==> 发现设备、连接设备)
GATT:  Generic Attribute Profile, 通用属性规范        (医务室: 为病人提供服务                       <==> 也是提供服务, 有哪些服务, 服务由哪些属性组成)
ATT:   Attribute Protocol, 属性协议                  (检验室: 提供检查结果, 给医生综合后由医生判断 <==> 提供属性及访问方法, GATT把这些属性组合起来构成服务)
L2CAP: Logical Link Control And Adaptation Protocol,    (收发室: 收发包裹(包裹来自各科室)             <==> 标记/识别数据来自哪个channel, 转发)
--------------------------------------------HCI(Host Controller Interface, 主机/控制器接口)------------------------------------------------------------       
Controller(一般来说是一个芯片):
LL:    Link Layer, 链路层                            (快递驻点: 贴快递单                           <==> 确定是广播包还是数据包(发给谁),加上Access Address)
PHY:   Physical Layer, 物理层                        (快递员: 运输, 此路不通就另换一条             <==> 无线收发器,传输, 跳频)

第03节_BLE协议各层数据格式概述

公司内部怎么派件?

  • 1.同部门的,需要知道具体派送给谁:具体到人
  • 2.上级部门的,只需要知道给哪一个部门即可,他们部门内部再分发:具体到部门

所以,需要:

  • 1.分辨一个快件,是本部门的、还是其他部门的
  • 2.如果是本部门的,需要分辨这个快件是谁的
  • 3.如果是其他部门的,直接扔给该部门,不需要再分辨这个快件是谁的

怎么送快件?
Bt ble chapter3 001.jpg
Bt ble chapter2 003.png

BLE各层协议格式概述:
Bt ble chapter3 002.jpg

第04节_BLE协议抓包演示

实际开发中,抓包涉及的硬件框图如下:

Bt ble chapter4 001.jpg


学习时,抓包涉及的硬件框图如下:
Bt ble chapter4 002.jpg

  • a.使用手机来模拟蓝牙外设(Peripheral),可以很方便地新建外设的服务。
  • b.使用USB蓝牙模块(CSR8510A10)作用蓝牙中央设备(Central),在PC上运行Bluetooth LE Explorer,可以很方便地去连接、设置蓝牙外设。
  • c.使用Sniffer来抓包,它是一个硬件。

抓包过程涉及三个软件:

  1. WindowsPC:Bluetooth LE Exploer 用于控制蓝牙中央设备,发起连接外设、操作外设。从Microsoft Store安装即可。使用方法见视频。
  2. WindowsPC:Wireshark 抓包软件,通过Sniffer硬件来抓包。安装、使用方法参考文档《BLE_sniffer抓包工具使用手册》
  3. Android手机:com-ble-peripheral-sim.apk BLE外设模拟软件,可以很方便地新建BLE服务。


使用方法见视频。 File:BLE_sniffer抓包工具使用手册.docx Bluetooth LE Exploer需要通过Microsoft Store在线安装; 其他软件及《BLE_sniffer抓包工具使用手册》,在百问网的百度网盘中,文件名为:BLE抓包工具配套的文档及软件.rar。

第05节_BLE协议物理层(PHY)

Bt ble chapter5 001.jpg
fc = 2402 + 2k, k=0,1,2,…,39, fc是无线信道k的中心频率

参考文章: 低功耗蓝牙开发权威指南,Robin Heydon