0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32WB55_NUCLEO开发(12)----FUS更新

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2023-11-13 15:36 次阅读

概述

STM32WB 微控制器中,FUS(Firmware Upgrade Services)是用于固件升级的一种服务。这项服务可以让你更新设备上的无线栈固件(如蓝牙Zigbee或 Thread 栈),以及无线 MCU (microcontroller unit) 的系统服务。

FUS 实质上是设备的一部分固件,它可以独立于主应用程序运行,主要负责安全地处理设备固件的升级。这包括检查新固件的有效性,确保新固件被正确地写入设备,以及在出现问题时回滚到旧版本的固件。

总的来说,FUS 是 STM32WB 和其他 STM32 无线微控制器中一个非常重要的组件,可以确保设备固件的安全更新。 最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:615061293 。

视频教学

听不到声音的请点击跳转进行观看。

https://www.bilibili.com/video/BV1hd4y1f7iZ/

硬件准备

首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板:

存储器映射

FUS 在 Flash 存储器中有一个专用空间,该空间取决于 FUS 大小。它还使用 SRAM2a 和 SRAM2b 中的专用空间 以及 SRAM2a(共享表)中的共享空间。

由选项字节定义 Flash 存储器 SRAM2a 和 SRAM2b 中的专用空间大小。 若需更多信息,请参见产品参考手册。

与无线协议栈(如果安装)共享专用 Flash 存储器和 SRAM 区域。但在给定时间,只能在 Cortex®-M0+上运行 FUS 或无线协议栈。

FLASH安全区设置

安全CPU2可以通过加载新的用户选项SFSA来修改CPU2的安全起始地址。

从闪存存储器的基地址开始加上[SFSA x 0x1000](包含),直到最后一个闪存存储器地址。当启用CPU2安全性时,CPU2安全区域的最小大小为一个扇区(4K字节)。

例如,一个从地址0x080C 7000(包含)到地址0x080F FFFF(包含)的CPU2安全区域。

SFSA[7:0]包含了安全闪存存储区域第一个4K字节页面的起始地址。

SRAM安全区设置

CPU2安全SRAM2a和SRAM2b区域以1 K字节的粒度定义,并通过安全备份RAM(SRAM2a)起始地址的用户选项(BRSD和SBRSA)以及安全非备份RAM(SRAM2b)起始地址的用户选项(NBRSD和SNBRSA)定义在闪存中。这些偏移由闪存内的安全SRAM2起始地址和CPU2复位向量寄存器(FLASH_SRRVR)中的SBRSA和SNBRSA字段控制。

CPU2安全的SRAM2a区域定义为备份SRAM2a基地址 + [SBRSA x 0x0400](包括),直到最后一个SRAM2a地址。 例如,对于CPU2安全的SRAM2a区域,从地址0x20035000(包括)到地址0x20037FFF(包括),需要将FLASH_SRRVR寄存器编程为SBRSA = 0x14。

任何CPU1的读取访问都不返回数据,并且对CPU2安全SRAM2a区域的写访问会被丢弃并触发总线错误。 当BRSD设置为1时,SRAM2a是非安全的。

CPU2安全的非备份SRAM2b区域定义为非备份SRAM2b基地址 + [SNBRSA x 0x0400](包括),直到最后一个SRAM2b地址。 例如,对于CPU2安全的SRAM2b区域,从地址0x2003EC00(包括)到地址0x2003FFFF(包括),需要将FLASH_SRRVR寄存器编程为SNBRSA = 0x1B。

任何CPU1的读取访问都不返回数据,并且对CPU2安全SRAM2b区域的写访问会被丢弃并触发总线错误。 当NBRSD设置为1时,SRAM2b是非安全的。

FUS固件下载 Firmware Update Service(FUS)是一种用于在STM32WB微控制器上更新固件的功能。FUS下载是指通过FUS服务进行固件更新的过程。通过FUS下载,您可以通过无线方式将新的固件加载到STM32WB设备中,而无需使用传统的有线编程方法。

