STM32WB55 OTA应用程序升级说明
**经过一个星期的研究与学习,终于把STM32WB55的程序加上了OTA应用。以后程序的更新迭代真的方便太多了。直接使用无线蓝牙就能更新产品的代码。简直不要太爽。具体的开发流程以及注意事项如下文介绍。希望帮助大家排除一些坑。communication-V “FouyangH”
1. OTA应用介绍
1.1 FLASH分布(1MB)
Flash中,0x08000000 - 0x08007000中存放是OTA应用的程序。
0x08007000 - 0x08080000中是划分用户的程序和Free area。(512KB)
0x08080000 - 0x080CB000是未规划的FLASH部分。
0x080CB000 - 0x080FFFFF中是FUS和蓝牙协议固件。
因此需要往固件中下载一个0x08000000 - 0x08007000下载一个OTA应用程序(下载一次即可)。OTA应用的HEX文件已经放到程序应用文件同级的文件夹下了。
图1 OTA应用程序
图2 FLASH分布
图3 FLASH分布
1.2 OTA的更新应用程序过程
首先,接收新固件的扇区的FLASH被擦除。为了能够对FLASH进行重新编程,该程序是强制性的。建议对包含需要保持不变的应用程序数据的区域进行写保护。
第二步是下载新应用程序(OTA必须要下载二进制BIN文件,不能下载HEX文件)。固件传输完成后,OTA应用程序跳转到新的应用程序。
下图展示了用户应用程序更新请求被发送,OTA应用程序执行的操作序列。
图4 OTA应用程序更新过程
1.3 OTA的更新FUS和蓝牙协议固件的过程
图5 OTA的更新FUS和蓝牙协议固件的过程
1.4 与固件更新相关的BLE特征(GATT)
开发者需要扩展一个服务所使用的特征的数量,甚至是标准化的特征。为了从用户调用OTA应用程序,将“重启特征”(图中的黄框)添加到应用程序支持的服务中。当客户端通过BLE协议写入该特征时,用户应用跳转到OTA应用。
重启请求的特征说明,Reboot请求有三个不同的字节需要客户端通知:
- 启动模式,用户应用程序重启或跳转到OTA应用程序(这个字节一般写0x01)
- 下载新应用程序的第一个扇区索引(这个字节写0x07)
- 需要删除的扇区数(4kbytes粒度的新固件大小) (这个字节写0xFF)
这个特征已经在程序中加好了UUID是:0000FE11-8e22-4541-9d4c-21edae82ed19。
整个重新启动请求特征的说明如图所示。
1.5 OTA应用广播特性
1.6 OTA程序的服务与特征
OTA应用是一个标准的BLE应用。它提供了一个特定的服务,三个具有完成更新的特征。
图 OTA服务与特征
图 OTA服务与特征具体介绍
1.7 在OTA应用程序对的用户程序固件的更新
- 第一个连接由用户应用程序建立。它向客户端发布一个Reboot请求特征,重启后就会进入到OTA的应用程序中去。
- 当客户端请求重新启动设备时,这个时候,这一次在OTA应用程序和客户端之间建立一个新的连接。
下图详细描述了更新过程中设备和客户端之间的消息和数据交换。
下图也详细描述了OTA应用更新过程。
1.8 用ST官方的APP(ST BLE Sensor)来测试OTA应用
升级用户程序的OTA过程如下
升级蓝牙协议的OTA过程如下。
这是我自己应用程序的OTA升级,过程也是一摸一样的。
1.9 使用USBdongle和STM32CubeMonitor-RF来进行OTA升级