
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评测】4.Android端进行蓝牙OTA升级
【NUCLEO-WBA65RI评测】 蓝牙低功耗连接与数据传输
【NUCLEO-WBA65RI评测】低功耗模式实测
【NUCLEO-WBA65RI评测】WireShark分析作为USB HID device设备的包和速度
【NUCLEO-WBA65RI评测】3.P2PServer学习双向数据交互
【NUCLEO-WBA65RI评测】物联网 LED
【NUCLEO-WBA65RI评测】蓝牙体温计
【NUCLEO-WBA65RI评测】Home Assistant 物联网心率计
【NUCLEO-WBA65RI评测】功耗测试
【NUCLEO-WBA65RI评测】介绍、环境搭建、工程测试