打印
[应用相关]

终于开搞蓝牙协议栈

[复制链接]
12219|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Simon21ic|  楼主 | 2015-6-12 02:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Simon21ic 于 2015-6-12 02:54 编辑

之前的wifi协议栈很顺利的推倒了,下一个挨到蓝牙了,纪录一下进度,也顺便简要说明一下代码。
蓝牙协议栈是否开源还没想好,估计应该不会开源,毕竟现在现成的不多。不过蓝牙技术本来就是公开的,我就结合我们的协议栈的代码片段,说明一下蓝牙协议栈内部是如何运行的。
当然,我并没有做过蓝牙的应用,这些东西,也只是我一周时间,看了协议和一些代码,大致了解的。

先说明一下软硬件平台吧:
从未公开的VersaloonPro3硬件,stm32f103zg处理器,通过接口扩展,外接BCM20702 HCI蓝牙模块(不过也可能使用其他HCI的蓝牙模块)。
有过蓝牙经验的人,可能看到不少坑了吧。没错,BCM20702,没有任何官方的支持,没有任何文档,到处都是坑。
不过,比起wifi来说,至少知道这个是HCI的标准,芯片初始化脚本,就直接截取数据获得了。

软件平台无可争议的使用自己的VSF平台,事件驱动构架,协作式多任务内核,基本的IPC机制等等。基本类似一个小型操作系统了,flash占用根据配置300-600字节左右,定时器管理占用200多字节。
面向对象的C语言代码,如果熟悉linux代码,应该更加容易上手。芯片驱动抽象层,使得不管用啥芯片,应用代码基本上是一样的。

小补一下蓝牙,协议栈里的部分
就协议栈而言,蓝牙协议栈的底层是HCI以及各个transport的驱动。HCI是蓝牙定义的主控芯片和蓝牙芯片之间的接口协议,主要定义了4种数据:
1. SCO 面向连接的数据,一般是蓝牙音频使用的
2. ACL 无连接的数据,大部分其他的协议都用这个,高层是L2CAP
3. 命令报文
4. 事件报文
命令报文和事件报文有茫茫多。。。。。。一般一个命令的,对应一个STATUS报文和一个COMPLETE报文。

HCI上面是L2CAP层,L2CAP是逻辑链路管理以及协议适配。数据流上,是高层的SDU(Service Data Unit)和底层的PDU(Protocol Data Unit)之间的处理层,处理包括分段和重组、流控、最关键的逻辑通道管理等。底层的通路就只有ACL一条,L2CAP在这个上面实现了逻辑通道。当然,按照蓝牙协议文档,还有很多内容,不过一开始也没准备支持,就不多说了。

L2CAP上面,我们会做SDP、RFCOMM和HID,SDP是服务发现协议,用于得到蓝牙设备的服务查询的。RFCOMM是模拟多通道的串口的协议。蓝牙的HID基本是山寨USB的HID。
另外,RFCOMM上面,只会跑一个简单的SPP(Serial Port Profile)。

等周末为兼职人员培训好后,就会开始HCI层的开发,这个等到时候在继续。
沙发
yinhaix| | 2015-6-12 10:18 | 只看该作者

使用特权

评论回复
板凳
elforatic| | 2015-6-12 12:27 | 只看该作者
666666

使用特权

评论回复
地板
你好科技| | 2016-5-11 14:33 | 只看该作者
关注中。。。楼主开发怎么样了。

使用特权

评论回复
5
Simon21ic|  楼主 | 2016-5-12 12:49 | 只看该作者
你好科技 发表于 2016-5-11 14:33
关注中。。。楼主开发怎么样了。

早就弄好了,已经实现HID+SPP同时运行,只是后续并没有使用,所以暂时也没怎么维护

使用特权

评论回复
6
未曾走远| | 2016-7-7 11:41 | 只看该作者
期待更多共享

使用特权

评论回复
7
htyoung| | 2019-2-13 20:26 | 只看该作者
Simon21ic 发表于 2016-5-12 12:49
早就弄好了,已经实现HID+SPP同时运行,只是后续并没有使用,所以暂时也没怎么维护 ...

楼主你的蓝牙协议栈实现了5.0吗

使用特权

评论回复
8
zhuotuzi| | 2019-2-13 22:41 | 只看该作者
这个支持到5吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:www.versaloon.com --- under construction

266

主题

2597

帖子

104

粉丝