为了方便大家学习,现与我爱蓝牙网联合推出【QCC300x/CSR867x/QCC30xx/QCC51xx开发板】。

⭐⭐⭐⭐⭐【本例程对应源码和固件已加入会员群资料库】⭐⭐⭐⭐⭐
开发板会员QQ群号:725398389(凭订单号入群,赠独家学习资料)
技术交流QQ群号:743434463

——————————正文分割线———————————–

1. 引言

今年Q1刚发布的QCC3040是高通的QCC514x/QCC304x系列中的主力型号,其主打的mirror tws功能较上一代relay tws相比有如下优点:

  • 手机上只会显示一个耳机设备,而不是两个耳机设备
  • 耳机在切换主从时更自然流畅,主从耳机耗电更均衡

虽然上述优点早已在苹果的airpods上体现,但高通只花了1年多的时间就开发出了完整的解决方案,并解决了专利问题,实在是令人佩服。相信高通的mirrow tws方案可以炸开苹果的tws耳机技术壁垒,使非苹果系的耳机方案向前迈进一大步。

本周刚拿到我爱蓝牙网的QCC3040开发板,我已迫不及待地开始部署官方的earbuds例程。参考官方文档《ADK 20.1 Overview》部署的过程中,遇到了很多问题,好在有技术交流群和我爱蓝牙网论坛的帮助,使我快速排除了各种问题,顺利跑通了例程并适配到开发板。

为了让大家少走一些不必要的弯路,我将部署流程、调试流程、故障解决方案分享出来,大家可以尝试着做一遍,尽早体验到mirror tws的独特魅力。

2. 软件环境

  1. PC: win10
  2. MDE: (C:\weiyun\ 思 度 科 技 \QCC30xx_QCC51xx 开 发 板 资 料 \3. 开 发 环 境\qualcomm_mde.win.2.4_installer_2.4.0.158.zip)
  3. ADK Tool: (C:\weiyun\ 思 度 科 技 \QCC30xx_QCC51xx 开 发 板 资 料 \4. 官 方ADK\ADK20.1\adk_toolkit.win.1.0_installer_1.0.1.19.zip)
  4. Project: (C:\weiyun\ 思 度 科 技 \QCC30xx_QCC51xx 开 发 板 资 料 \4. 官 方ADK\ADK20.1\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud.rar)

3. 硬件环境

  1. Debugger Adapter: TRBI200 或 USB
  2. Platform: 我爱蓝牙网 QCC30XX/51XX 开发板 * 2 + QCC3040模块 * 2
  3. Chip: QCC3040

4. 准备步骤

  1. 开发板连接好 TRB 和 USB 供电线,选择 USB 供电
  2. 安装好 TRB 或 USB 驱动
    a) 参考 C:\weiyun\思度科技\QCC30xx_QCC51xx 开发板资料\10.开发板教程\3.USB 驱动安装
    b) 参 考 C:\weiyun\ 思 度 科 技 \QCC30xx_QCC51xx 开 发 板 资 料 \6.debug 工 具\usbtrb\80-cc094-1_ab_transaction_bridge_and_usb_debug_interface_user_guide.pdf)
  3. SYS_CTRL 开关拨到导通位置(SYS_CTRL 灯亮)
  4. Project 解压后路径为 C:\qtil\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud

5. 部署流程

5.1. 打开官方例程

  1. 打开 mde2.4,选择 open project
  2. 选择 earbud.x2w
  3. 选择 ADK tool 1.0.1.19 x64

5.2. 修改工程以适配开发板

  1. 修改工程属性,屏蔽电池温度检测

  2. 修改 ui_prompts.c,使能开机提示音


  3. 修改 kymera_config.h,使能外部 PA 控制脚 PIO3,开机可听到 power on 提示音

5.3. 编译 earbud 工程

第一次编译需要较长时间,请耐心等待

5.4. 烧录固件到 primary 耳机

  1. 选择调试器
  2. Deploy 固件,等待完成

5.5. 生成 secondary 耳机的固件

  1. 修改蓝牙地址以区分 primary 和 secondary 设备

  2. build dev_cfg 工程
  3. build earbud 工程,等待完成

5.6. 烧录固件到 secondary 耳机

同步骤 5.4。

