当前位置: 首页 > news >正文

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

STM32WB55开发.6--FUS更新

  • 概述
  • 视频教学
  • 硬件准备
  • 存储器映射
  • FLASH安全区设置
  • SRAM安全区设置
  • 通过USB进行下载
  • 注意事项

概述

在 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低通滤波器和陶瓷天线,体积更小。
在这里插入图片描述

存储器映射

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进行下载,需要进行一些跳线帽的设置。

在这里插入图片描述

同时需要将BOOT0进行上拉以及设置nSWboot0=1为1。
在这里插入图片描述

设置nSWboot0=1为1。
在这里插入图片描述

切换为USB连接,连接上如下所示。
在这里插入图片描述
对于FUS版本,不同的FUS版本对应的步骤不一样。
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
下载成功如下所示。

在这里插入图片描述

注意事项

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

在这里插入图片描述

http://www.lryc.cn/news/218452.html

相关文章:

  • centos关闭Java进程的脚本
  • 深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现
  • Spring 中 BeanFactory 和 FactoryBean 有何区别?
  • 黑马程序员项目-黑马点评
  • ubuntu 20.04 + Anaconda + cuda-11.8 + opencv-4.8.0(cuda)
  • Linux 目录
  • Linux shell编程学习笔记21:用select in循环语句打造菜单
  • 线性回归与线性拟合的原理、推导与算法实现
  • 【C++】set和multiset
  • 二十、泛型(1)
  • 【Unity数据交互】游戏中常用到的Json序列化
  • TCP的滑动窗口和拥塞控制
  • 零信任网络:一种全新的网络安全架构
  • 基于单片机的智能拐杖软件设计
  • 小程序如何设置自动预约快递
  • STM32-HAL库08-TIM的输出比较模式(输出PWM的另一种方式)
  • 【数据结构】深入浅出讲解计数排序【图文详解,搞懂计数排序这一篇就够了】
  • Canvas制作喷泉效果示例
  • 什么是NPM(Node Package Manager)?它的作用是什么?
  • oracle如果不适用toad或者plsql工具如何获取索引建表语句
  • 某大厂伺服驱动器量产方案
  • 【计算机网络】网络层:数据平面
  • Path with “WEB-INF“ or “META-INF“: [webapp/WEB-INF/NewFile.html]
  • 百度OCR 接口调用 提示 216101:param image not exist 问题解决
  • 1-10 HTML中input属性
  • 共焦显微镜使用
  • windows + Mingw32-make 编译 PoDoFo库,openssl, libjpeg, Msys2工具的使用
  • C++中图的存储
  • 西瓜书读书笔记整理(七)—— 第七章 贝叶斯分类器
  • C#WPF嵌套布局实例