【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. 軟件環境

  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的實現原理和技術細節相關的知識還比較匱乏,需要專門研究,有成果後會再給大家分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章