学习蓝牙技术应该知道的几个要点
Posted NiceBT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习蓝牙技术应该知道的几个要点相关的知识,希望对你有一定的参考价值。
为了方便大家学习,现与我爱蓝牙网联合推出【QCC300x/CSR867x/QCC30xx/QCC51xx开发板】。
技术交流QQ群号:743434463
开发板会员QQ群号:725398389(凭订单号入群,赠独家学习资料)
——————————正文分割线———————————–
1. 前言
蓝牙技术因其成本低、功耗低、可拓展性强,被公认为应用最广泛的短距无线通信技术。搭载蓝牙技术的产品市场占有率逐年提高,随之产生了巨大的开发人才需求。但由于蓝牙技术的迭代速度较快、与其他技术领域交叉重叠较多、缺乏成熟的培训体系等种种原因,使得企业难以找到合适的人才,从而推高企业的用人成本,从长远的角度看,并不利于行业的健康发展。
作者从2015年开始自学蓝牙技术,没有积累到很多成功的经验,犯过的错和走过的弯路倒是可以说出不少,在此总结出几个要点,期望大家早日学有所成。
2. 选择适合的平台切入
很多新接触蓝牙技术的朋友,对方案的难度和自身技术储备了解不够。比如有遇到一直做硬件开发的朋友,想快速深入到5124平台的软件开发,不知从何下手;再或者有对安卓或Linux环境的开源协议栈很熟悉的朋友,发现8670的中间层代码不开源,就觉得高通的方案开发起来容易出问题。
在此给大家提供一个高通蓝牙平台软件开发难易度的简单梳理:
芯片型号 | 技能需求 | 开发难度 | 软件可编程 |
---|---|---|---|
CSR863x | 会使用一般电脑软件 | 低 | 不可编程 |
CSR867x | C语言/汇编语言 | 高 | 底层固件不可编程,应用可编程,DSP可编程 |
QCC300x | C语言 | 中 | 底层固件不可编程,应用可编程,DSP可编程 |
QCC30xx | C语言 | 中高 | 底层固件部分可编程,应用可编程,DSP可部分编程 |
QCC512x | C语言/汇编语言 | 高 | 底层固件部分可编程,应用可编程,DSP可编程 |
- 底层固件不可编程,开发人员需要熟悉软件接口,高通方案的软件接口是比较丰富的;底层固件部分可编程,指的是QCC30xx和51xx系列将一部分软件接口的源码开放出来,降低开发者理解和运用的难度
- 应用层有源码,软件框架是完整的,可以增删一些功能
- DSP可编程,意味着可以移植客户的自有算法,属于较高级的功能,一般ODM厂商不会涉及到。QCC30xx的DSP是部分可编程,意思是可以调用预置的算法模块并重新设计音频链路,但不能新建算法模块
- 对于不可编程的部分,绝大多数情况下是可以稳定工作的,也不排除有个别问题需要修复,此时可以通过打patch(补丁)的方式来解决此问题,当然这需要原厂的支持
- 软件开放程度越高,芯片通用性越强,价格越高;软件开放程度越低,芯片专用性越强,价格越低
按照方案开发的难易度,推荐的学习路线如下:
- 从300x开始上手,熟悉基础的sink模式蓝牙耳机功能
- 再学习8675,熟悉source蓝牙发射器模式和传统tws耳机模式
- 接着学习30xx,熟悉earbuds蓝牙豆模式,并能够用kymera自定义音频链路
- 最后学习512x,熟悉kymera仿真C语言算法的方法,能够自行开发算法模块并集成到音频链路
3. 大量阅读文档
学习蓝牙开发的过程中需要阅读大量的文档,才能在大脑中形成足够数量的知识点,再通过阅读代码和实际调试将知识点形成知识网络,产生解决实际问题的能力。
蓝牙技术类的文档主要由如下几部分组成:
- 官方技术规格文档,如“bluetooth core spec 5.0”/"GATT profile"等,在蓝牙官网下载,权威性和指导性是最强的,阅读难度也是最大的。不建议直接硬啃,可作为词典在阅读代码时查询,加深对协议中很多抽象概念的理解。
- 芯片平台技术资料,如高通ADK中的众多“user guide”等,用高通的开发者账号下载,入门引导、实操示范为主,对开发产品的具体功能是有很强的指导意义的,必读且要精读。很多读者容易在繁多的文档中迷失方向,建议阅读顺序是总体方案概述->硬件规格书类->软件系统类->示例讲解类。
- 公开网络资料,如csdn博客、专业蓝牙技术论坛(52bluetooth)等,各自有用户权限,知识点讲解、问题解决方案分享为主,阅读难度不大,但需要有较多的背景知识和实际经验才有帮助。
4. 先基础再延申
高通蓝牙方案可以支持的功能有很多,体现在终端产品上是多个功能的集合,学习时容易找不到合适的切入点。
蓝牙平台的一些功能(如打电话、听音乐、BLE传输数据)在同类型的产品中总会出现,然后是基于一种或多种功能延申出的增强功能(如语音助手)。建议按照功能的依赖关系安排学习步骤:
- 基础功能
- 接听电话 HFP/HSP
- 听音乐 A2DP
- 虚拟串口通讯 SPP/RFCOMM
- 呼出电话 AGHFP
- 音频发射 A2DP
- 显示电池电量 BLE/HFP
- 增强功能
- 语音助手 HFP/A2DP+SCO
- OTA升级固件 SPP/RFCOMM/GATT
- 安卓app控制 SPP/GATT
- ios app控制 GATT/iAP2
5. 记录和分享
在学习过程中收集到的知识,应该尽可能记录下重点内容和出处,以免日后需要用时找不到相关信息。在有阶段性学习成果时,尝试通过网络分享给更多人,可能会收获感谢和赞美,激励自己不断学习,形成良性循环。
以上是关于学习蓝牙技术应该知道的几个要点的主要内容,如果未能解决你的问题,请参考以下文章