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

概述在 stm32wb 微控制器中,fus(firmware upgrade services)是用于固件升级的一种服务。这项服务可以让你更新设备上的无线栈固件(如蓝牙、zigbee或 thread 栈),以及无线 mcu (microcontroller unit) 的系统服务。
fus 实质上是设备的一部分固件,它可以独立于主应用程序运行,主要负责安全地处理设备固件的升级。这包括检查新固件的有效性,确保新固件被正确地写入设备,以及在出现问题时回滚到旧版本的固件。
总的来说,fus 是 stm32wb 和其他 stm32 无线微控制器中一个非常重要的组件,可以确保设备固件的安全更新。
最近在弄st和瑞萨ra的课程,需要样片的可以加群申请:615061293 。
视频教学听不到声音的请点击跳转进行观看。
[https://www.bilibili.com/video/bv1qj411y7dx/
硬件准备首先需要准备一个开发板,这里我准备的是自己绘制的开发板,新班子使用了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。


Helio P70将来袭,搭配独立NPU!布局ASIC联发科能否力挽狂澜?
pcb电镀常见问题
如何保证机器人安全?机器人安全标准成为关注焦点
CRM大厂神州云动入选2021信创服务商100强|硬实力
射频印制电路板的设计如何解决信号干扰
STM32WB55开发(6)----FUS更新
PCB组装中的CIMS技术是怎么一回事
物联网技术的快速发展,会给环保领域带来巨大变化
NVIDIA在德国科隆正式发布了新一代GeForce显卡
LitePoint引领LTE无线通讯测试新方向
采用虚拟货币世界现实理财方式靠谱吗
Lipton呼吁:趁还来得及,还学术会议一个本来的面貌吧!
国内外稀土供给格局,及中国若打稀土牌将会产生哪些影响?
实时频谱分析在EMI诊断中的应用
AMD停止32位bit驱动程序开发
深度学习模型种类多,科学研究如何选择
苹果申请汽车照明系统新专利
LCP薄膜的拉伸试验方法解析——探究薄膜材料拉力试验机工作原理
爆料称一加9将支持30W无线充电和反向无线充电功能
Plastic Logic在柔性显示屏上取得重大突破,两款6英寸显示屏已量产