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开发(3)----断开蓝牙连接

    在嵌入式领域中,STM32WB 系列微控制器以其双核架构和强大的无线连接能力而著称。特别是其蓝牙5.0的功能使得这款微控制器非常适合那些需要低功耗和高性能无线连接的应用。然而,在实际的应用中,合理和有效地管理蓝牙连接是非常关键的,尤其是当设备需要断开或重新

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

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

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

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

    2024年02月01日
    浏览(43)
  • 内嵌功能强大、低功耗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日
    浏览(39)
  • 【STM32备忘录】【STM32WB系列的BLE低功耗蓝牙】一、测试广播配置搜不到信号的注意事项

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

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

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

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

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

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

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

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

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

    2024年02月04日
    浏览(59)
  • 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日
    浏览(152)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包