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

这篇具有很好参考价值的文章主要介绍了STM32WB55开发(6)----FUS更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

在 STM32WB 微控制器中,FUS(Firmware Upgrade Services)是用于固件升级的一种服务。这项服务可以让你更新设备上的无线栈固件(如蓝牙、Zigbee或 Thread 栈),以及无线 MCU (microcontroller unit) 的系统服务。
FUS 实质上是设备的一部分固件,它可以独立于主应用程序运行,主要负责安全地处理设备固件的升级。这包括检查新固件的有效性,确保新固件被正确地写入设备,以及在出现问题时回滚到旧版本的固件。
总的来说,FUS 是 STM32WB 和其他 STM32 无线微控制器中一个非常重要的组件,可以确保设备固件的安全更新。
最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:6_15061293 。

视频教学

听不到声音的请点击跳转进行观看。
https://www.bilibili.com/video/BV1qj411Y7dX/

STM32WB55

硬件准备

首先需要准备一个开发板,这里我准备的是自己绘制的开发板,新班子使用了MLPF-WB55-01E3的2.4 GHz低通滤波器和陶瓷天线,体积更小。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

样品申请

https://www.wjx.top/vm/OhcKxJk.aspx#

存储器映射

FUS 在 Flash 存储器中有一个专用空间,该空间取决于 FUS 大小。它还使用 SRAM2a 和 SRAM2b 中的专用空间
以及 SRAM2a(共享表)中的共享空间。由选项字节定义 Flash 存储器 SRAM2a 和 SRAM2b 中的专用空间大小。
若需更多信息,请参见产品参考手册。
与无线协议栈(如果安装)共享专用 Flash 存储器和 SRAM 区域。但在给定时间,只能在 Cortex®-M0+上运行
FUS 或无线协议栈。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

FLASH安全区设置

安全CPU2可以通过加载新的用户选项SFSA来修改CPU2的安全起始地址。
从闪存存储器的基地址开始加上[SFSA x 0x1000](包含),直到最后一个闪存存储器地址。当启用CPU2安全性时,CPU2安全区域的最小大小为一个扇区(4K字节)。
例如,一个从地址0x080C 7000(包含)到地址0x080F FFFF(包含)的CPU2安全区域。

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
SFSA[7:0]包含了安全闪存存储区域第一个4K字节页面的起始地址。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

SRAM安全区设置

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

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
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是非安全的。

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

FUS固件下载
Firmware Update Service(FUS)是一种用于在STM32WB微控制器上更新固件的功能。FUS下载是指通过FUS服务进行固件更新的过程。通过FUS下载,您可以通过无线方式将新的固件加载到STM32WB设备中,而无需使用传统的有线编程方法。
在ST官网中提供了固件,下载地址:
https://www.st.com/zh/embedded-software/stm32cubewb.html

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
下载完毕之后,打开该目录,有对应的版本说明文档。

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
固件升级流程如下所示。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
打开STM32CubeProgrammer,连接开发板。
进入固件升级服务,点击Start FUS。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

连接成功会弹出如下所示窗口,若没链接成功,可以点击复位键。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
可以使用STM32CubeProgrammer软件,通过点击"Read FUS infos"按钮,来读取安装在STM32WB微控制器中的FUS(Firmware Update Service)版本信息。这里的FUS版本为V0.5.3.0
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
通过打开上述的"Release_Notes.html"说明文档,可以查看固件包中不同MCU所对应的地址差异。
同时这里要求的固件包为V1.2.0,如果不是的话需要进行 STEP 5/6 。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
选择相应的固件文件和起始地址后,您可以查看对应的固件等级,并点击"Firmware Upgrade"按钮进行固件升级。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
升级成功如下所示。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
若出现如下报错,说明没有进行第五步。

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
需要进行第五步,stm32wb5x_FUS_fw_for_fus_0_5_3.bin 这个二进制文件是用于刷新无线协处理器二进制文件的实用程序。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

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

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
成功升级会显示如下所示窗口。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

重新读取FUS版本,可以看见已经由之前的V0.5.3.0变为了V1.2.0.0
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

重新升级stm32wb5x_BLE_Stack_full_fw.bin。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
这个时候可以查看到固件是升级成功了的。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

最后我们可以进行第八步,设置boot寄存器。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

通过USB进行下载

通过USB下载固件的具体流程如下所示。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
通过usb进行下载,需要进行一些跳线帽的设置。

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

同时需要将BOOT0进行上拉以及设置nSWboot0=1为1。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

设置nSWboot0=1为1。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

切换为USB连接,连接上如下所示。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
对于FUS版本,不同的FUS版本对应的步骤不一样。
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

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

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈
下载成功如下所示。

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈

注意事项

协议栈下载进去了可能无法运行,需要Start Wireless Stack。

stm32wb55,单片机,#stm32wb,#STM32,stm32wb,MLPF-WB55-01E3,stm32cubemx,STM32Programmer,fus,蓝牙,协议栈文章来源地址https://www.toymoban.com/news/detail-793312.html