在ST官网中提供了固件,下载地址:

https://www.st.com/zh/embedded-software/stm32cubewb.html

下载完毕之后,打开该目录,有对应的版本说明文档。

固件升级流程如下所示。

打开STM32CubeProgrammer,连接开发板。 进入固件升级服务,点击Start FUS。

连接成功会弹出如下所示窗口,若没链接成功,可以点击复位键。

可以使用STM32CubeProgrammer软件,通过点击"Read FUS infos"按钮,来读取安装在STM32WB微控制器中的FUS(Firmware Update Service)版本信息。这里的FUS版本为V0.5.3.0

通过打开上述的"Release_Notes.html"说明文档,可以查看固件包中不同MCU所对应的地址差异。 同时这里要求的固件包为V1.2.0,如果不是的话需要进行 STEP 5/6 。

选择相应的固件文件和起始地址后,您可以查看对应的固件等级,并点击"Firmware Upgrade"按钮进行固件升级。

升级成功如下所示。

若出现如下报错,说明没有进行第五步。

需要进行第五步,stm32wb5x_FUS_fw_for_fus_0_5_3.bin 这个二进制文件是用于刷新无线协处理器二进制文件的实用程序。

选中stm32wb5x_FUS_fw_for_fus_0_5_3.bin,同时输入对应的地址进行升级。

成功升级会显示如下所示窗口。

重新读取FUS版本,可以看见已经由之前的V0.5.3.0变为了V1.2.0.0

重新升级stm32wb5x_BLE_Stack_full_fw.bin。

这个时候可以查看到固件是升级成功了的。

最后我们可以进行第八步,设置boot寄存器。

通过USB进行下载

通过USB下载固件的具体流程如下所示。

通过usb进行下载,需要进行一些跳线帽的设置。

同时需要将CN7.5(VDD) and CN7.7(Boot0)短接以及设置nSWboot0=1为1。

设置nSWboot0=1为1。

连接CN7.5(VDD) 和 CN7.7(Boot0)。

切换为USB连接,连接上如下所示。

对于FUS版本,不同的FUS版本对应的步骤不一样。

由于我之前升级过了,可以直接下载固件。

下载成功如下所示。


审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 蓝牙
    +关注

    关注

    114

    文章

    5811

    浏览量

    170194
  • 无线
    +关注

    关注

    31

    文章

    5451

    浏览量

    173245
  • BLE
    BLE
    +关注

    关注

    12

    文章

    660

    浏览量

    59392
  • stm32cubemx
    +关注

    关注

    5

    文章

    283

    浏览量

    14791
  • STM32WB55
    +关注

    关注

    0

    文章

    26

    浏览量

    1322
