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

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

[复制链接]
小萝卜啦啦啦 发布时间:2021-12-29 15:56
非常感谢ST中文论坛给我这个试用STM32WB开发板的机会。
( p! d5 z* C" U9 _! [
! U/ }& J) A  q' j2 W% K' W& |! j本文将和大家分享STM32WB芯片如何升级FUS和协议栈。+ a% }/ S6 E; w# P4 |
' h+ S1 `! H' R7 ]6 I
本文主要分为三个部分:①基础知识讲解、准备工作;②以SWD方式升级;③以USB方式升级5 }' w4 C0 p4 P1 n

8 T( `+ O( u' o8 J' ?& L一.基础知识讲解、准备工作
9 ^! ^( ]/ g, W/ E# ~3 _: K+ h1 [. {- r3 b' Q+ E
我们拿到一块的蓝牙芯片第一步就是需要下载蓝牙协议栈到芯片的FLASH中,WB也是如此。但它的方式会稍微复杂一点,因为他是一个双核的MCU,用户只需要负责M4核的开发,M0+核来负责RF,M0+是隔离开的,处于一个“黑盒”中,用户无法对M0+进行调试 1.png
' I) i' V3 Q% ?6 d如图,flash中有一块专用的区域给M0+使用,用户是无法直接访问这块区域的,因此向这个区域写入协议栈需要一个“跳板”,这个“跳板”就是FUS(firmware update service),M0+运行FUS后就可以对协议栈区域进行读写。- ^) O" Y" v* n- q7 P* U1 z9 g( Q

1 k8 \& C* R# L" }4 W4 h3 Y用户拿到WB芯片时,出厂会预装一个FUS(版本为0.5.3,这次最初版本的FUS),没有协议栈。而开发板因为要安装demo,所以不仅会安装FUS(版本也是0.5.3),还会安装BLE协议栈和demo程序。但不管你使用那个,到手后第一步还是要安装最新版本的协议栈(用新不用旧嘛),但是最新版的协议栈无法用老版本的FUS安装,综上,得先更新FUS到最新版本,然后才能更新协议栈。- ~/ A; {6 j+ x2 D

& L) r9 K8 N3 V* b  Z/ y关于FUS、协议栈的一些底层知识,ST有一本书有说明,《AN5185-STM32WB系列的ST固件升级服务》,有兴趣的可以去官网下载阅读,有中文版本。
3 B0 _# \0 {; z8 O
2 R5 h) O8 ?6 M/ _$ v7 C下图为WB更新FUS/协议栈的两大类方法,分别是有线和无线。前者适合我们开发时使用,后者适合产品做完后后续升级使用。今天我们只讲有线的两种方式。
1 ]7 z' {0 C. z4 y 2.png
* B5 k! E- F2 S. c# t在开始实战前,我们还得准备好软件:①安装最新的STM32CubeMX,还需要在软件中安装最新的给WB使用的Packge(目前最新的是1.13.1,我待会儿就会使用这个版本)②STM32CubeProgrammer(请务必使用2.7.0及以上版本)) |7 j7 q9 _6 [

% R) W: I6 b6 G4 G1 V9 z二.以SWD方式升级: j8 U2 {7 r# C  _! E. R  ]) c

2 v1 L1 l$ Q* w2 s/ W打开下图对应位置的文件夹(如果你的CUBEMX不是安装在默认位置,你要自己找到对应的位置)& W' O( G! @4 [( L6 v
3.png 6 n6 @/ }3 i; p# x
这里存放的就是WB5X系列芯片所需要使用的FUS文件和协议栈,文件夹里面有一个“Release_Notes.html”的文件,他详细的描述了里面各个文件所对应的功能以及如何安装,待会儿的安装步骤和对应写入地址都需要看这个文档,建议大家去仔细阅读一下,内容不多,大约几分钟就可以看完,在这里我就不一一解释了。* d; H& J# X. y' m. E+ }' [' u
# Y9 Y. f( D5 I4 W7 i/ [
Nucleo板卡的JP1连接USBSTL(板卡买来默认就是接这个位置),插上数据线,连接电脑(板卡后面有两个micro usb接口,要接ST-LINK那个接口,别接错了)
5 @! h% w! Q$ G/ E7 Y5 w& G% `  P3 ~0 V2 S: G% b
打开STM32CubeProgrammer,点击Connect  ]$ m' w( s  s- g, @: y
4.png
+ V! g8 J9 C# _4 C3 g点击下图图标
2 \! H) ^) A- L! L 5.png
. n2 I* N% G" ~" H点击Start FUS(他会给板卡的M4核下载一个固件,用于启动M0+核心,所以他会删除原先M4核的程序,请注意)
2 N8 ^: V* b# |4 f 6.png   A- ^" ]  h3 M5 o" C/ L' {2 P
等待一会儿,会弹出成功的提示框3 X$ Z4 P( U* i3 a. ?6 b
7.png
: q: t- B' B/ C9 P: F: D  v( E) B点击Read FUS infos
6 L! S! Y* ]) l6 U7 `. Y 8.png
, m5 u  P' k6 a/ ^0 y就可以看到版本号了
6 w/ L; U3 `* `( u& j 9.png
* v  }# g5 a: m2 ]* N9 t0 k出厂默认的FUS就是0.5.3$ n; B$ m  ]9 r/ x: }& _& N! C, I
0 p5 m& V! j' M6 B4 m7 l" w
我们要用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这个文件
) @" g$ c0 ]# U6 P9 T
查表可得,这个固件对应的写入地址为0x080EC000(stm32wb5x_FUS_fw.bin也是使用0x080EC000)
10.png
先选好刚才说的那个FUS文件,填好地址
11.png
点击Firmware Upgrade,等待一会儿,他会弹出下图的两个提示框,则表示升级FUS完成
12.png

1 l+ I# e' G6 t+ S
现在我们再来读一下FUS版本
13.png
已经升级到1.2.0.0了,这是当前最新的FUS版本
5 T# i; ^) d: O( h6 o; R
接下来我们来升级协议栈,我们本次以的完整版的BLE协议栈(stm32wb5x_BLE_Stack_full_fw.bin)为例,如果你的FLASH空间紧张也可以选用阉割版的BLE协议栈,或者你有Zigbee、Thread等开发需求的就选择你所需要的协议栈

& Z* E* q- x% w3 R) M0 D! `
选择你所需要的协议栈文件,并查表找对应的起始地址,我这边查表得地址为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

