[开发工具]

STM32CubeProgrammer和STM32CubeIDE协同调试的方法

[复制链接]
345|5
手机看帖
扫描二维码
随时随地手机跟帖
STM新闻官|  楼主 | 2024-1-25 16:26 | 显示全部楼层 |阅读模式
本帖最后由 STM新闻官 于 2024-1-25 16:31 编辑

01
前言
很多人以为使用STM32CubeIDE的时候就不能同时使用 STM32CubeProgrammer ,其实不然。ST-LINK 共享模式功能很早就已经具备,但是很多人并没有在意。
STM32CubeProgrammer 和 STM32CubeIDE 都能够使用ST-LINK共享模式。使用ST-LINK 共享模式,在使用 STM32CubeIDE 单步调试时,也可以使用 STM32CubeProgrammer 查看寄存器、内存以及选项字节。

02
ST-LINK 共享模式
想要发掘工具的所有潜力,一种方法是仔细阅读工具的文档。对于使用 STM32CubeProgrammer 的用户,我推荐大家将[color=var(--weui-LINK)]【UM2237 STM32CubeProgrammer 用户手册】通读一遍。对于使用 STM32CubeIDE 的用户,我推荐大家将[color=var(--weui-LINK)]【UM2609 STM32CubeIDE 用户指南】通读一遍。在读的过程中,我们能够发现这两个文档里提到 了一个 ST-LINK 共享模式。

STM32CubeProgrammer
我们可以看到UM2237 如下所示提到了 STM32CubeProgrammer 支持 Shared 配置,意思是使能 shared 模式可以允许 2 个或者多个 STM32CubeProgrammer 或者其他调试工具连接同一个 ST-LINK。这里的其他调试工具可以是 STM32CubeIDE。

STM32CubeIDE
我们可以看到UM2609 中说得更加详细。如下所示,它提到了,ST-LINK 共享模式的原理是使用ST-LINK Server;在共享模式下,STM32CubeIDE 和 STM32CubeProgrammer 可以同时使用;ST-LINK Server 的共享模式的端口默认是 7184 而且不能修改。
4405565b21b771a090.png


03
STM32CubeIDE 和 STM32CubeProgrammer 的协同调试的配置
我们先来找个简单的例子看下如何使用 ST-LINK 共享模式来进行协同调试。我们选取STM32H563的GPIO_IOToggle例程,它位于 STM32Cube\Repository\STM32Cube_FW_H5_V1.0.0\Projects\NUCLEOH563ZI\Examples\GPIO\GPIO_IOToggle。请各位读者注意,你可以选择任何例程,不限于新发布的产品 STM32H5,也不限于简单的例程 GPIO_IOToggle。而且,即使你使用的 STM32CubeIDE 和 STM32CubeProgrammer 版本比我使用的要旧,这个功能大概率已经在哪里。当然我们总是推荐你保持 STM32Cube 工具为最新的稳定版本。对于 STM32CubeIDE,我们需要在调试配置里多进行一项配置。我们可以看到如下图所示蓝色选中的[Shared ST-LINK]。默认这一项是不选中的,我们需要这项功能就去打个勾。
6317965b21b86bac35.png

接下来就是正常的编译,启动调试界面,让它在调试界面正常运行。我们不需要挂起 它。你看到的应该是下图这个样子。
8104765b21b9840e63.png
然后我们转向 STM32CubeProgrammer 窗口。如果我们不用 ST-LINK 共享模式,我们这个时候是不能使用 STM32CubeProgrammer 进行连接,因为 ST-LINK 已经被占用。如下图所示。
7256065b21ba196d74.png
同样共享模式不是 STM32CubeProgrammer 的默认配置。我们需要将 STM32CubeProgrammer 改成支持 ST-LINK 共享。
4596365b21bab871be.png
我们不想让程序从头开始,所以这里我们使用 “Hot plug”Mode。这样配置就完成了。我们可以得到如下图所示连接成功的样子:


04
几个调试案例
这里举出几个协同调试案例,供大家参考。STM32 用户若遇见 STM32CubeProgrammer 支持得更好的功能,就可以考虑协同调试的方法。

4.1. 寄存器抓取与保存
寄存器抓取与保存是早期 STM32CubeIDE 和 STM32CubeProgrammer 协同调试的一个典型场景。早期的 STM32CubeIDE 并不支持寄存器保存,虽然能查看寄存器,但是不能将寄存器的内容保存下来进行比较。当然现在 STM32CubeIDE 已经支持寄存器内容的保存, 并且支持运行时动态刷新。不过在文本格式上,STM32CubeProgrammer 依然更加的清晰。所以我们在使用 STM32CubeIDE 进行调试的同时,仍然有使用 STM32CubeProgrammer 来抓取寄存器和进行保存的需求。 寄存器的保存使用的菜单时高亮的[REG](Registers – BETA)。当我们点击[Read],然后 点击[Save to file]选择[All peripherals]或者[Currently displayed peripherals],就可以保存所 有的寄存器内容。保存的寄存器格式易于查看,带有相应的寄存器地址。
1136765b21bcb4a5a5.png

4.2. 查看选项字节
查看选项字节是 STM32CubeProgrammer 的优势。当 STM32CubeIDE 正在调试应用时,若我们怀疑某个选项字节设置不对,我们可以不必关闭 STM32CubeIDE,而直接使用 STM32CubeProgrammer 进行查看。
4516965b21bd39a7a0.png

4.3. 文件比较
如果我们怀疑 Flash 的内容与需要下载的程序不同,同样我们在不关闭 STM32CubeIDE 的调试界面就可以使用 STM32CubeProgrammer 检查 Flash。例如:
2294265b21be87f7fb.png


05
小结
ST-LINK 共享模式是一种很有用的功能,可以让 STM32Cube 多个工具发挥各自的特长,对同一设备在同一时间进行协同调试,可以极大的提高 STM32 开发效率。

使用特权

评论回复
STM新闻官|  楼主 | 2024-1-25 16:32 | 显示全部楼层

使用特权

评论回复
两只袜子| | 2024-1-26 15:14 | 显示全部楼层
学习学习

使用特权

评论回复
GlenX| | 2024-1-28 10:42 | 显示全部楼层
感谢指点!学习了!

使用特权

评论回复
weiwei4dk| | 2024-1-30 14:39 | 显示全部楼层
不错,看了下新版本是支持的,还没来得及升级最新版

使用特权

评论回复
zwsam| | 2024-1-31 21:51 | 显示全部楼层

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

503

主题

632

帖子

17

粉丝