收藏 人收藏

    评论

    相关推荐

    STM32WB55_NUCLEO开发(9)----接收手机数据点亮LED

    群申请:615061293 。 硬件准备 首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板: 视频教学 听不到声音的请点击跳转进行观看。 https
    的头像 发表于 08-21 15:16 1135次阅读
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>开发</b>(9)----接收手机数据点亮LED

    STM32WB55_NUCLEO开发(10)----接收手机特定数据点亮LED

    STM32WB55_NUCLEO开发(10)----接收手机特定数据点亮LED
    的头像 发表于 08-21 15:19 949次阅读
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>开发</b>(10)----接收手机特定数据点亮LED

    STM32WB55_NUCLEO开发(11)----发送数据到手机

    STM32WB55_NUCLEO开发(11)----发送数据到手机
    的头像 发表于 08-21 15:22 1214次阅读
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>开发</b>(11)----发送数据到手机

    STM32WB55开发(6)----FUS更新

    STM32WB 微控制器中,FUS(Firmware Upgrade Services)是用于固件升级的一种服务。这项服务可以让你更新设备上的无线栈固件(如蓝牙、Zigbee或 Thread 栈
    的头像 发表于 12-01 16:49 887次阅读
    <b class='flag-5'>STM32WB55</b><b class='flag-5'>开发</b>(6)----<b class='flag-5'>FUS</b><b class='flag-5'>更新</b>

    NUCLEO-WB55RG更新FUS,在CubeIDE里无法烧录怎么解决?

    板子是NUCLEO-WB55RG,那天尝试了一下FUS更新,后来在CubeIDE里无法烧录,也无法连接到CubeProg,图片如下,ST-link的电压为0V,尝试更改mode为hot plug,power down均无效,其他
    发表于 03-14 07:40

    P-NUCLEO-WB55.USBDongle开发板升级FUS和无线协议栈失败的原因?

    按照官网提供的下面步骤 升级P-NUCLEO-WB55.USBDongle单板的FUS和无线协议栈后,单板在sw2 to boot0下,stm32cubeprogrammer选择usb模式无法再识别
    发表于 04-16 06:59

    在定制板上更新STM32WB55CGU6上的无线堆栈时遇到问题如何解决

    我在定制板上更新 STM32WB55CGU6 上的无线堆栈时遇到问题。该板基本上是 P-NUCLEO-WB55-USBDONGLE 的克隆版本。该设备通过 St-Link/V2 上的 SWD 连接
    发表于 12-05 09:56

    FUS_STATE_IMG_NOT_AUTHENTIC在STM32WB55上从0.5.3更新FUS时出错怎么解决?

    我正在尝试使用 STM32CUBE Programmer GUI 工具通过 ST-LINK 升级我的 STM32WB55 Nucleo 板上的 FUS 和无线堆栈版本,并看到此错误
    发表于 12-27 06:22

    P-NUCLEO-WB55 STMicroelectronicsPNUCLEOWB55STM32WBNucleo68数据包

    电子发烧友网为你提供(ti)P-NUCLEO-WB55相关产品参数、数据手册,更有P-NUCLEO-WB55的引脚图、接线图、封装手册、中文资料、英文资料,P-NUCLEO-WB55真值表,P-
    发表于 10-23 16:06

    stm32wb55 基于rtt的ble sample制作过程

    stm32wb55 基于rtt的ble sample制作过程准备活动硬件stm32wb55 nucleo开发stm32wb55 dangl
    发表于 12-20 19:39 13次下载
    <b class='flag-5'>stm32wb55</b> 基于rtt的ble sample制作过程

    STM32WB55_NUCLEO开发(1)----软件与硬件介绍

    所使用的的器件位ST官方的P-NUCLEO-WB55
    的头像 发表于 11-18 09:54 2534次阅读
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>开发</b>(1)----软件与硬件介绍

    STM32WB55_NUCLEO开发(5)----手机与STM32WB通过键入密钥配对

    本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程,并通过与STM32WB配对获取密钥值,然后通过键盘输入密钥进行配对。
    的头像 发表于 11-18 10:02 1210次阅读
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>开发</b>(5)----手机与<b class='flag-5'>STM32WB</b>通过键入密钥配对

    STM32WB55_NUCLEO开发(7)----手机与STM32WB进行绑定

    本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程,并通过与STM32WB配对,将其绑定。
    的头像 发表于 11-18 10:08 1302次阅读
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>开发</b>(7)----手机与<b class='flag-5'>STM32WB</b>进行绑定

    STM32WB55_NUCLEO开发(8)----授权

    本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程,并通过与STM32WB配对,应用程序对客户端读取或者写入特征值进行授权。
    的头像 发表于 11-18 10:09 1240次阅读
    <b class='flag-5'>STM32WB55_NUCLEO</b><b class='flag-5'>开发</b>(8)----授权

    DB4388_NUCLEO_WB55RG NUCLEO_WB15CC 数据手册摘要

    DB4388_NUCLEO_WB55RG NUCLEO_WB15CC 数据手册摘要
    发表于 11-23 08:34 1次下载
    DB4388_<b class='flag-5'>NUCLEO_WB55</b>RG <b class='flag-5'>NUCLEO_WB</b>15CC 数据手册摘要