当前文档版本为 v1.2.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

OTA(无线)固件升级

ZDK 适配了多种 OTA(Over The Air)功能,以应对不同的场景,客户可以根据自己产品选择或者优化合适的 OTA 功能。从代码实现的角度分为 OTA In BootLoader 和 OTA in app,从协议分为2.4G 私用协议 OTA蓝牙 SMP OTA。2.4G 私用协议 OTA 下文记作 PRF OTA,蓝牙 smp ota 记作 BLE OTA,本文会阐述开发流程和指南。

1 OTA In BootLoader

OTA in BootLoader 意味着 OTA 实现的流程基本完全在 BootLoader。相比于升级流程实现在 app 中,此方案的兼容性和稳定性最高,一般不会随着版本升级或者交叉升级出现兼容性的错误。此方法是比较推荐的方法。

BootLoader 相关知识请参考 BootLoader 开发指南,BootLoader 开发指南详细解释了 flash 的划分,image 签名等技术。

1.1 通用开发流程

当我们用 ZephyrAppLauncher-v1.5.0.exe 编译某个工程的时候,会自动链接一个 bootloader image 文件,例如 mcuboot_pan108xxb1.bin,该文件目录位于 modules\hal\panchip\panplat\pan1080\bootloader\images 下。但是 BootLoader image 支持 dfu 可能会和 app 有一定的关系,一般都是支持不全的,例如默认的程序不能能够直接使用 2.4 升级功能。用户如果要支持串口 prf ota 功能请手动编译 BootLoader,并使能 prf ota 功能。

1.1.1 编译流程

打开ZephyrAppLauncher-v1.5.0.exe,选择 boot 工程,详情见下图

BootLoader 编译界面

注意:

board 一定要选择和你的应用一样,这样编译完成后会自动替换 modules\hal\panchip\panplat\pan1080\bootloader\images 下的 boot 文件

1.1.2 开发流程

开发流程主要修改 BootLoader 的源码,前面章节已经说明了为什么需要手动编译来支持特定 OTA 功能,也说明了如何编译的 BootLoader。这一章节主要解释一下在编译之前,如何修改源码来支持 OTA。

1.2 prf OTA

BootLoader 内嵌了基于2.4G私有无线传输协议的OTA,该功能默认是关闭。

注意:开启该功能会导致 BootLoader 到 APP 之间运行时间额外增加30ms左右的延时

1.2.1 打开 prf OTA 功能

在prj.conf 使能x下面的宏

CONFIG_PRF_OTA_ENABLE=y

CONFIG_ENABLE_PANCHIP_PRF=y

1.2.2 一对一升级操作流程

  • 第一步:打开上位机05_TOOLS\量产烧录工具\PAN108x 2.4G OTA Tool\WirelessProgrammer\,连接dongle,如下图:

image

打开上位机

  • 第二步:让 dongle 进入扫描状态,点击扫描芯片的按钮

image

扫描开启

  • 第三步:复位芯片,上位机便可以发现芯片

image

发现设备

  • 第四步:添加文件,点击烧录

image

烧录

1.2.3 其他功能

  • 用户需要选定好芯片

  • 模式可以选择1对1模式或者1对多模式,流程和之前1对1的流程基本一样。

2. OTA in APP

ota in app 意味升级流程是在 app 种实现的,BootLoader 只负责校验数据和搬移数据。在升级新程序之前一定要保证兼容性,防止升级失败,特别是在一些跳版本升级的情况。

2.1 BLE OTA

nRF Connect SDK里面最重要的DFU协议就是SMP——Simple Management Protocol,这是一个开源的协议,zephyr 也很好的支持,同时我们适配了 Peripheral OTA 工程详情参考 BootLoader 开发指南