|
无线/空中升级(FOTA)
接下来,我们看看无线的,空中升级的原理。升级对象是Nucleo板子。它的FUS已经是1.0.1,可以不用在升级了;我们把BLE stack从1.1.0升到最新的1.2.0;用户程序就更加直观了,从心跳 profile,升级成P2P server profile。上位机采用PC上的STM32CubeProgrammer,并搭配运行TransparentVCP(虚拟串口透传功能)的USB dongle板,一起工作。 使用STM32CubeMonitorRF触发BLE连接的OTA
左边是上位机,FOTA客户端,通过BLE,发起OTA请求,并提供新版本image;右边是Nucleo板,FOTA server端,通过BLE,接收OTA请求,并接收新版本的image。可以升级用户程序本身,也可升级RF stack,如图中两个红色箭头所示。 升级用户应用
我们先来升级用户应用,目标是从当前的心跳profile,升级到P2P server,升级成功后,效果非常直接,运行手机app, ST BLE sensor,连接设备,界面完全不同。为了达到这个目标,使用STM32CubeWB固件包中的三个项目。先把BLE_OTA和BLE_HeartRate_ota下载到nucleo板子上;把BLE_heartrate_ota下载到0x0800 7000处。ble_ota是编译链接在0x0800,0000地址处,是Nucleo板子上电就运行的;它要是没有查到ota请求标志,并且0x0800,7000处有有效代码,则跳转到0x800,7000运行,执行heart rate的心跳profile了。否则继续执行ota本身,开始准备接收来自FOTA 客户端的新固件。 这样看下来,整个过程,逻辑上跟我们以前的IAP by USB, IAP by Ethernet没有什么区别。
对于Nucleo板,要把两个分别链接在两个不同flash地址的项目下载下去,可以使用IAR里的Download active application功能;当然STM32CubeProgrammer也有类似功能,大家按照自己的喜好使用不同工具都可以。 对于Dongle板,它只有USB口,没有jtag/swd调试口暴露出来,因此要使用它的系统bootloader,使用DFU的形式,把透传VCP的程序下载下去,上位机,就用我们的STM32CubeProgrammer即可。烧写好了之后,dongle板记得恢复到从用户flash启动。连到PC会看到一个虚拟串口。 |
【NUCLEO-WBA65RI评测】围绕BleApplicationContext_t的端侧蓝牙开发逻辑
STM32入门系列-学习STM32要掌握的内容
【NUCLEO-WBA65RI评测】Android Studio手机端蓝牙开发
【NUCLEO-WBA65RI评测】6.手机蓝牙控制电机运动
【NUCLEO-WBA65RI评测】Android端蓝牙OTA升级
【NUCLEO-WBA65RI评测】USB HID设备测试
【NUCLEO-WBA65RI评测】5.OTA后不能Debug的原因和解决方案
新手必看!STM32单片机应该怎么学?
【NUCLEO-WBA65RI评测】使用BLE-Serial-comm进行BLE调试,蓝牙BLE动态运行
【NUCLEO-WBA65RI评测】评测小结
微信公众号
手机版