5.7. 测试固件

耳机插入 AUX OUT 接口,按开发板复位键,可听到 power on 提示音。

6. 调试流程

6.1. 修复 live_log故障

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xbb in position 0: ordinal not in range(128)

  1. 修 改 C:\qtil\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud\adk\tools\packages\tabs\pydbg_tab.py
# Python 2 and 3
from __future__ import print_function
import os
import sys
from xml.etree import ElementTree
import argparse
import glob
from workspace_parse.workspace import Workspace# 插入下述代码
import sys
reload(sys)
sys.setdefaultencoding('gbk')
  1. 修改 C:\qtil\ADK_Toolkit_1.0.1.8_x64\apps\fw\tools\pydbg.py
import os
import sys
import sys
reload(sys)
sys.setdefaultencoding('gbk')

6.2. 修复 acat 故障

python: can’t open file ‘C:/qtil/qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud/adk/bin/qcc514x_qcc304x/audio/tools/acat/ACAT.py’:
[Errno 2] No such file or directory ), 修 改 C:\qtil\qcc514x-qcc304x-src-1-
0_qtil_standard_oem_earbud\adk\tools\extensions\acat_tab\ext.xml,修改完成后,关闭 qmde 再打开。

6.3. 打开 win10 cmd 的 ANSI 配色功能

ANSI 转义字符显示为乱码[1m [35m] ,从 cmd.exe 输入(也可以在 PowerShell 中使用):reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1

6.4. 创建 pydbg 调试接口

  1. 在工程路径下创建 pydbg 脚本,用于打开 log 窗口和输入 apptest 命令窗口

    这里假设 primary 耳机用 USB,secondary 耳机用 TRB,可自行修改
:: Change variables for your system
set ELFDIR=C:\qtil\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud\earbud\workspace\QCC3040-
AA_DEV-BRD-R2-AA\depend_debug_qcc514x_qcc304x
set TOOLS=C:\qtil\ADK_Toolkit_1.0.1.8_x64\apps\fw\tools
set PYTHONDIR=C:\qtil\ADK_Toolkit_1.0.1.8_x64\tools\python27
set DEVICE1=102
set DEVICE2=180210
start cmd.exe "/k %PYTHONDIR%\python %TOOLS%\pydbg.py -d usb:%DEVICE1%,trb:scar:%DEVICE2% -f
apps1:%ELFDIR%\earbud.elf"
start cmd.exe "/k %PYTHONDIR%\python %TOOLS%\pydbg.py -d usb:%DEVICE1%,trb:scar:%DEVICE2% -f
apps1:%ELFDIR%\earbud.elf"
  1. 运行脚本,打开两个 cmd 窗口
  2. Cmd 窗口 1,输入 system.apps1.live_log()后回车,可看到左右耳机的 log,A 是primary 耳机,B 是 secondary 耳机
  3. Cmd 窗口 2,输入 pydbg 命令,使左右耳机完成配对,并开启与手机的配对模式

    i. 【左耳离开耳机盒】apps1A.fw.call.appTestPhyStateOutOfCaseEvent(),primary耳机开始搜索 secondary 耳机
    ii. 【 右 耳 离 开 耳 机 盒 】 apps1B.fw.call.appTestPhyStateOutOfCaseEvent() ,secondary 耳机进入 tws 配对状态,primary 耳机搜索到后,建立 tws 配对
    iii. 【测试左耳 tws role 是否为主】apps1A.fw.call.appTestIsPrimary(),返回 true 说明 A 是 primary 角色
    iv. 【耳机进入手机可配对模式】apps1B.fw.call.appTestPairHandset(),听到提示音 pairing,这里 apps1A 也可以
    v. 手机可搜索到 LE-3040,配对成功后听到提示音 connected,可播放音乐、打电话

7. 总结

新的ADK20.1的进步很明显,从双耳log混合显示功能到pydbg命令行操作功能等种种迹象可以看到,高通方案有在努力降低开发难度,对提升方案的普及度很有帮助。

虽然mirrow tws的例程已经部署成功了,但对mirror tws的实现原理和技术细节相关的知识还比较匮乏,需要专门研究,有成果后会再给大家分享。

QCC3040学习笔记:部署mirror tws earbuds例程相关推荐

  1. TMS320F280049C 学习笔记11 控制率加速器 CLA 例程

    文章目录 前言 参考链接 一些常用指令 例程1 CLA ADC Sampling and Filtering 例程2 CLA ADC Sampling and Filtering with Buffe ...

  2. k8s学习笔记- 部署prometheus

    1.Prometheus概述 Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包.从2012年开始,许多公司和组织开始使用Prometheus. 该项目的开发人员和用户社 ...

  3. 华为云CCE学习笔记-部署harbor(helm模板)

    一.创建CCE集群 登录华为云进入CCE控制台,创建CCE集群 集群配置自定义,由于要拉取第三方镜像要有弹性ip 使用ingress对外暴露访问,安装nginx-ingress插件 等待安装成功 创建 ...

  4. TMS320F280049C 学习笔记31 控制率加速器 CLA 学习随笔

    文章目录 前言 文献阅读记录 整数比较时的注意点 参考文献 前言 去年在入门DSP的时候曾对控制率加速器(Control Law Accelerator, CLA)做过初步的学习[1][2],但后来的 ...

  5. gstreamer-1.0学习笔记

    gstreamer-1.0安装 apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-pl ...

  6. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)

    长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...

  7. K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程

    K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...

  8. kubernetes(K8S)学习笔记P6:K8s集群|java项目部署

    kubernetes(K8S)学习笔记P6:K8s集群|java项目部署 8.集群资源监控 8.1概述 8.2搭建集群监控平台系统 8.2.1部署prometheus 8.2.3部署Grafana 8 ...

  9. OGG学习笔记04-OGG复制部署快速参考

    OGG学习笔记04-OGG复制部署快速参考 源端:Oracle 10.2.0.5 RAC + ASM 节点1 Public IP地址:192.168.1.27 目标端:Oracle 10.2.0.5 ...

