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

STM32Cube工具,覆盖开发全过程

[复制链接]
STMCU-管管 发布时间:2020-5-27 10:19
STM32Cube 家族的软件工具,从选型到开发/调试,到代码二进制烧录,选项字节操作,到运行监测,覆盖了全部的开发过程。它们各自有功能侧重,也有功能重叠,但是合在一起,就提供给STM32开发者,一个无缝的开发平台。
4 o7 [% u, o2 s; `- R4 F' M
11.jpg
1 d1 X: T2 N) K5 P# S% _) p
前面三个,STM32CubeMX,STM32CubeIDE、STM32CubeProgrammer,更加偏向开发的通用性。即,无论你的应用使用哪颗STM32系列,用于什么开发,都会用上的工具。
; S3 Q+ ?4 ~  H6 D0 n4 w" d4 N% E
其中STM32CubeMX年岁最久,也是被最广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。
STM32CubeIDE,是今年4月份最新推出的,ST原厂开发和支持的IDE。一方面它继承了以前Truestudio的那一套基于Eclipse CDT 开源框架的开发、调试环境,支持众多Eclipse插件、拥有更高级的代码检阅、调试功能;一方面,把STM32CubeMX给集成了进来,作为和其他厂家IDE最大的一个区别亮点。
虽然CubeIDE可以在开发过程中,把代码烧写到STM32中进行调试,但是对STM32的片上闪存、片外闪存,选项字节的各种读、写、擦除操作,支持最到位的还是属STM32CubeProgrammer。
, E+ U  `, j6 K
其中STM32CubeMX和STM32Cubeprogrammer,出来对所有STM32芯片系列,和所有应用的通用支持之外,还有一些对特定应用的支持,比如STM32Cube.AI就是基于STM32CubeMX的插件功能,来把训练好的模型部署到STM32上;还比如在安全固件升级和安全固件安装,即SBSFU和SFI操作里,STM32CubeProgrammer就启动了代码加密,HSM实例化等功能。
$ w( U2 W) {# z9 k1 K3 F9 @: y) d
因此,前三个工具,除了它们的通用性外,还有应用相关的特性。
2 ~4 a  ?  V5 k$ u2 ^. C+ c
后面三个STM32CubeMonitor的变种,一个是RF,专门支持STM32的无线系列,现在是STM32WB产品。包括做用户应用、RF stack,FUS本身的OTA,测试两个WB板子之间数据收发误帧率,对BLE和OpenThread设备,收发ACI命令,进行快速的应用原型开发。

1 }  r, F8 t: y' f0 ~2 w4 G  T
第二个,UCPD是专用于配置、监测、和分析TypeC和Power delivery应用
2 y: t$ Y% h2 {8 W. C
第三个,Power,用于低功耗测量的,需要搭配ST的PowerShield板工作。显然后面三种PC工具,都是和具有应用相关。
我们在第一期的介绍中,不会具体来讲某个工具如何使用,而是给大家一个总的picture,让大家知道我们的STM32Cube 工具有哪些,分别是做什么。具体工具的使用,我们会结合具体芯片上的某个主推应用来在后续几期来讲解。

2 E8 O& ?( f' v; }8 j
通用功能
& {8 C3 I6 d* J6 ^6 T
一、STM32CubeMX通用功能:从选型到初始工程建立

; i6 M' ?8 i0 y2 ?% Y
我们先来回顾一下STM32CubeMX的通用功能。以2019年7月,刚刚推出的STM32CubeMX版本5.3为例。
( b" g7 Q" N" a& ^/ ?5 l
22.jpg

1 I8 D4 ]6 u" N; e  K1 s
STM32CubeMX集成了STM32Finder,因此可以在此进行芯片的选型或者评估板的选择。在MCU/MPU选型的页面,除了经年常用的根据内核、产品线、外设、flash/ram存储空间大小,筛选目标芯片之外,随着STM32对GUI和AI的支持,根据所用AI模型,压缩比;根据GUI应用中要支持屏幕的像素尺寸、所采用的存储功能拓扑结构,都可以作为目标芯片筛选的输入参数。MCU交叉选型,是最近新添加的功能。     当要把手中存量的非STM32项目切换到STM32平台,这个功能可以帮助你选择合适的STM32芯片来替换当前芯片。
GUI和AI选型,我们会在对应的GUI和AI应用中,结合STM32CubeMX的使用来具体讲解。  
芯片选好后,要进行开发的下一步就是对芯片引脚的功能进行配置。由于STM32的每个GPIO都被多个外设功能复用,并且同一个外设功能还可以映射到不同GPIO,因此当引脚资源比较紧张,这里的引脚分配工具可以帮助用户在多个选择中进行分配。某个引脚用于什么功能分配好了,比如PD9用于UART3的接收引脚 ,那么UART3的具体配置,比如波特率、采用同步模式还是异步模式,以及相关中断、DMA都以在此以图形界面的方式进行配置。
STM32支持丰富的开源和ST自主知识产权中间件,比如来自开源社区的FreeRTOS,FatFS,mbedTLS;ST自己的USB主机和设备协议栈,TouchGFX等。
因此除了对外设各种功能的工作模式和参数进行配置, 当我现在的应用需用用到FreeRTOS,我不仅可以勾选并使能上该组件,还可以对FreeRTOS进行配置,比如内核配置可以设置是否支持抢占、系统嘀嗒的间隔;可以在这里以图形化界面的方式创建信号量、互斥量、创建任务等。所有这里的配置,都会影响到最后产生的初始化代码。
(如何使用和配置FreeRTOS、USB协议栈这样的中间件,根据大家的需求反馈,后续会考虑推出具体讲解课程)
STM32Cube不仅是一个包罗万象的配置工具,它也是一个开放的工具。在目前最新的5.3版本,我们可以看到它已经支持若干来自ST的功能插件,比如X-Cube-AI,X-Cube-MEMS。关于AI这个插件的使用,会在十月份推出相关技术视频,请大家留意。如何使用MEMS插件,在我们的STM32 IoT课程系列的第三部分:节点端项目开发,有详细介绍。
最后一切配置完成,就可以在用户指定的路径生成出初始化代码和项目工程。这就是胶片中左面部分的整个配置流程,从选型,到最后的初始化项目生成。
在进行芯片选型时,对应的数据手册、应用文档随着显示,可以一键下载到固定目录。同样,各STM32系列对应STM32Cube MCU固件包,ST自己的功能插件,甚至STM32CubeMX工具本身,它们的新版本,都可以在STM32CubeMX里设置来自动联网检查,并且提供给用户一键下载。这是非常便利用户的一个小功能。
$ T7 U$ r3 q+ Z! \5 ]. b$ m
CubeIDE
- b* P4 G/ R& E2 s
二、STM32CubeIDE : 包罗万象 + 开放

, v1 z+ ?  [/ @/ W; W9 h6 R
STM32CubeIDE,是ST今年,2019,4月份,推出的STM32Cube工具家族的最新成员。是ST开发、维护并支持的原厂IDE。一方面,它基于Eclipse的CDT框架,集成了GCC、GDB等免费的编译器、链接器;一方面它通过Eclipse插件接口,开放对众多第三方功能插件的支持。
$ E8 D+ }, n; D  Q- a; {
33.jpg
1 U% u7 |' U: a" X5 u
STM32CubeIDE的前身来自被ST收购的TrueStudio,它在代码浏览、查看,高级调试、诊断分析上有很多好用的小功能。我们后续会结合具体的芯片,比如G0和L4上的具体应用案例来展开。
STM32CubeIDE目前集成了STM32CubeMX,未来还将把STM32CubeProgrammer集成进去。目前的STM32CubeIDE作为一个完整独立的集成开发环境,是可以烧录应用二级制到目标STM32芯片中的;未来STM32CubeProgrammer的加入,会从对STM32的选型字节、片内、片外闪存的便利读、写访问来进一步加强。因此我们说它是个包罗万象、all-in-open的原厂支持的开发环境。同时Eclipse插件接口又体现了它的开放性,即:胶片里从插件接口出来的三条示意性的箭头。
举个例子,现在我安装了IAR的插件管理器,然后由此再导入IAR的编译和链接功能。这样我就可以在项目开发的时候,一方面使用STM32CubeIDE更加好用的代码浏览、查看功能;一方面使用IAR专业的高效编译、链接服务。Eclipse生态圈里还有很多好用的功能,我们鼓励大家把自己喜欢的插件集成进来,并分享使用心得给到大家。

0 ~# q+ \* E  Q0 d
软件下载
• STM32CubeMX
• STM32CubeIDE
• STM32CubeProgrammer
• STM32CubeMonitor-PWR
• STM32CubeMonitor-RF
• STM32CubeMoitor-UCPD

3 {" D0 V* R) Q
CubeProgrammer
0 Q2 q5 J  n! k: Q! h
三、STM32CubeProgrammer通用特性:不仅仅是四合一

$ D& H% C& {6 l2 l. Y
44.jpg
( o7 L( q. z4 b8 Y# T; v
STM32CubeProgrammer在STM32Cube工具家族里,资历比不上STM32CubeMX这个老大,但是也推出了快两年时间。它的推出是为了一站式解决STM32烧片需求。首先要澄清一下,这里说的“烧片”,不是专业的一拖几的量产烧录工具,另外这里的烧片,也不仅仅是烧写STM32的片上闪存。
# g& t1 b$ b. m- v6 j- n: N
首先,它集合了以前若干年他们用到的几个分散工具:STVP,STLINK-Utility,Flash Loader,DFUSE Demonstrator。也就是说,它可以通过目标STM32的JTAG/SWD等调试接口,也可以通过UART、USB通信接口来烧录目标芯片。通过调试接口,可以烧写空片;通过通信接口烧写,需要目标STM32里面有对应的bootloader,可以是来自系统闪存里的出厂固化好的bootloader,也可以是来自用户闪存上自己编写的bootloader。 选项字节的设置、修改,也可以在这里通过图形化界面,直观地操作。片外flash的烧写,STM32CubeProgrammer支持ST原厂评估板上的各种板载存储器,也通过开发的接口,可以让用户自己编写flashloader来控制自己定制版上的各种闪存。
8 R3 |# e: L( R% J1 t6 t7 K0 n8 G" ?
STM32出厂就固化在系统闪存里的bootloader,除了刚才提到的uart和usb,还支持i2c、spi、can等通信接口。但是之前除了AN2606文档里列出了通信API,没有支持I2C、SPI的上位机,需要客户自己根据通信API来开发。现在的STM32CubeProgrammer就集成了支持i2c、spi、can通信的上位机功能。STM32CubeProgrammer是运行在PC机上,PC机器并没与i2c、spi、uart这些端口啊,如何和目标STM32通信?这就要请出我们下一个工具,STLINKV3。在此之前,关于STM32CubeProgrammer再多说一句,除了在这里列出的以图形界面提供给用户的通用烧片功能,它的命令行提供更多的功能,比如对STM32WB的FUS、RF stack的烧写、更新;对STM32WB中特殊功能CKS的秘钥安装。在后续专门的蓝牙应用中,我们会来具体介绍。
% P+ N; u8 r9 f0 k- L, Y
STLINKV3

5 k( S0 I; d: I& n. p
四、STLINKV3:STLINK家族新生代

7 ~* p$ k4 n/ D0 v3 a. a
STLINK大家已经很熟悉了,从最早的stlink,到增加了SWV和带隔离功能的v2,然后是v2-1,-A,-B等变种。它们出现的形式,一个是单独模具的小白盒子,更多的是集成在ST原厂出品的各个STM32评估板上。
  p# d7 \/ U# h# F2 b: i. z) O# l7 g/ _
55.jpg

8 M% G; W( t  F7 y; ]3 m& v
去年推出的STLINKV3是V2的升级版,是前者的一个超集。v2有的功能它都有,v2没有的功能,它也有。
首先是下载速度更快。stlink和PC是通过usb连接,以前stlinkv1、v2都是使用F103实现,采用的是F103的全速USB模块;现在stlinkv2使用STM32F7实现,采用的是高速USB模块,从而实现了更快速度的传输。
) E5 |- K1 z6 }3 ?1 u( a$ p  x
另外,以前的stlinkv1/v2,逻辑上除了调试功能外,还兼具USB转串口的uart bridge功能,stlinkv3在uart bridge的基础上,增加了i2c/spi/can bridge,这样搭配STM32CubeProgrammer,就是一个现成的i2c/spi/can/uart/上位机,和出厂固化在STM32系统闪存里的i2c/spi/can/uart/usb bootloader可以无缝完美对接。

: U& s) L# A! v. I; V
当然,用户还可以实现自己的上位机,不一定使用ST的STM32CubeProgrammer。因此,我们也提供了操作STLINK v3上各种bridge的C++源文件,以及相应例程;方便用户集成到自己开发的上位机中。

' ^# _; C- y7 b2 i; n" D& k
最后,stlinkv3也有多种物理形式出现,一个是胶片中这种单独磨具的小盒子,一种是直接集成在开发板上的F7芯片形式;还有一种是带1.27毫米间距14引脚规格连接器的STLINKv3-mini。

; V1 B3 Z' W+ w
五、STLINKV3 + STM32CubeProgrammer
1 K8 r1 e  c5 z* O5 c  l# h; w
这里是把STLINKV3和STM32CubeProgrammer搭配起来使用,作为i2c接口上位机的例子。
稍微说明一下,bridge功能在STLINK-v3的扩展板上实现,把对应跳线和nucleo-L452板子上L452 I2C接口连接;STM32CubeProgrammer上选择I2C连接,就可以和L452上的i2c bootloader通信了。

9 ^/ r" F- V- ^' _) e% F
66.jpg

: E: p  r3 X0 G: a
CubeMonitors

! C& d) V& s+ Z- ^0 S! A: b. A$ b# Y
六、STM32CubeMonitors:应用开发和分析的好帮手
: @- f! ]- l8 `' `& s  U# z  `: E9 A
作为应用在STM32里面运行时的监测工具,STM32CubeMonitor家族,目前有三个,Pwr是用来测量低功耗应用下功耗的,动态测量范围可以低至100nA到50mA;RF是用于带无线模块的STM32应用调试的,现在支持的是STM32WB 套件板,可以用作STM32WB设备的OTA,作为上位机发送BLE、thread命令,做快速原型开发;UCPD是用于typeC上PD应用的配置和监测。
这三个PC端工具,和STM32CubeProgrammer一样,除了用户图形界面外,还支持命令行,并且它们都搭配ST的硬件板来使用。由于它们都偏向于特定应用,我们会后续根据大家的反馈和要求,做详细介绍。

0 w# `+ T' T- R* z
77.jpg
# y/ p2 v+ T8 V  {# J$ o
软件下载
• STM32CubeMX
• STM32CubeIDE
• STM32CubeProgrammer
• STM32CubeMonitor-PWR
• STM32CubeMonitor-RF
• STM32CubeMoitor-UCPD
0 {, o0 V7 F/ v7 d- F+ J1 F

8 e# |! `8 r; n% Y3 R9 W5 T+ ]
收藏 9 评论10 发布时间:2020-5-27 10:19

举报

10个回答
慎微 回答时间:2020-5-27 10:49:02
值得收藏
jason-366967 回答时间:2020-5-27 18:24:28
不错不错
dbg3 回答时间:2020-5-30 10:11:00
很好!再改进点更好。
jys201801 回答时间:2020-5-30 13:44:25
非常不错  
老牛洋车 回答时间:2020-5-30 18:31:59
好资料,收藏备用。
李康1202 回答时间:2020-5-30 19:37:25
赞一个
wyxy163@126.com 回答时间:2020-6-2 13:54:01
提示: 作者被禁止或删除 内容自动屏蔽
lenghanbing444 回答时间:2020-6-8 11:17:13
好资料,收藏备用。
网络孤客 回答时间:2020-6-8 14:33:12
前面三大件还是比较清晰的。( q1 K2 C& Z) s, L
后续众多的插件介绍得少多了。
薯条大叔 回答时间:2020-6-8 20:38:04
支持支持。CubeMx用着越来越方便了

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版