测试说明一下沁恒微蓝牙的 BLE OTA 流程 ...... 矜辰所致 ...增加 bin 文件OTA说明 2026/7/20前言在之前博主已经测试过 CH58x 移植 IAP 当时因为应用需求要使用 USB IAP 方式 。 实际上无线升级的方式应用更加广泛基本上是蓝牙产品的必备方式。所以本文我们就来测试说明一下 CH58x 无线 OTA 的升级方式。相关文章CH58x 普通例程移植 IAP 示例USB_IAP沁恒 RISC-V 蓝牙芯片 Flash 分区管理及操作系列博文目录【导航】沁恒微 RISC-V 蓝牙 入门教程目录 【快速跳转】.我是矜辰所致全网同名尽量用心写好每一系列文章不浮夸不将就认真对待学知识的我们矜辰所致金石为开目录前言一、 WCH BLE OTA 基础介绍1.1 相关资料1.2 方式说明二、 流程测试2.1 带库升级2.2 不带库升级三、其他说明3.1 不是目标设备3.2 关于 OTA 实现方式3.3 Bin 文件 OTA 异常结语一、 WCH BLE OTA 基础介绍1.1 相关资料在沁恒微官方芯片 EVT 包中 有一份《WCH蓝牙空中升级BLE OTA》在文档中介绍了三种芯片的固件升级方式其中有两种是无线方式这个大家可以自行下载查看本文也会将必要的部分专门说明。在文档最后介绍了需要用到的 手机端的 APP 工具在沁恒微官方搜索关键字比如 OTA 可以搜索到上面提到的手机端的 APP 下载好解压出来会有一个手机 APP 安卓包 和一份说明文档《 安卓OTA升级工具使用说明 》其中会有手机APP OTA 升级工具的使用步骤说明目前文档中并没有涵盖 CH584/CH585 但是流程和文档上是一致的。1.2 方式说明在上面提到的文档中已经对 BLE OTA 的方式有详细的说明这里我通过图片形式说明一下在上图中我标明了 内存占用情况所有的这些 JumpIAP 、IAP、OTA、APP 代码占用的都是 Codeflash 这是必须要知道的这样才能在自己写应用的时候知道如何分配控制 APP 的大小。在博主以前的博文《 沁恒 RISC-V 蓝牙芯片 Flash 分区管理及操作 》中有关于 Flash 分布的说明同时博主也标出了两种方式所对应的代码和烧录需要的文件 带 OTA 的程序时多个 Hex 同时烧录的Hex 文件是带存放地址的Bin 文件时不带存放地址的需要手动设定地址多个 Hex 文件烧录只要存放地址不同而且大小不会覆盖其他的 Hex 文件是可以同时烧录的二、 流程测试基本的说明介绍完毕我们按照官方给的步骤做个示例测试 。2.1 带库升级先来测试一下带库升级手机需要用到的 APP我们需要烧录 3 个 Hex 文件如下图 烧录完毕通过串口查看 Debug 信息如下我们同时再准备一个需要升级的程序我这里就简单的在原始的 OTA 例程上加一个打印表示是新的 APP把新的 这个 Hex 文件准备好 接下来手机安装好 APPAPP 权限要给然后把需要升级的 Hex 文件保存至手机对应位置这个步骤在上面提到的官方《 安卓OTA升级工具使用说明 》中写的很详细按照官方手册流程继续正常操作即可打开 APP — 扫描附件蓝牙设备 — 选择我们需要 OTA 的蓝牙设备 — GETINFO — IMAGEA — 选择 Hex 文件 — 最下方 START— 手动选择芯片类型需要的话.说明带库升级是直接使用 OTA 升级工具扫描连接如果是不带库升级时需要先通过蓝牙调试助手发送指令让设备进入 OTA 模式再来使用 OTA 升级工具扫描连接选好 Hex点击软件最下面的 START 会弹出选择芯片界面选好芯片 OTA 流程自动就会开始此时通过串口可以看到对应的 DEBUG 输入如下直到更新完成自动运行程序OK ! 成功操作还是很简单的。2.2 不带库升级下面来测试一下不带库升级手机需要用到的 APP我们需要烧录 4 个 Hex 文件如下图 烧录完毕通过串口查看 Debug 信息如下和 Peripheral 从机例程一样打印出扫描自己的设备的 MAC 地址然后就是把需要升级的 APP hex 文件放置于手机对应文件夹目录下这个和上面一样可以通过微信或者手机直连PC 新的 APP 也是简单的修改了一下区分原始的这里我使用了手机直接连接 PC 操作把我们需要更新的Hex 放置手机内部存储设备\Android\data\cn.wch.bleota\files\OTAFile里面的 imageA 或者 imageB 文件夹下面这里建议大家都放在 A 里面因为个人测试的时候好像不能选择只能放在imageA根据硬件当前信息选取用来升级的imageA 或者imageB 文件软件会自动区分说明一下准备完毕这里与带库升级不同的地方来了我们需要通过蓝牙调试助手连接上需要升级的设备发送指令才会进入 OTA 模式这个在我们的 APP 示例中代码体现如下:所以我们时通过蓝牙调试助手连接上设备给对应特征值发送任意数据流程如下图接下来我们再打开 OTA 升级工具扫描蓝牙选择目标设备接下来的流程就和上面一样了点击 GETINFO 按钮选择 IMAGEA文件最后点击软件最下面的 START 选择一下目标芯片 就会开始 OTA 流程 等到完成程序会自动运行 OK ! 完成操作依然是很简单的只是对于测试示例而言不带库升级方式需要先发送一个指令进入可能有些小伙伴没注意到这时候软件会提示不是目标设备。三、其他说明本小节补充一些使用过程中可能遇到的问题说明。3.1 不是目标设备这个问题上面已经说清楚了不带库升级方式是需要先通过蓝牙调试助手 连接上设备给 CHAR3 特征值发送任意数据让他进入 OTA 模式才能使用 OTA 升级工具 进行连接此时的广播名称应该为 OTAOTA_OTAOTA_xxxx 。3.2 关于 OTA 实现方式本小节主要为了简单说明一下为什么多个 Hex 可以烧录然后程序为什么能跳转的。其实在上一篇 IAP 文章也有体现两个文件Link.ld 和 Start_CH585.s 针对 585 而言其他芯片也是这两个文件。大家可以自行查看一下示例代码中连接文件都是写好自己的起始地址和长度占用大小它们是分别放置于 Flash 的不同地址所以不会有冲突。跳转就是直接指向目的地址去运行程序同时为了支持跳转需要保证启动文件下面配置为 0x1888 不支持跳转的配置为 0x88另外官方示例中的这几个 JumpIAP 工程中什么事情都没干是直接在启动文件中直接跳到 IAP 工程的地址执行的有起到一定的保护作用防止代码被盗3.3 Bin 文件 OTA 异常在使用 bin 文件升级的时候不能使用 MounRiver Studio 生成的 bin 文件需要使用 Hex 转成的 bin 文件。在沁恒官网有一个 HexBinStudio 工具搜索下载即可然后选择对于的 hex 文件选择输出文件夹点击生成 bin 文件即可生成的 bin 文件按照上面的 OTA 流程放置手机对应的文件夹下面\Android\data\cn.wch.bleota\files\OTAFile升级的时候选择 bin 文件正常开始操作后 APP 会弹出偏移地址填写我们填写的地址就是 APP LD 文件设定的地址通过上面的HexBinStudio 工具也可以直观的看出偏移地址为 0x1000如下图结语本文主要按照沁恒官方的给的 BLE OTA 资料测试了一下空中升级的流程按照官方的资料整体走下来都没有遇到什么问题体验感还不错。除了不带库升级方式大家需要注意一下其他也没什么好总结的按照手册流程正常操作就行了。好了本文就到这里。谢谢大家