请选择 进入手机版 | 继续访问电脑版
搜索
查看: 2435|回复: 10

[分享] STM32Cube工具,覆盖开发全过程

[复制链接]

该用户从未签到

977

主题

2066

帖子

0

蝴蝶豆

管理员

最后登录
2020-7-2
发表于 2020-5-27 10:19:27 | 显示全部楼层 |阅读模式
STM32Cube 家族的软件工具,从选型到开发/调试,到代码二进制烧录,选项字节操作,到运行监测,覆盖了全部的开发过程。它们各自有功能侧重,也有功能重叠,但是合在一起,就提供给STM32开发者,一个无缝的开发平台。

11.jpg

前面三个,STM32CubeMX,STM32CubeIDE、STM32CubeProgrammer,更加偏向开发的通用性。即,无论你的应用使用哪颗STM32系列,用于什么开发,都会用上的工具。

其中STM32CubeMX年岁最久,也是被最广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。
STM32CubeIDE,是今年4月份最新推出的,ST原厂开发和支持的IDE。一方面它继承了以前Truestudio的那一套基于Eclipse CDT 开源框架的开发、调试环境,支持众多Eclipse插件、拥有更高级的代码检阅、调试功能;一方面,把STM32CubeMX给集成了进来,作为和其他厂家IDE最大的一个区别亮点。
虽然CubeIDE可以在开发过程中,把代码烧写到STM32中进行调试,但是对STM32的片上闪存、片外闪存,选项字节的各种读、写、擦除操作,支持最到位的还是属STM32CubeProgrammer。

其中STM32CubeMX和STM32Cubeprogrammer,出来对所有STM32芯片系列,和所有应用的通用支持之外,还有一些对特定应用的支持,比如STM32Cube.AI就是基于STM32CubeMX的插件功能,来把训练好的模型部署到STM32上;还比如在安全固件升级和安全固件安装,即SBSFU和SFI操作里,STM32CubeProgrammer就启动了代码加密,HSM实例化等功能。

因此,前三个工具,除了它们的通用性外,还有应用相关的特性。

后面三个STM32CubeMonitor的变种,一个是RF,专门支持STM32的无线系列,现在是STM32WB产品。包括做用户应用、RF stack,FUS本身的OTA,测试两个WB板子之间数据收发误帧率,对BLE和OpenThread设备,收发ACI命令,进行快速的应用原型开发。

第二个,UCPD是专用于配置、监测、和分析TypeC和Power delivery应用

第三个,Power,用于低功耗测量的,需要搭配ST的PowerShield板工作。显然后面三种PC工具,都是和具有应用相关。
我们在第一期的介绍中,不会具体来讲某个工具如何使用,而是给大家一个总的picture,让大家知道我们的STM32Cube 工具有哪些,分别是做什么。具体工具的使用,我们会结合具体芯片上的某个主推应用来在后续几期来讲解。

通用功能

一、STM32CubeMX通用功能:从选型到初始工程建立

我们先来回顾一下STM32CubeMX的通用功能。以2019年7月,刚刚推出的STM32CubeMX版本5.3为例。

22.jpg

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里设置来自动联网检查,并且提供给用户一键下载。这是非常便利用户的一个小功能。

CubeIDE

二、STM32CubeIDE : 包罗万象 + 开放

STM32CubeIDE,是ST今年,2019,4月份,推出的STM32Cube工具家族的最新成员。是ST开发、维护并支持的原厂IDE。一方面,它基于Eclipse的CDT框架,集成了GCC、GDB等免费的编译器、链接器;一方面它通过Eclipse插件接口,开放对众多第三方功能插件的支持。

33.jpg

STM32CubeIDE的前身来自被ST收购的TrueStudio,它在代码浏览、查看,高级调试、诊断分析上有很多好用的小功能。我们后续会结合具体的芯片,比如G0和L4上的具体应用案例来展开。
STM32CubeIDE目前集成了STM32CubeMX,未来还将把STM32CubeProgrammer集成进去。目前的STM32CubeIDE作为一个完整独立的集成开发环境,是可以烧录应用二级制到目标STM32芯片中的;未来STM32CubeProgrammer的加入,会从对STM32的选型字节、片内、片外闪存的便利读、写访问来进一步加强。因此我们说它是个包罗万象、all-in-open的原厂支持的开发环境。同时Eclipse插件接口又体现了它的开放性,即:胶片里从插件接口出来的三条示意性的箭头。
举个例子,现在我安装了IAR的插件管理器,然后由此再导入IAR的编译和链接功能。这样我就可以在项目开发的时候,一方面使用STM32CubeIDE更加好用的代码浏览、查看功能;一方面使用IAR专业的高效编译、链接服务。Eclipse生态圈里还有很多好用的功能,我们鼓励大家把自己喜欢的插件集成进来,并分享使用心得给到大家。

软件下载
• STM32CubeMX
• STM32CubeIDE
• STM32CubeProgrammer
• STM32CubeMonitor-PWR
• STM32CubeMonitor-RF
• STM32CubeMoitor-UCPD

CubeProgrammer

三、STM32CubeProgrammer通用特性:不仅仅是四合一

44.jpg

STM32CubeProgrammer在STM32Cube工具家族里,资历比不上STM32CubeMX这个老大,但是也推出了快两年时间。它的推出是为了一站式解决STM32烧片需求。首先要澄清一下,这里说的“烧片”,不是专业的一拖几的量产烧录工具,另外这里的烧片,也不仅仅是烧写STM32的片上闪存。

