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

新一代烧写工具 - STM32CubeProgrammer

[复制链接]
STMCU-管管 发布时间:2020-11-4 17:41
  W9 W, V. K- h1 ~8 A5 k% i5 H
# v& [- V$ E# e" P# O3 M
1.png
  j2 l1 w3 E  {9 c% v- h
STM32CubeProgrammer(STM32CubeProg)是STM32微控制器的专用编程工具。
* y" ]8 v% Q7 O' ZSTM32用户都知道,当完成程序调试,需要对芯片进行程序代码烧录编程,一般会有三个选择:, b4 [) Y3 H. V
通过调试接口【JTAG/SWD】来烧写程序,一般要使用STLink Utility或STVP工具软件来完成;& t- p2 B4 j* e6 o3 S3 K
通过UART接口来烧写程序,需要下载基于PC端的flash 烧录工具软件STM32 Flash loader demonstrator配合;
5 Y" `: i" e9 E* M' M6 j. O* o: ]通过USB接口来烧写程序,需下载USB DfuSe工具软件来实现。
. ~: ^7 W; z" p
2017年底,ST推出了多合一烧录工具STM32CubeProgrammer,以其高集成度支持上述三类编程接口,还兼具其它更多功能。. g; C6 R! ^, M
STM32CubeProg 不断迭代,至2020年10月,更新至最新版 STM32CubeProgrammer 2.5.0(点击即可下载),增添更多新功能。
. ^2 k2 I2 L& O9 Q' ~) w( E
STM32CubeProgrammer 主要功能
) ^5 [. n* T, Q% }" a# \( e& t( C6 N
STM32Cube 软件家族中的 STM32CubeProgrammer 是 STM32 MCU 专用编程工具。它支持通过STLink的SWD/JTAG调试接口对STM32 MCU的片上存储器进行擦除和读写操作;或者通过UART,USB, I2C,SPI,CAN等通信接口,利用出厂时固化在芯片内部的系统bootloader,对STM32 MCU的片上存储器进行擦除和读写操作。这里需要说明的是STLink v2仅支持通过UART和USB通信接口对片上存储器进行操作,而STLink v3增加了SPI,I2C和CAN通信接口的支持。除此以外,STM32CubeProgrammer 还可以操作STM32 MCU的选项字节和一次性可编程字节。通过 STM32CubeProgrammer 提供的或者自己编写的外部 external loader,还可以对外部存储器进行编程。
( ?$ c  Z# `% y1 I# Y5 I  L; b8 c$ f! u4 |
/ J& t' U- W8 P2 `& S' F
STM32CubeProgrammer 提供了图形化和命令行两种用户界面。此外,STM32CubeProgrammer 还提供了C++ API, 用户可以将 STM32CubeProgrammer 的功能集成到自己所开发的PC端应用中。
8 k2 p/ z5 ~' ?+ ~- |( C
2.png
▲ STM32CubeProg的图形化界面
6 b* Q/ V" X( B: I+ ~
1 p3 |) A, m7 [2 L( R7 g- X
图形化用户界面如上图所示,在右侧的配置区域,用户可以选择通过STLink调试接口,或者USB、UART等通信接口连接到STM32微控制器。连接到STM32 微控制器后,在“Device information”区域可以看到当前MCU的型号,版本和Flash大小等信息。如果连接的是ST官方的开发板,还会显示该开发板的名称。0 h- M- W/ {6 Q! R5 k
! V# q, a' S+ K; f/ Q7 G

% ~5 Q3 c& T# h那么,这里显示的信息都是来自哪里呢?其中“CPU“型号,也就是内核型号,从内核的CPUID 只读寄存器读得,该寄存器的说明在各个芯片系列对应的编程手册中可以查到,比如STM32F7对应的编程手册PM0253;芯片型号”Device ID“和芯片版本”RevisionID”分别来自STM32MCU的DBGMCU_IDC只读寄存器中的Device ID字段和Revision字段。Flash大小“Flash size”的值,可以从系统Flash的Flash size只读寄存器中读到。这些寄存器的说明都可以在各个芯片系列对应的参考手册中的“调试支持”和“设备电子签名”章节找到,比如STM32H743的参考手册RM0433。开发板名称“Board”对应的信息,存储在板载的STLink中,所以只有用ST开发板自身板载的STLink进行连接时才能看到这个信息。
% b  y' B5 R7 [1 g
  I3 K* D; I/ u  k. Z4 q& `  @* d. Y
& L' Q9 Y' p4 Z
在STM32CubeProgrammer最左侧一栏可以在不同的功能标签页之间切换,进行不同的操作。
8 o4 n4 J. g9 I3 Z" U
' L+ u/ u4 L; b
; ?% x; f5 {: x) P
接下来,我们会对STM32CubeProgrammer的主要功能进行介绍,关于STM32CubeProgrammer的具体操作步骤,请参考”UM2237-STM32CubeProgrammer软件工具介绍”。
# A& c6 x8 O2 n

7 m- ^0 Y8 d4 I% ^$ l片上擦除和读写
6 a' w' g3 D' M5 TSTM32CubeProgrammer支持按扇区对Flash进行擦除和全片擦除。可以导入多种格式的执行文件进行烧录,支持的文件格式有:二进制文件(.bin),elf文件(.elf,.axf,.out),hex文件(.hex)和摩托罗拉的S-record文件(.srec)。
3.png 1 x. \$ K& c% B7 L; r9 O

2 h2 O" Y( ~" h7 e( t擦除操作
& J$ g  i  p$ h' H通过STLink与目标MCU建立连接后,在“Erasing&Programming”页面下,可以按扇区对flash进行擦除,或者选择“Fullchiperase”按钮,进行全片擦除。
3 Q( v- {# \  N* ?- j9 M4 ]/ K6 o# U1 ^: Z, B" s7 A3 _8 o

, a# Q# q, d' R! I7 G烧录操作
* f& H- F. l' f0 K在“Erasing&Programming”页面下,点击“Browse”按钮导入可执行文件,然后点击“StartProgramming”进行烧录。' U' ~7 o: h! `) k9 j0 o
也可以在“Memory&fileedition”页面下,打开要烧录的可执行文件,然后点击“download”进行烧录。. t5 T; b$ A2 u/ ?5 d8 P  y
在“Memory&fileedition” 的“Device Memory”页面下,还可以读出当前指定地址范围的MCU存储器值,并通过“SaveAs”菜单将读出的内容保存为二进制文件(.bin), hex文件(.hex)或S-record文件(.srec)。
" e  S! r) l$ f* e1 v除了前面介绍的烧录整个可执行文件的方式以外,还可以在“Memory&fileedition” 的 “Device Memory”页面下直接修改某个地址的值,”回车”后STM32CubeProg会自动完成读出-修改-擦除-回写的操作。对于一次性可编程(OTP)字节就可以通过这种方式进行编程。
/ w6 U& ]" v9 B
8 @) Z; o  s$ U* [! w& \
' P# r2 m6 f4 o; L6 R
选项字读写. T3 N& T# z) e7 s' ^6 }! m
点开OB页面后,可以看到当前所连接MCU的选项字的设定情况。用户可以在这里修改选项字的值。具体选项字的说明,请参考对应MCU的参考手册。

0 e$ E) m  Z4 X4 k3 ]% t
4.png ; f9 {4 S$ b- a+ S* {  q
“二合一”烧录, N+ w0 J6 v; N# K2 f9 }! h6 U& I
使用 “Erasing&Programming” 页面下的“二合一”烧录模式,可以在一次操作中完成FLASH和选项字的烧录工作。选项字的配置使用STM32CubeProgrammer命令行的 “-ob” 命令。
  I, ]4 b" o4 f( b$ J
5.png
: Q, _8 }; Y6 `

/ H% n2 g. k. R  z9 B举例说明,现在要在烧写完Flash后,设置读保护为level1。可以按以下步骤先进行设置:% W7 H+ U# a7 }9 C! ?* w
设置好要下载的可执行文件路径
) O; b: [/ n) H6 n) ^; W勾选 “AutomaticMode” 下的 “Fullchip erase” 和 “Downloadfile”6 I, @& o& w. s& z
在 “Optionbytes commands” 的输入框中输入:“-ob rdp=0xBB”5 u3 l, y; a  F* P7 F+ z
然后点击 “Start automatic mode” ,STM32CubeProgrammer就会开始按顺序执行上述的操作,同时在Log窗口显示整个执行的过程和进度。2 C" d6 N6 m# X6 {4 m6 X! @
关于选项字命令 “-ob”的格式说明,可以参考UM2237(用户手册STM32CubeProgrammer软件工具介绍)的3.2.15章节。但“-ob”命令中OptByte字段的定义在UM2237中没有说明,可以有两种方法来查询:一种是通过STM32CubeProgrammer图形界面下“Optionbytes”标签页中的“Name”一栏的名称,因为“-ob”命令中OptByte字段的定义与这里是一致的;还可以通过“-ob displ”命令来显示当前所有的选项字配置,从而也就可以知道各个OptByte字段的定义了。

; l" q( ~& f( p  V! m: T/ ]' X8 P3 w
3 c. c. H0 A7 q( {0 y
; k9 c/ v' e! ^/ {; L0 A6 \
外部存储器读写
% f5 m$ U  D6 l! h4 x* {如果想要对通过 SPI,FMC,QSPI等接口连接到STM32的外部存储器进行读写操作,就需要一个external loader。
1 g* _  m" `8 }9 S
7.png 7 @8 V( w  L& i- N* u6 [1 [4 t4 l
CubeProgrammer 默认提供了STM32开发板上集成的外部存储器对应的external loader。
5 s3 Y8 V9 g" x+ s  L  S( M用户如果使用了其他型号的存储器,也可以自己生成external loader文件(*. stldr),详细操作请参考 UM2237 的第2.3.3章节。
- z$ _! e: P6 U4 n在对外部存储器进行操作前,必须先在 “External Loader” 页面下,选择对应的external loader,该external loader会在接下来对外部存储器的操作中用到。然后就可以在 “Erasing&Programming” 页面和 “Memory&fileedition” 页面下进行擦除和烧写的操作了。2 F' N- B! U4 A/ v! A+ d% d+ u
& B# q  a8 M6 P
Bootloader4 h# W8 r4 }3 V6 k2 q2 X
STM32MCU出厂时,内部的系统memory就已经烧好了bootloader,提供通过USART,USB,I2C,SPI,CAN等接口更新片上Flash的功能。
- O& |. V. P; M2 T) Q. R( z4 M
8.png
+ j9 ~1 Z. Z% ?+ H8 ^7 f% O

! {( l% Y, W: t1 V0 J

2 C- d8 B- d% I' Y+ S不同STM32MCU型号支持的bootloader接口有所不同,具体可以参考应用手册AN2606。STLink v2或者STLink v3提供了从USART,USB,I2C,SPI和CAN等通信协议到USB的桥接接口,STM32MCU可以通过STLink v2或者STLink v3与PC端建立连接。而STM32CubeProgrammer则提供了PC端的操作界面,可以通过bootloader对片上Flash进行擦除和烧录。STLinkv2只提供了USART和USB两种通信接口,而STLink v3增加了I2C,SPI和CAN通信接口的支持。ST原来提供有两个独立的PC端软件:“STM32Flash loader demonstrator”和“Dfuse Demo”,分别支持USARTbootloader和USBDFU功能,现在只需要使用STM32CubeProgrammer一个软件就可以支持所有这些通信接口了。  m+ `* a0 Z8 R6 h, s. q9 Q
SWO信息输入窗口5 A1 Z* v( J. `! V
我们在做开发的时候,经常会需要输出一些调试信息。
) C: c+ H( }2 I/ F# @
9.png ) |( m8 r* g6 r+ k! @
+ d5 h- ?2 s1 H/ u  M
常用的方法就是通过重定向printf到串口来进行打印,这种方法需要占用一路串口。还有一种方法就是将printf重定向到SWD调试接口的SWO口,通过SWO来输出调试信息。STM32CubeProgrammer的SWV窗口可以显示SWO发送的调试信息,并且可以将所有接收到的信息保存在指定的“.log”文件中。8 j, Y" z) @. y) i
7 Y- A& y+ R, S7 @

! t5 p/ I7 D4 e, }5 I命令行界面. o2 ~5 U8 N! A9 H
STM32CubeProgrammer提供命令行界面,可以通过执行指令的方式实现大部分STM32CubeProgrammer的功能。

3 H+ z( h& T+ r! g
10.png
: I3 K5 P; e' r' Y+ S$ h0 R4 L2 q

' q2 j# M' ?( v. C$ hSTM32_Programmer_CLI.exe 可执行文件在 STM32CubeProgrammer 安装路径下的 bin 文件夹下,执行 STM32_Programmer_CLI.exe 可以看到所有支持的指令及参数说明。
+ S( S: I( ]0 O& h命令行界面还提供了一些在图形化界面不具备的功能,例如:创建可信任包,安全烧录,计算 CRC 值等功能。详细说明请参考 UM2237。$ L' V, T2 T8 Y8 P, a  V
图中举了一个通过SWD接口连接目标芯片并设置读保护级别1的例子,通过 “-c” 指令先与目标芯片建立连接,再通过 “-ob” 指令修改读保护的级别,完整的命令行指令为:STM32_Programmer_CLI.exe-c port=SWD -ob rdp=0xBB。
' L3 S* @: z1 w! S3 L3 W  K& P) F" D' j! T
; F3 b9 v8 U6 p
STLink固件更新
: B: L* g& O, _将STLink调试器连接到电脑后,打开 STM32CubePorgrammer,刷新 STLink 连接就可以看到当前 STLink 的固件版本。点击 “Firmwareupgrade” 按钮,打开 STLinkUpgrade 工具可以对 STLink 固件版本进行更新。
* M# F4 C* O; w
11.png 8 _+ m+ Y  U; ^6 q; A$ V
STM32CubeProg 相关资源
如何找到STM32CubeProg
12.png
; ]! r4 s5 h3 e* w  d9 J) Q) a
如上图,在浏览器地址栏中输入www.st.com/stm32cube,可以直接打开 STM32Cube 的主页面。以这个页面作为入口可以快速地找到 STM32Cube 生态系统下的所有软件工具和软件包,STM32CubeProgrammer 也在这其中。
' @! Q% S! X2 u- S
7 D* J5 c6 n6 o, [, r% e/ c6 z
: r9 H1 p. g# M. M( a
此外,直接在搜索栏搜索关键字“STM32CubeProg”也可以找到 STM32CubeProg 的主页面。在STM32CubeProgrammer页面的Overview标签页下有对STM32CubeProgrammer的介绍以及下载链接,在 Documentation 标签页下可以找到其相关的文档。( {( C3 R+ y1 F3 ^  h- l* _; j

2 @* P9 h- p% I9 j2 |( `/ h

6 g3 K1 y6 p; }1 O  [
! @$ g% Y1 f9 I2 d
# L, r* l' k  V8 t" N
用户手册及应用笔记
8 ?: m  F+ {2 GUM2237 用户手册《STM32CubeProgrammer软件工具介绍》:本文档为通用文档,面向所有STM32产品,是关于 STM32CubeProgrammer 的详细使用说明以及命令行的命令用法说明;' p. L/ x  V9 E
' ]! R+ y: o1 w3 R4 L0 L  Z

% z/ ?: U$ G3 g) ZUM2238 用户手册《创建STM32受信任包软件工具介绍》和 AN5054 应用笔记《通过STM32CubeProgrammer进行安全烧录》:与安全有关,介绍如何创建可信任包以及如何进行安全烧录。$ C& B' f/ E" _+ ?' B
8 J7 s; T+ g# i9 v" @
! |" W" {: o4 }  N2 o
UM2543 用户手册《STM32MP1系列签名工具介绍》和 UM2542 用户手册《STM32MP1系列密钥生成器软件介绍》:STM32CubeProgrammer还集成了”STM32MP1系列密钥生成器”和“STM32MP1系列签名工具”,通过命令行对应的指令,可以生成ECC密钥对,并对固件进行签名。具体使用方法请参考上述两篇用户手册。
+ N+ @* O" Q# B& I! x: M6 k  i* |0 s  Y; F! e% t
9 C3 i6 q) u5 j! {- C0 N
收藏 1 评论1 发布时间:2020-11-4 17:41

举报

1个回答
飞羽喜欢开发板 回答时间:2022-10-5 20:03:22
管管大人,谢谢你。因为有这篇文章,我折腾了半个月的keil无法烧录问题才告一段落。谢谢,真的谢谢。
$ p) d8 P1 J9 X/ K  I% U
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版