到了这里,关于STM32WB55开发(6)----FUS更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32WB55开发(5)----调整射频功率

    随着无线通信技术的不断进步,能够精确地控制射频(RF)信号的功率变得越来越重要。调整射频功率不仅可以影响设备的通信距离和覆盖范围,还可以优化电池的使用寿命和减少可能的射频干扰。ACI_HAL_SET_TX_POWER_LEVEL指令提供了一种方法,使工程师和开发者能够在ST的蓝牙设

    2024年02月06日
    浏览(36)
  • STM32WB55_NUCLEO开发(11)----发送数据到手机

    本篇文章将详细介绍如何在上节配置的基础上,实现通过点击STM32WB开发板上的按键发送数据到手机上。 最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:6_15061293 。 首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板: 听不到声音的请点击跳转进行观看。

    2024年02月01日
    浏览(37)
  • STM32WB55_NUCLEO开发(9)----接收手机数据点亮LED

    本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程,并通过与STM32WB配对,向该特征写入一个任意字节,绿色LED会切换。 最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:6_15061293 。 首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板: 听不到声音的请点击

    2024年02月01日
    浏览(36)
  • 内嵌功能强大、低功耗STM32WB55CEU7、STM32WB55CGU7 射频微控制器 - MCU, 48-UFQFN

    一、概述: STM32WB55xx多协议无线和超低功耗器件内嵌功能强大的超低功耗无线电模块(符合蓝牙® 低功耗SIG规范5.0和IEEE 802.15.4-2011标准)。该器件内含专用的Arm® Cortex® -M0+,用于执行所有的底层实时操作。这些器件基于高性能Arm® Cortex®-M4 32位RISC内核(工作频率可达64 MHz),

    2024年02月11日
    浏览(27)
  • 【STM32备忘录】【STM32WB系列的BLE低功耗蓝牙】一、测试广播配置搜不到信号的注意事项

    WB系列是双核单片机,用户写M4,无线协议栈使用M0 新买到手的单片机,需要自己刷入使用的无线协议栈 刷入无线协议栈的途径是通过一个叫FUS的东东,类似于bootloader,这个FUS新买的芯片通常已经刷好,但版本不一定是最新的(如果没有需要自己刷入) 刷入FUS和无线协议栈需要

    2024年03月16日
    浏览(44)
  • STM32单片机开发-01 STM32介绍

    通过野火开发板学习单片机 从内核上分有Cortex-M0、M3、M4 和M7 F1 代表了基础型,基于Cortex-M3 内核,主频为72MHZ F4 代表了高性能,基于Cortex-M4 内核,主频180M。 数据手册:用于芯片选型和设计原理图 参考手册:用于编程时查阅 Icode总线 – 该总线讲M3内核的指令总线与闪存指令

    2024年01月21日
    浏览(44)
  • mac 可以进行单片机(stm32)的开发吗?

    当涉及到在Mac上进行单片机开发时,是完全可行的。以下是为什么Mac适合单片机开发的解释: 开发工具:针对STM32单片机,你可以使用多种开发工具。一个常用的选择是Segger Embedded Studio,它是一个功能强大的集成开发环境(IDE),适用于Mac平台。你可以在这个环境中编写、编

    2024年02月12日
    浏览(29)
  • 使用vscode + gcc进行 STM32 单片机开发(一)编译及调试

    众所周知,单片机MCU的开发通常是使用keil来进行的,但是keil作为一款有几十年历史的IDE,bug层出不穷,界面也越来越丑,加上使用盗版jlink,导致keil各种崩溃卡死。 故越来越多的单片机IDE也如雨后春笋般冒出,例如 st官方出版的st studio、rt-thread出版的rt-studio,至于好不好用

    2023年04月08日
    浏览(37)
  • STM32F103RCT6开发板M3单片机教程06--定时器中断

    除非特别说明,本章节描述的模块应用于整个 STM32F103xx 微控制器系列,因为我们使用是 STM32F103RCT6开发板是mini最小系统板。 本教程使用是( 光明谷SUN_STM32mini开发板 )   首先了解一下是STM32F10X定时器(Timer)   注: 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101

    2024年02月04日
    浏览(42)
  • 2-远程升级篇(自建物联网平台)-STM32通过EC800使用http或https下载程序文件升级程序(APP通过MQTT控制单片机更新)

    1,用户在APP上点击 \\\"固件升级\\\" 按钮, APP使用MQTT发送:  {\\\"data\\\":\\\"updata\\\",\\\"cmd\\\":\\\"DeviceInfo\\\"} //询问设备固件信息 2,设备通过MQTT收到该消息以后,发送 {\\\"data\\\":\\\"updata\\\",\\\"cmd\\\":\\\"DeviceInfo\\\",\\\"DeviceModel\\\":\\\"STM32EC800BKAPP\\\",\\\"FirmwareVersion\\\":\\\"0.0.0\\\"} (STM32EC800BKAPP是设备的型号;  0.0.0是设备当前的固件版本) 3,APP收到

    2024年04月16日
    浏览(134)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包