本帖最后由 STM新闻官 于 2024-1-25 16:31 编辑
01前言 很多人以为使用STM32CubeIDE的时候就不能同时使用 STM32CubeProgrammer ,其实不然。ST-LINK 共享模式功能很早就已经具备,但是很多人并没有在意。
STM32CubeProgrammer 和 STM32CubeIDE 都能够使用ST-LINK共享模式。使用ST-LINK 共享模式,在使用 STM32CubeIDE 单步调试时,也可以使用 STM32CubeProgrammer 查看寄存器、内存以及选项字节。
02ST-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。
我们可以看到UM2609 中说得更加详细。如下所示,它提到了,ST-LINK 共享模式的原理是使用ST-LINK Server;在共享模式下,STM32CubeIDE 和 STM32CubeProgrammer 可以同时使用;ST-LINK Server 的共享模式的端口默认是 7184 而且不能修改。
03STM32CubeIDE 和 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]。默认这一项是不选中的,我们需要这项功能就去打个勾。
接下来就是正常的编译,启动调试界面,让它在调试界面正常运行。我们不需要挂起 它。你看到的应该是下图这个样子。然后我们转向 STM32CubeProgrammer 窗口。如果我们不用 ST-LINK 共享模式,我们这个时候是不能使用 STM32CubeProgrammer 进行连接,因为 ST-LINK 已经被占用。如下图所示。同样共享模式不是 STM32CubeProgrammer 的默认配置。我们需要将 STM32CubeProgrammer 改成支持 ST-LINK 共享。我们不想让程序从头开始,所以这里我们使用 “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],就可以保存所 有的寄存器内容。保存的寄存器格式易于查看,带有相应的寄存器地址。
4.2. 查看选项字节 查看选项字节是 STM32CubeProgrammer 的优势。当 STM32CubeIDE 正在调试应用时,若我们怀疑某个选项字节设置不对,我们可以不必关闭 STM32CubeIDE,而直接使用 STM32CubeProgrammer 进行查看。
4.3. 文件比较 如果我们怀疑 Flash 的内容与需要下载的程序不同,同样我们在不关闭 STM32CubeIDE 的调试界面就可以使用 STM32CubeProgrammer 检查 Flash。例如:
05小结 ST-LINK 共享模式是一种很有用的功能,可以让 STM32Cube 多个工具发挥各自的特长,对同一设备在同一时间进行协同调试,可以极大的提高 STM32 开发效率。
|