QCC3040学习笔记:部署mirror tws earbuds例程
Posted NiceBT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QCC3040学习笔记:部署mirror tws earbuds例程相关的知识,希望对你有一定的参考价值。
为了方便大家学习,现与我爱蓝牙网联合推出【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. 软件环境
- PC: win10
- MDE: (C:\\weiyun\\ 思 度 科 技 \\QCC30xx_QCC51xx 开 发 板 资 料 \\3. 开 发 环 境\\qualcomm_mde.win.2.4_installer_2.4.0.158.zip)
- ADK Tool: (C:\\weiyun\\ 思 度 科 技 \\QCC30xx_QCC51xx 开 发 板 资 料 \\4. 官 方ADK\\ADK20.1\\adk_toolkit.win.1.0_installer_1.0.1.19.zip)
- Project: (C:\\weiyun\\ 思 度 科 技 \\QCC30xx_QCC51xx 开 发 板 资 料 \\4. 官 方ADK\\ADK20.1\\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud.rar)
3. 硬件环境
- Debugger Adapter: TRBI200 或 USB
- Platform: 我爱蓝牙网 QCC30XX/51XX 开发板 * 2 + QCC3040模块 * 2
- Chip: QCC3040
4. 准备步骤
- 开发板连接好 TRB 和 USB 供电线,选择 USB 供电
- 安装好 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) - SYS_CTRL 开关拨到导通位置(SYS_CTRL 灯亮)
- Project 解压后路径为 C:\\qtil\\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud
5. 部署流程
5.1. 打开官方例程
- 打开 mde2.4,选择 open project
- 选择 earbud.x2w
- 选择 ADK tool 1.0.1.19 x64
5.2. 修改工程以适配开发板
- 修改工程属性,屏蔽电池温度检测
- 修改 ui_prompts.c,使能开机提示音
- 修改 kymera_config.h,使能外部 PA 控制脚 PIO3,开机可听到 power on 提示音
5.3. 编译 earbud 工程
第一次编译需要较长时间,请耐心等待
5.4. 烧录固件到 primary 耳机
- 选择调试器
- Deploy 固件,等待完成
5.5. 生成 secondary 耳机的固件
- 修改蓝牙地址以区分 primary 和 secondary 设备
- build dev_cfg 工程
- 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)
- 修 改 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')
- 修改 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 调试接口
- 在工程路径下创建 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"
- 运行脚本,打开两个 cmd 窗口
- Cmd 窗口 1,输入 system.apps1.live_log()后回车,可看到左右耳机的 log,A 是primary 耳机,B 是 secondary 耳机
- 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例程的主要内容,如果未能解决你的问题,请参考以下文章
QCC3040学习笔记:部署mirror tws earbuds例程