1 Android端进行蓝牙OTA升级的简述参考如下资料,Connectivity:BLE smartphone applications - stm32mcu 和STM32WBA Bluetooth® LE – Firmware update over the air - stm32mcu 可以详细了解这个过程。本次采用以下项目
来实现OTA的执行 2 操作过程2.1 支持空中固件更新(FUOTA)功能的蓝牙低功耗(BLE)心率应用(BLE_HeartRate_ota),空中固件更新操作流程如下。 运行设备 :该应用需在 STM32WBA65xx 系列器件上运行。使用 A 型转 C 型 USB 电缆,将 Nucleo 开发板通过 ST-LINK 接口(USB_STLINK)连接至电脑。 低功耗模式默认配置:应用默认支持低功耗模式,该模式下无调试跟踪(Traces)和调试器(Debugger)功能。若需启用调试跟踪和调试器,需在
3.2 重新编译所有文件并将程序烧录到开发板,烧录时需注意以下内存地址分配: BLE_ApplicationInstallManager二进制文件烧录至内存地址
BLE_HeartRate_ota二进制文件烧录至内存地址
3.3 远程应用交互操作 选择并使用支持 STM32WBA 的 BLE 收集器应用与设备交互。 给 STM32WBAxx Nucleo 开发板上电。 打开所选的远程交互界面,按照以下步骤操作: 在设备列表中找到名为 “HR__9A” 的设备(其中 “9A” 为蓝牙设备地址(BD ADDRESS)的最后两位);
连接该设备;
3.4空中固件更新(FUOTA)操作 空中固件更新(FUOTA)服务支持在当前应用运行过程中,接收并安装新的应用程序。 进入更新服务界面 在远程交互界面中,选择 “空中更新服务器服务面板(Over The Air Update Server service panel)”
选择设备类型与更新文件类型 选择 “STM32WBA” 设备类型;
该界面提供两种更新文件选择:“应用程序二进制文件(Application Binary)” 和 “用户配置二进制文件(User Conf Binary)”,需根据更新需求选择对应类型。
然后多次尝试都宣告失败,下载不成功。
其实是搞错了地址的含义,这里是地址偏移,而不是绝对地址,所以,移动到下一个空的位置就好
这时下载就可以成功
执行固件下载与重启, 选择待下载的二进制文件,界面会根据文件大小自动显示需擦除的页数,若有需要,也可手动修改擦除页数; 下载完成后,应用程序会自动重启,新固件生效。重启就可以更新到新的下载的应用程序了。 这里还是用这个,所以用户界面还是一样的。这个最好的就是用于在线版本更新。 3.5 内存映射与地址偏移配置 (1)内存映射规则 STM32WBA 的内存映射已预先定义,各区域功能划分明确,具体如下:
(2)地址偏移设置
4 原理分析和介绍4.1工作流程 常规流程:用户服务与 OTA 服务可并行运行,更新固件下载期间用户服务正常工作,下载完成后设备重启以安装新固件; 待机模式适配:若用户 FUOTA 应用设为待机模式,从待机模式唤醒复位后,需立即运行用户 FUOTA 应用并最小化 RAM 使用,跳过应用安装管理器任务,保障 RAM 完整性。 4.2应用初始化 初始化分 7 个核心步骤:
4.3 GAP 与 GATT 初始化及交互
4.4 用户代码的组织如下
这样就实现了Android端进行蓝牙OTA升级的全过程。其中,重新启动的时候,这个安装管理器会先从新拷入的代码加载到活跃区域,再执行,这样可以在现有的代码框架下完成这个更新OTA过程。 |
【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评测】评测小结
微信公众号
手机版