你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-WBA65RI评测】Android端进行蓝牙OTA升级

[复制链接]
北方 发布时间:2025-9-12 12:53

1 Android端进行蓝牙OTA升级的简述

参考如下资料,Connectivity:BLE smartphone applications - stm32mcuSTM32WBA Bluetooth® LE – Firmware update over the air - stm32mcu 可以详细了解这个过程。本次采用以下项目

01.JPG

来实现OTA的执行

2 操作过程

2.1 支持空中固件更新(FUOTA)功能的蓝牙低功耗(BLE)心率应用(BLE_HeartRate_ota),空中固件更新操作流程如下。

运行设备 :该应用需在 STM32WBA65xx 系列器件上运行。使用 A 型转 C 型 USB 电缆,将 Nucleo 开发板通过 ST-LINK 接口(USB_STLINK)连接至电脑。

低功耗模式默认配置:应用默认支持低功耗模式,该模式下无调试跟踪(Traces)和调试器(Debugger)功能。若需启用调试跟踪和调试器,需在app_conf.h文件中修改以下参数:

  • CFG_LPM_LEVEL设置为 0;
  • CFG_DEBUGGER_LEVEL设置为 1;
  • CFG_LOG_SUPPORTED设置为 1。

3.2 重新编译所有文件并将程序烧录到开发板,烧录时需注意以下内存地址分配:

BLE_ApplicationInstallManager二进制文件烧录至内存地址0x08000000

02.JPG

BLE_HeartRate_ota二进制文件烧录至内存地址0x08006000

03.JPG

3.3 远程应用交互操作

选择并使用支持 STM32WBA 的 BLE 收集器应用与设备交互。

给 STM32WBAxx Nucleo 开发板上电。

打开所选的远程交互界面,按照以下步骤操作:

在设备列表中找到名为 “HR__9A” 的设备(其中 “9A” 为蓝牙设备地址(BD ADDRESS)的最后两位);

1893907835.jpg

连接该设备;

1642797016.jpg2092724402.jpg1126661281.jpg

3.4空中固件更新(FUOTA)操作

空中固件更新(FUOTA)服务支持在当前应用运行过程中,接收并安装新的应用程序。

进入更新服务界面

在远程交互界面中,选择 “空中更新服务器服务面板(Over The Air Update Server service panel)”

1271673091.jpg

选择设备类型与更新文件类型

选择 “STM32WBA” 设备类型;

1805740440.jpg

该界面提供两种更新文件选择:“应用程序二进制文件(Application Binary)” 和 “用户配置二进制文件(User Conf Binary)”,需根据更新需求选择对应类型。

358410229.jpg

然后多次尝试都宣告失败,下载不成功。

666623007.jpg

其实是搞错了地址的含义,这里是地址偏移,而不是绝对地址,所以,移动到下一个空的位置就好

1003947062.jpg

这时下载就可以成功

1954196450.jpg

执行固件下载与重启,

选择待下载的二进制文件,界面会根据文件大小自动显示需擦除的页数,若有需要,也可手动修改擦除页数;

下载完成后,应用程序会自动重启,新固件生效。重启就可以更新到新的下载的应用程序了。

这里还是用这个,所以用户界面还是一样的。这个最好的就是用于在线版本更新。

3.5 内存映射与地址偏移配置

(1)内存映射规则

STM32WBA 的内存映射已预先定义,各区域功能划分明确,具体如下:

  • 第 0-2 页:预留用于BLE_ApplicationInstallManager应用;
  • 第 3-127 页:专用于BLE_HeartRate_ota应用;
  • 第 128-252 页:用于存储新应用;
  • 第 253 页:用于存储用户配置数据(User Configuration Data);
  • 第 254-255 页:预留用于非易失性存储器(NVM)。

(2)地址偏移设置

  • 若选择 “应用程序二进制文件(Application Binary)”:地址偏移设为0x100000,新应用将下载至地址0x08100000
  • 若选择 “用户配置二进制文件(User Conf Binary)”:地址偏移设为0x0F6000,新应用将下载至地址0x080F6000

4 原理分析和介绍

4.1工作流程

常规流程:用户服务与 OTA 服务可并行运行,更新固件下载期间用户服务正常工作,下载完成后设备重启以安装新固件;

待机模式适配:若用户 FUOTA 应用设为待机模式,从待机模式唤醒复位后,需立即运行用户 FUOTA 应用并最小化 RAM 使用,跳过应用安装管理器任务,保障 RAM 完整性。

4.2应用初始化

初始化分 7 个核心步骤:

  1. 初始化系统(HAL、时钟、外设),进入运行模式无限循环;
  2. 初始化 BSP、电源模式、跟踪功能、内存管理器、NVM,等待初始化完成;
  3. 初始化 BLE 主机栈;
  4. 初始化 BLE 的 GATT 层和 GAP 层;
  5. 重置已注册处理器数量;
  6. 初始化上下文,管理 FUOTA 服务通知;
  7. 注册服务处理器,更新服务与特征值。

4.3 GAP 与 GATT 初始化及交互

  • 初始化交互 :在app_ble.c中完成 BLE 栈初始化(设为外围设备、配置广播参数 / 设备名 / UUID 并启动广播),调用svc_ctl.c中的服务控制器初始化函数SVCCTL_Init(),并通过SVCCTL_App_Notification()管理 GAP 事件(如连接完成、连接更新完成、断开连接,分别反馈连接间隔、新连接信息、断开原因);
  • 服务管理svc_ctl.c初始化注册处理器数量,通过SVCCTL_UserEvtRx()接收 BLE 主机栈事件,并转发至 GAP 事件处理器;
  • 应用层与服务层ota_app.c初始化 FUOTA 服务(调用ota.cOTA_Init())、应用上下文,擦除下载区,接收 FUOTA 服务通知;ota.c管理 FUOTA 服务规范,包括注册事件处理器、初始化服务 / 特征值,以及处理 GATT 事件(如写入请求、属性修改,反馈写入状态或通知应用状态变化)。

4.4 用户代码的组织如下

Capture.JPG

这样就实现了Android端进行蓝牙OTA升级的全过程。其中,重新启动的时候,这个安装管理器会先从新拷入的代码加载到活跃区域,再执行,这样可以在现有的代码框架下完成这个更新OTA过程。

收藏 评论0 发布时间:2025-9-12 12:53

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版