蓝牙技术序和目录

来源:互联网 发布:个人职业规划 知乎 编辑:程序博客网 时间:2024/05/23 21:34

当年在清华大学研究院做过一个项目,需要在展讯的功能手机平台上实现蓝牙远程SIM卡(SAP profile)的功能。这个功能比较冷门,只有车载设备才会有这样的需求,而展讯平台目标是手机市场,所以默认情况下不会提供这样的功能。

跟领导提供过三个方案,一是找到提供此功能的供应商,二是让展讯合作开发,三是移植开源协议栈。市面上的蓝牙供应商找了一圈,包括知名的CSR、RDA、Nodic。其中CSR实现的协议栈是最全的,他们有SAP协议,但都是在其他平台上实现的。如果要在展讯平台上实现SAP profile,需要做移植。而CSR不会对研究院的项目产生兴趣,也不会投入他们的研发资源。第一方案走不通,而第二方案也同时在走。领导和清华紫光的总经理是老同学,而清华紫光当年刚好收购展讯完毕,因此尝试一下是否有合作机会。展讯有仔细评估过我们的项目,但是蓝牙协议这块还是跟CSR、RDA合作。前两条路都受阻, 就只剩下自己移植这条路。

研究院优势在于资金和时间都比较充足,可以静下心来做技术研究。所以趁此机会,把蓝牙技术都研究了一遍。一开始不知道从何入手,不会有人给你指导。搜编全网,当时开发蓝牙协议的人没几个, 资料也寥寥无几。后来找到了清华大学出版社出版的一本蓝牙核心原理的书,下载了蓝牙官方的蓝牙核心协议栈pdf,还有找到了蓝牙开源的协议bluez和btstack。感觉有点小米加步枪就开干了。

了解蓝牙原理还是需要的,因为蓝牙里面很多概念,蓝牙的架构要搞清楚。否则一开始就看bluez或btstack的代码,只会加速让你放弃。所以我的学习路线是,边看原理概念,边找一些bluez上层应用例子去看,边写一些简单应用。这样一步步,形成了一个由浅入深的过程。但bluez对我来说只是学习用的。因为bluez比较重,如果移植到一个展讯平台上的Threadx这种RTOS上面,会有很多改动,所以选用轻量级btstack移植。btstack本身支持嵌入式系统,移植过程中,只修改HCI驱动部分和一些系统调用。移植过程比较顺利,没有遇到很棘手的问题。只是btstack太轻,当时SDP协议都没有,要自己实现;ACTIVE、SNIFF模式没有,所以休眠时功耗有问题,这部分也需要自己实现。还有很多诸如此类的问题。小路虽然难行,但能够通往最终目标。后来我们自己在btstack之上完善了很多协议,也解决了btstack上一些bug。

还记得当时把协议栈调通时候的心情。不是做技术的,鬼知道我们在傻乐什么?

目录

  • 蓝牙架构
    • 一 概述
      • 1.0. 总体概述
      • 1.1. BR/EDR概述
      • 1.2. LE概述
      • 1.3. AMP概述
      • 1.4. 术语命名
    • 二 核心架构
      • 2.1 核心系统架构
原创粉丝点击