你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32WB如何升级FUS、协议栈

[复制链接]
小萝卜啦啦啦 发布时间:2021-12-29 15:56
非常感谢ST中文论坛给我这个试用STM32WB开发板的机会。9 r4 H" `5 m9 B4 i

4 b4 o5 T1 ~: e# _! e本文将和大家分享STM32WB芯片如何升级FUS和协议栈。
5 f. W& h1 V7 ^& H1 C  X- h7 x" K- p# [* R  ~
本文主要分为三个部分:①基础知识讲解、准备工作;②以SWD方式升级;③以USB方式升级' {: u  o. o0 ?4 t
4 J0 f  O, B$ m
一.基础知识讲解、准备工作8 w: O8 m* z" C5 K# P/ U: B
; e, T1 \. g8 K9 ]. e; c- }$ o
我们拿到一块的蓝牙芯片第一步就是需要下载蓝牙协议栈到芯片的FLASH中,WB也是如此。但它的方式会稍微复杂一点,因为他是一个双核的MCU,用户只需要负责M4核的开发,M0+核来负责RF,M0+是隔离开的,处于一个“黑盒”中,用户无法对M0+进行调试 1.png
. b/ k8 q  u3 b; R5 H( d! Y如图,flash中有一块专用的区域给M0+使用,用户是无法直接访问这块区域的,因此向这个区域写入协议栈需要一个“跳板”,这个“跳板”就是FUS(firmware update service),M0+运行FUS后就可以对协议栈区域进行读写。
, ^1 Y  W1 A) o% l& Q% q6 Z$ L8 a1 o6 ~# X$ P* v, j0 m. o
用户拿到WB芯片时,出厂会预装一个FUS(版本为0.5.3,这次最初版本的FUS),没有协议栈。而开发板因为要安装demo,所以不仅会安装FUS(版本也是0.5.3),还会安装BLE协议栈和demo程序。但不管你使用那个,到手后第一步还是要安装最新版本的协议栈(用新不用旧嘛),但是最新版的协议栈无法用老版本的FUS安装,综上,得先更新FUS到最新版本,然后才能更新协议栈。
! z0 A3 y! F0 g
- b  R, ]. V3 R' }. X0 z关于FUS、协议栈的一些底层知识,ST有一本书有说明,《AN5185-STM32WB系列的ST固件升级服务》,有兴趣的可以去官网下载阅读,有中文版本。
! Q' `  Q8 B3 j9 f. o" s; z* f' @
  i% P. n0 A% H' L# z) E  b) t下图为WB更新FUS/协议栈的两大类方法,分别是有线和无线。前者适合我们开发时使用,后者适合产品做完后后续升级使用。今天我们只讲有线的两种方式。# C: a  ~. X/ F2 ^$ f$ [/ @
2.png * S6 u6 ~/ K* H; K/ Z: y+ G) D6 P7 R
在开始实战前,我们还得准备好软件:①安装最新的STM32CubeMX,还需要在软件中安装最新的给WB使用的Packge(目前最新的是1.13.1,我待会儿就会使用这个版本)②STM32CubeProgrammer(请务必使用2.7.0及以上版本)
" A. k6 E( c% U' m
! P1 J, E5 s$ n- |% `. b5 F3 v二.以SWD方式升级
/ K! Z& g$ N( ^) }8 `
, {0 z. i8 l' P8 I打开下图对应位置的文件夹(如果你的CUBEMX不是安装在默认位置,你要自己找到对应的位置)
# m6 v. y( Z/ `+ }0 H' a# ~5 Q6 U 3.png   m+ p& n/ _) X$ l- i" t  V
这里存放的就是WB5X系列芯片所需要使用的FUS文件和协议栈,文件夹里面有一个“Release_Notes.html”的文件,他详细的描述了里面各个文件所对应的功能以及如何安装,待会儿的安装步骤和对应写入地址都需要看这个文档,建议大家去仔细阅读一下,内容不多,大约几分钟就可以看完,在这里我就不一一解释了。" K6 O; A! E' Y* r( |3 d
+ L& f5 s% q) K0 @& o) l0 @& a
Nucleo板卡的JP1连接USBSTL(板卡买来默认就是接这个位置),插上数据线,连接电脑(板卡后面有两个micro usb接口,要接ST-LINK那个接口,别接错了)) _) f5 s2 c1 C. E2 `% P4 p& t/ u
2 u% j6 b6 y" d% S
打开STM32CubeProgrammer,点击Connect" |) E. {) L: N5 t6 r; q
4.png
2 S! p1 Y, b8 ?  h7 i; l+ A5 E" `点击下图图标0 `1 X% `" Q4 A! G: I  i  I
5.png 5 A. Z( M1 A2 H  ^
点击Start FUS(他会给板卡的M4核下载一个固件,用于启动M0+核心,所以他会删除原先M4核的程序,请注意)
6 g0 G' v" R; c( c; {$ D) K$ x 6.png
+ ^: c5 h3 r+ Y9 y2 k0 v) D5 x* j等待一会儿,会弹出成功的提示框: m6 u* E) g! u
7.png
" i0 A: }7 B. g2 d5 r% q7 Z' p点击Read FUS infos
' x. O+ U! o( M# h) D1 C 8.png 6 F* T$ F4 E+ e# d& J% d
就可以看到版本号了
* K2 z- T: H" ` 9.png
, ~5 m0 e5 |* e3 x4 e出厂默认的FUS就是0.5.31 ?0 d4 L+ |' P6 {$ H

