本例适用与芯片:QCC304X QCC514X,其它系列原理应该相似
说明:
Earbud芯片的无线OTA(DFU)有两种模式:前端模式和后端模式;
- 前端模式:即耳机可以连听音乐边进行OTA,固件传输和校验过程不会影响耳机的正常使用,只有在上传过去的固件被生效或者写入指定flash位置时,耳机才会发生重启动作;
- 后端模式:即耳机需要先进入DFU模式再进行OTA,据说这种模式出错的概率更低,但要求用户必须先执行进入DFU的操作,并且UI也必须提供这样的按钮定义;该种方式的步骤为:
- 耳机取出充电盒与手机正常连接后,用GaiaClient连接到耳机;
- 通过UI定义让耳机进入DFU模式,然后尽快把耳机放入充电盒(或使之处于充电盒中的状态,即InCase状态),这时从手机端来看音频蓝牙连接会断开,耳机本身也会发生Disconnect事件;不过此时并未真正与GaiaClient断开连接(此时笔者认为应该是BLE和手机保持着链接);
- 放入充电盒后,尽快用GaiaClient上传固件,这后续的步骤就和前端模式下的操作一模一样了。详细步骤参考本文件后半部分。
- 首先获得工程源码
- 安装MDE工具及ADK,笔者安装的版本如下图。 一定要注意,ADK的版本不要安装太新的,因为太新的安装 包里的工具可能不完整,比如版本:ADK_Toolkit.WIN.1.1 Installer_1.1.2.40,里面就没有生成dfu的脚本文件,笔者就中过招。
- 安装bluesuit,笔者安装的版本为BlueSuite.WIN.3.3 Installer_3.3.5.817
- 解锁USB口调试,解锁办法为:
- 创建一个文本文件,假设路径为D:\key.txt,其内容为: 00000000000000000000000000000000
- 用管理员权限打开cmd, 然后切换到bluesuit的目录,执行如下指令,看到Success表示已经解锁成功;
- 用MDE打开一工程,笔者以QCC3040为例; 工程打开后,首先创建密钥,办法为:
- 点击MDE菜单中的ToolsàSetup DFU Security , 然后会出现两个对话框(如下图),一个是tk窗口,另一个为选择密钥文件存放的位置,我们直接点击OK按钮,采用默认位置,因为工程编译时会索引其产生的文件。
自动创建的密钥相关文件有:dfu-private.key, dfu-public.key, private.pem, public.pem, rsa_pss_constants.c;
- 配置好耳机的MAC地址,后重新Rebuild 整个工程(耗时会比较长);
- 工程Rebuild之后,需要Deploy All (Build->Deploy All),把所有相关文件都烧录到左右两侧的芯片中;注意烧录另一侧时,需要修改蓝牙MAC地址最后一个字节,并且此时不需要全部重新编译,只需要Build -->BuildAll 即可,这样会快很多。
- 如果只是需要制作DFU的升级包,可以不用部署;
- 如果需要生成工厂使用的文件,就需要部署左右两侧的耳机,然后能过BlueSuit中的NvsApp或者使用nvscmd来从左右两侧的芯片中把所有固件都Dump出来,这两个Dump出来的xuv固件才可以被用来做为工厂生产的文件,而不是DeployAll后工程目录下的flash_image.xuv文件,注意这两类是不一样的。
- 因为固件中的MAC地址是固定的,所以工厂生产时,烧录完两个耳机后,还需要修改MAC地址;
-
!!!!再次提醒,新的芯片必须烧录Dump出来的xuv文件,而不是Build出来的flash_image.xuv文件;
- 同时用USB口连接耳机到电脑,并确保电脑已经识别出来,可以用MDE来判断或者从设备表示里看,两者判断方法如下图所示:
- 编译完成后,点击菜单 ToolsàBuild DFU File来制作OTA升级包,其间会让你选择一些路径,采用默认路径。
- 然后是选择加密文件,对话框注释中有说明,笔者也没查到哪里显示为6.1或6.0,所以就采用了默认全加密:
- 然后是选择生成OTA升级包的文件,默认是全选的,这样生成的包会比较大,OTA时会占用时间比较长,因为通常情况下只是修改earbud.x2p文件,所以笔者只选了这一个来生成OTA文件,如下图,具体其它几个文件都什么意思,可以查看官方手册;
然后选择不加密:
- 点击Proceed后就会生成ota文件,日志如下,会看到Success及bin文件的路径,该bin文件即为ota长级包;
然后把bin文件复制到手机上,用GAIA Client 来升级(注意不是GAIA Control);
特别注意:升级的时候耳机不能放入充电盒或充电状态,并确保电量充足,且无需进入dfu模式,可以边听歌边升级(按手册讲需要进入dfu模式,实测下来不需要这样).
下面是GAIA Client一步步操作步骤:
- >确定升级包已经在手机上;
- >手机和耳机进入配对并连接,然后打开GAIA Client会看到耳机,若没有可以通过重新打开APP或者下拉刷新;
- >点击该设备,进入下面界面,显示耳机及app的信息;
- >点击下面的Settings按钮,进入设备操作菜单,如下图:
- >点击Software updates按钮进入ota文件选择界面,如下图:
- >点击SELECT UPGRADE FILE按钮来选择刚才的bin升级包,然后进入上传OTA文件界面,如下图:
- >上传完毕后,会进入固件校验界面,如下图,耐心等待,因为持续时间会有点长;
- >校验完成后,会弹出确认窗口,我们直接点击CONFIM即可
- >然后如果你在听音乐,会发现其中一个耳机没声音了,并随后发生了重启,
- >然后会再次出现一个安装升级包的确认窗口,这是因为升级包已经放在了指定位置,需要用户来确认是否生效,此步为最后一次放弃生级的机会,若确定长级点confirm即可,否则点abort来放弃升级;
- 升级完成后,会出现升级完成界面,如下图,至此两个耳机均以升级完毕。
注意:整个升级过程耳机都不能放入充电盒,并且用户可以连听歌边升级。