首先,它集合了以前若干年他们用到的几个分散工具:STVP,STLINK-Utility,Flash Loader,DFUSE Demonstrator。也就是说,它可以通过目标STM32的JTAG/SWD等调试接口,也可以通过UART、USB通信接口来烧录目标芯片。通过调试接口,可以烧写空片;通过通信接口烧写,需要目标STM32里面有对应的bootloader,可以是来自系统闪存里的出厂固化好的bootloader,也可以是来自用户闪存上自己编写的bootloader。 选项字节的设置、修改,也可以在这里通过图形化界面,直观地操作。片外flash的烧写,STM32CubeProgrammer支持ST原厂评估板上的各种板载存储器,也通过开发的接口,可以让用户自己编写flashloader来控制自己定制版上的各种闪存。

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的秘钥安装。在后续专门的蓝牙应用中,我们会来具体介绍。

STLINKV3

四、STLINKV3:STLINK家族新生代

STLINK大家已经很熟悉了,从最早的stlink,到增加了SWV和带隔离功能的v2,然后是v2-1,-A,-B等变种。它们出现的形式,一个是单独模具的小白盒子,更多的是集成在ST原厂出品的各个STM32评估板上。

55.jpg

去年推出的STLINKV3是V2的升级版,是前者的一个超集。v2有的功能它都有,v2没有的功能,它也有。
首先是下载速度更快。stlink和PC是通过usb连接,以前stlinkv1、v2都是使用F103实现,采用的是F103的全速USB模块;现在stlinkv2使用STM32F7实现,采用的是高速USB模块,从而实现了更快速度的传输。

另外,以前的stlinkv1/v2,逻辑上除了调试功能外,还兼具USB转串口的uart bridge功能,stlinkv3在uart bridge的基础上,增加了i2c/spi/can bridge,这样搭配STM32CubeProgrammer,就是一个现成的i2c/spi/can/uart/上位机,和出厂固化在STM32系统闪存里的i2c/spi/can/uart/usb bootloader可以无缝完美对接。

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

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

五、STLINKV3 + STM32CubeProgrammer

这里是把STLINKV3和STM32CubeProgrammer搭配起来使用,作为i2c接口上位机的例子。
稍微说明一下,bridge功能在STLINK-v3的扩展板上实现,把对应跳线和nucleo-L452板子上L452 I2C接口连接;STM32CubeProgrammer上选择I2C连接,就可以和L452上的i2c bootloader通信了。

66.jpg

CubeMonitors

六、STM32CubeMonitors:应用开发和分析的好帮手

作为应用在STM32里面运行时的监测工具,STM32CubeMonitor家族,目前有三个,Pwr是用来测量低功耗应用下功耗的,动态测量范围可以低至100nA到50mA;RF是用于带无线模块的STM32应用调试的,现在支持的是STM32WB 套件板,可以用作STM32WB设备的OTA,作为上位机发送BLE、thread命令,做快速原型开发;UCPD是用于typeC上PD应用的配置和监测。
这三个PC端工具,和STM32CubeProgrammer一样,除了用户图形界面外,还支持命令行,并且它们都搭配ST的硬件板来使用。由于它们都偏向于特定应用,我们会后续根据大家的反馈和要求,做详细介绍。

77.jpg

软件下载
• STM32CubeMX
• STM32CubeIDE
• STM32CubeProgrammer
• STM32CubeMonitor-PWR
• STM32CubeMonitor-RF
• STM32CubeMoitor-UCPD


回复

使用道具 举报

该用户从未签到

5

主题

523

帖子

138

蝴蝶豆

金牌会员

最后登录
2020-7-3
发表于 2020-5-27 10:49:02 | 显示全部楼层
值得收藏
回复

使用道具 举报

该用户从未签到

0

主题

5

帖子

0

蝴蝶豆

新手上路

最后登录
2020-5-27
发表于 2020-5-27 18:24:28 | 显示全部楼层
不错不错
回复

使用道具 举报

该用户从未签到

0

主题

5

帖子

0

蝴蝶豆

新手上路

最后登录
2020-5-31
发表于 2020-5-30 10:11:00 | 显示全部楼层
很好!再改进点更好。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

49

帖子

2

蝴蝶豆

初级会员

最后登录
2020-6-28
发表于 2020-5-30 13:44:25 | 显示全部楼层
非常不错  
回复 支持 反对

使用道具 举报

该用户从未签到

19

主题

748

帖子

50

蝴蝶豆

论坛元老

最后登录
2020-7-3
发表于 2020-5-30 18:31:59 | 显示全部楼层
好资料,收藏备用。
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

1053

帖子

41

蝴蝶豆

金牌会员

最后登录
2020-7-3
发表于 2020-5-30 19:37:25 | 显示全部楼层
赞一个
回复

使用道具 举报

该用户从未签到

51

主题

3249

帖子

51

蝴蝶豆

论坛元老

最后登录
2020-7-3
发表于 2020-6-2 13:54:01 | 显示全部楼层
这一篇讲清了几个开发工具之间的联系,很详细
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

39

帖子

0

蝴蝶豆

初级会员

最后登录
2020-7-3
发表于 2020-6-8 11:17:13 | 显示全部楼层
好资料,收藏备用。
回复 支持 反对

使用道具 举报

该用户从未签到

18

主题

1048

帖子

53

蝴蝶豆

金牌会员

最后登录
2020-7-3
发表于 2020-6-8 14:33:12 | 显示全部楼层
前面三大件还是比较清晰的。
后续众多的插件介绍得少多了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2020-7-4 02:32 , Processed in 0.130221 second(s), 25 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表