EDA365电子论坛网

标题: 学习蓝牙技术应该知道的几个要点 [打印本页]

作者: grand    时间: 2021-11-13 13:43
标题: 学习蓝牙技术应该知道的几个要点
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. 记录和分享
在学习过程中收集到的知识,应该尽可能记录下重点内容和出处,以免日后需要用时找不到相关信息。在有阶段性学习成果时,尝试通过网络分享给更多人,可能会收获感谢和赞美,激励自己不断学习,形成良性循环。



作者: kiygb    时间: 2021-11-13 14:09
底层固件不可编程,开发人员需要熟悉软件接口,高通方案的软件接口是比较丰富的
作者: 道法自然    时间: 2021-11-13 14:10
DSP可编程,意味着可以移植客户的自有算法,属于较高级的功能
作者: CLBuu    时间: 2021-11-13 14:10
高通蓝牙方案可以支持的功能有很多,体现在终端产品上是多个功能的集合




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2