5 }. {6 J* @1 L3 e4 U
三.以USB方式升级
Dongle上的SW2要拨到1,插上电脑,打开STM32CubeProgrammer,按下图方式连接 19.png * z4 |& s$ e) O  Y9 ~5 n
连接后,我们要找到如图所示文件夹
20.png
里面有一个“0x495_FUS_Operator.bin”文件,这个文件就是刚才我们点击Start FUS时所用到的固件,因为现在用USB连接,那个按钮灰了,所以我们手动下载这个固件到芯片中,用于启动M0+核
21.png
下载好后,就可以查看FUS版本了+ {& ~6 r8 x; J; i( I1 s+ g+ D
22.png & J# C: t1 h, }/ x0 u
随后我们升级FUS,套路和之前一样,升级成功后只有一个提示框
25.png
升级后的FUS版本
24.png
6 p  b2 H& [$ G: ~6 g
接下来升级协议栈,和之前一样的套路,但这里有点小问题,文档说要勾选Verify download,但是我勾了没成功,不勾选就成功了,很奇怪。
25.png
查看协议栈版本号和之前一样,找到地址
26.png
27.png
01020000表示FUS1.2.0;010D0005表示协议栈1.13.0。

3 B% i7 s6 {" c# y$ g, s. G
至此升级FUS和协议栈已经完成,大家可以去cubemx中找到下图两个demo给两个板子下载,就可以运行出厂时的demo(demo具体怎么玩见包装盒背面GETTING STARTED中的说明)
QQ截图20211229183244.jpg

3 y) o+ F  V' e1 X% d& ?# X: Y3 v
- J: g4 `, L+ }: N1 p1 H' {
收藏 评论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

0.00.0 发表于 2024-8-9 14:26
![cf6d8dd31970e3ecab7437ad81efbf6.png](data/attachment/forum/202408/09/142605wojz4omo4jqij45v.pn ...

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

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

0.00.0 发表于 2024-8-9 14:26
请问为啥我这个没有start FUS啊

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

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版