最新文章

  1. openssh无法登录:server responded algorithm negotiation failed”
  2. A Hard Problem
  3. 瘦子的肠道菌群和胖子的区别_瘦子和病态肥胖患者肠道菌群组成和潜在功能的显著差异...
  4. linux如何脚本监控tps,通过shell脚本监控日志切换频率
  5. 2003引脚功能电压_《线性稳压器系列》1:从线性稳压器的原理,功能及类型说起......
  6. 北航数值分析大作业_嫦娥5号在月球取土,有清华人的贡献吗?哪些学校贡献比较大?...
  7. mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解
  8. 一分钟了解阿里云产品:企业级分布式应用服务EDAS五大热点技术问题分析
  9. 向量外积_几何(立体几何,解析几何)中向量叉乘与行列式的运用
  10. ArcGIS利用DEM提取河流水系(附练习数据下载)
  11. linux 磁盘格式化xfs,大磁盘分区格式化XFS文件系统
  12. Java DAO、Service、web理解之DAO层
  13. TypeError: Object of type xxx is not JSON serializable错误解决
  14. 惊恐!监控拍到神秘人形机器人凌晨三点出逃
  15. Android 放大镜效果实现原理
  16. 《毒液2》上线,豆瓣评分6.1-附繁体中字预告片
  17. Lifeline功能介绍03——课堂信息的查询
  18. 数组按照元素个数由多到少排序
  19. 【赠书】腾讯广告算法大赛冠军、Kaggle Grandmaster倾力打造,涵盖Kaggle、阿里天池等赛题...
  20. NTC热敏电阻设计高精度温度计的方案1

热门文章

  1. 亚马逊云科技:云计算提速人工智能辅助药物发现(AIDD),药物研发全面步入“AI时代”
  2. 双卡双待手机DDS切换功能介绍
  3. 2021 考完研的一年体会,宝贵经验(成功上岸)
  4. 区块链技术--公证人机制
  5. python3编程基础:操作excel(一)
  6. 计算机最彻底的杀毒方法,手把手教你Win10创意者彻底关闭windows defender杀毒软件方法...
  7. 触摸屏是什么意思,触摸屏种类及特点有哪些
  8. 关于家庭中只装一个热水器,要求满足的条件是节约用水的方案
  9. 简单的淘宝爬虫以及快递查询接口
  10. 【机器学习笔记】Regularization : Ridge Regression(岭回归)