5 l) M0 ?9 {+ t, H: |/ |. B我们要用stm32wb5x_FUS_fw_for_fus_0_5_3.bin这个文件升级FUS,这个BIN文件是专门给0.5.3FUS定制的,他可以直接将0.5.3FUS直接升级到最新版本的FUS(这一点和网上旧的教程有区别,旧的教程说要先升级到1.0.2,再升级到最新的FUS,现在在已经不需要这样操作了)。如果你的FUS版本是FUS1.X.Y(X<2),则需要选用stm32wb5x_FUS_fw.bin这个文件' X( t! W( M( T" S, e9 C  q" }
查表可得,这个固件对应的写入地址为0x080EC000(stm32wb5x_FUS_fw.bin也是使用0x080EC000)
10.png
先选好刚才说的那个FUS文件,填好地址
11.png
点击Firmware Upgrade,等待一会儿,他会弹出下图的两个提示框,则表示升级FUS完成
12.png
$ B% c7 s: o( K# g) c: R9 |& q; w
现在我们再来读一下FUS版本
13.png
已经升级到1.2.0.0了,这是当前最新的FUS版本

  _7 \% V$ p7 `# f3 E* m! q6 P
接下来我们来升级协议栈,我们本次以的完整版的BLE协议栈(stm32wb5x_BLE_Stack_full_fw.bin)为例,如果你的FLASH空间紧张也可以选用阉割版的BLE协议栈,或者你有Zigbee、Thread等开发需求的就选择你所需要的协议栈

! ~+ A. D; a. _  B  {8 [
选择你所需要的协议栈文件,并查表找对应的起始地址,我这边查表得地址为0x080C7000
14.png
勾选Verify download,然后点击Firmware Upgrade
15.png
稍等片刻,你会得到如下两个提示,表示协议栈升级成功
16.png
如何查看协议栈版本?
当前还没有一键查询协议栈版本的方法,只能自己手动去内存中某个地址找,接下来我会讲一下怎么找
点击read fus infos时,下方框中会有一个地址
17.png
查找该地址处的内容
18.png
1020000表示FUS版本为1.2.0
010D005表示协议栈版本为1.13.0

, X( a+ o) t% q' M' k5 x' u& ^
三.以USB方式升级
Dongle上的SW2要拨到1,插上电脑,打开STM32CubeProgrammer,按下图方式连接 19.png
% b. ]" ^0 P9 N% B! T% T
连接后,我们要找到如图所示文件夹
20.png
里面有一个“0x495_FUS_Operator.bin”文件,这个文件就是刚才我们点击Start FUS时所用到的固件,因为现在用USB连接,那个按钮灰了,所以我们手动下载这个固件到芯片中,用于启动M0+核
21.png
下载好后,就可以查看FUS版本了
$ {. N9 R- L6 o$ c5 I& N0 r4 Q 22.png : s6 @0 }; I: k
随后我们升级FUS,套路和之前一样,升级成功后只有一个提示框
25.png
升级后的FUS版本
24.png 8 x$ C. E" s, U! A) i
接下来升级协议栈,和之前一样的套路,但这里有点小问题,文档说要勾选Verify download,但是我勾了没成功,不勾选就成功了,很奇怪。
25.png
查看协议栈版本号和之前一样,找到地址
26.png
27.png
01020000表示FUS1.2.0;010D0005表示协议栈1.13.0。

* v/ g0 I# w! I
至此升级FUS和协议栈已经完成,大家可以去cubemx中找到下图两个demo给两个板子下载,就可以运行出厂时的demo(demo具体怎么玩见包装盒背面GETTING STARTED中的说明)
QQ截图20211229183244.jpg

" ?" r' B, E& ]$ ^; j% L3 D0 m# w' {0 _
赞 收藏 评论3 发布时间:2021-12-29 15:56

举报

3个回答
0.00.0 回答时间:2024-8-9 14:26:07

cf6d8dd31970e3ecab7437ad81efbf6.png

0.00.0 回答时间:2024-8-9 14:26:37

<br /> <br />

请问为啥我这个没有start FUS啊

小萝卜啦啦啦 回答时间:2024-8-10 09:49:48

<br /> <br />

你的软件版本是多少?可能新版的ST调整了按钮或者要做其他操作?

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版