STM32CubeProgrammer

01、前言

很多人以为使用STM32CubeIDE的时候就不能同时使用 STM32CubeProgrammer ,其实不然。ST-LINK 共享模式功能很早就已经具备,但是很多人并没有在意。

STM32CubeProgrammer 和 STM32CubeIDE 都能够使用ST-LINK共享模式。使用ST-LINK 共享模式,在使用 STM32CubeIDE 单步调试时,也可以使用 STM32CubeProgrammer 查看寄存器、内存以及选项字节。 

02、ST-LINK 共享模式

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

STM32CubeProgrammer 

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

1.png

STM32CubeIDE 

我们可以看到 UM2609 中说得更加详细。如下所示,它提到了,ST-LINK 共享模式的原理是使用ST-LINK Server;在共享模式下,STM32CubeIDE 和 STM32CubeProgrammer 可以同时使用;ST-LINK Server 的共享模式的端口默认是 7184 而且不能修改。
2.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]。默认这一项是不选中的,我们需要这项功能就去打个勾。

3.png

接下来就是正常的编译,启动调试界面,让它在调试界面正常运行。我们不需要挂起 它。你看到的应该是下图这个样子。

4.png

然后我们转向 STM32CubeProgrammer 窗口。如果我们不用 ST-LINK 共享模式,我们这个时候是不能使用 STM32CubeProgrammer 进行连接,因为 ST-LINK 已经被占用。如下图所示。

5.png

同样共享模式不是 STM32CubeProgrammer 的默认配置。我们需要将 STM32CubeProgrammer 改成支持 ST-LINK 共享。

6.png

我们不想让程序从头开始,所以这里我们使用 “Hot plug”Mode。这样配置就完成了。我们可以得到如下图所示连接成功的样子:

7.png

04、几个调试案例

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

4.1. 寄存器抓取与保存

寄存器抓取与保存是早期 STM32CubeIDE 和 STM32CubeProgrammer 协同调试的一个典型场景。早期的 STM32CubeIDE 并不支持寄存器保存,虽然能查看寄存器,但是不能将寄存器的内容保存下来进行比较。当然现在 STM32CubeIDE 已经支持寄存器内容的保存, 并且支持运行时动态刷新。不过在文本格式上,STM32CubeProgrammer 依然更加的清晰。所以我们在使用 STM32CubeIDE 进行调试的同时,仍然有使用 STM32CubeProgrammer 来抓取寄存器和进行保存的需求。

寄存器的保存使用的菜单时高亮的[REG](Registers – BETA)。当我们点击[Read],然后 点击[Save to file]选择[All peripherals]或者[Currently displayed peripherals],就可以保存所 有的寄存器内容。保存的寄存器格式易于查看,带有相应的寄存器地址。

8.png

4.2. 查看选项字节 

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

9.png

4.3. 文件比较 

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

10.png

05、小结

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

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 82

01、前言

STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载,但是 Keil 编译器中支持该产品系列的软件 Pack 还需要一些时间才会被更新。从而,用户能够使用 Keil 编译器进行编译甚至调试,但没法直接在 Keil 环境中对新产品进行下载。对此,用户可以选择等待,也可以自行扩展 Keil 的 FLM 来支持该产品。但考虑到用户产品开发的时间限制以及新的STM32 正式 Pack 很快就会发布,更简单快速的一种解决方案是在 Keil 中直接使用STM32CubeProgammer 在进行调试前下载。

02、步骤

这里以一个 NUCLEO-H723ZG 的 CRC_Example 为例。它是 STM32Cube 包中的一个完善的工程,可以正常使用配套的 Pack 进行编译下载调试。我们只是使用这个工程说明如何直接使用 STM32CubeProgrammer 进行 Flash 下载,没有其他特别的含义。首先,在 Keil 工程界面里,选择[Flash]->[Configure Flash Tools]菜单。

1.png

图1.配置菜单

或者在工程浏览器的工程名字上点击右键,选择[Options]然后选择[Utilities]

2.png

图2.工程选项

你可以看到如下菜单,说明该工程默认使用 Pack 中的 FLM 进行下载。

3.png

图3.配置工具选项

我们将其切换成[Use External Tool for Flash Programming]。

在[Command]中选择 STM32_Programmer_CLI.exe,它会自动填上所在的全路径,例如:

C:\ProgramFiles\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\STM32_Programmer_CLI.exe 
在[Agruments]中输入使用 ST-Link 以及文件名参数,如下: 

-c port=swd -w #L 

STM32_Programmer_CLI 的更多用法,例如,在调试前修改某个特定选项字节,可以参考STM32CubeProgrammer 用户手册 UM2237。 

这里值得一提的是 Keil #L 参数的使用。为了该命令行的通用性,我们应该使用编译器工具提供的一些参数间接指向所需要烧录的路径及文件,而不是硬编码。这样,工程选项的改动,不影响该命令行;而且该命令行也可以在多个工程中复制使用。#L 以及其他类似参数的含义可以在 Keil 联机帮助中搜索 “ Key Sequence for Tool Parameters ”。设置界面如下:

4.png

图4.配置烧写指令

其中[Run Independent]的含义是,是否让 Keil 不需要等待该命令行执行完毕。我们希望按顺序执行,所以该选项没有勾上。用户可以切换此选项观察效果。

03、效果

这时候如果直接选择[Debug]

5.png

图5. 调试

则会发现 Flash 下载并没有发生。确实,这是其中不够完美的地方。但是如果选择[Download]

6.png

图6.下载

则会发现 Keil 调用 STM32CubeProgrammer 命令行进行当前工程的下载,如下所示:

7.png

图7.命令日志

然后,用户可以使用[Debug]启动调试,一切正常。所以,简单的方法就是,用户在调试前,按下 F8。这样比使用 Pack 的 FLM 并没有麻烦多少。

04、小结

本文提供了在 Keil 中使用STM32CubeProgrammer 来进行调试前下载固件的方法,适合 STM32 MCU 新产品的早期用户在使用 Keil 时进行参考。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com

围观 41

阅读本文时,请先阅读:

臻于至善,履践致远|STM32CubeProgrammer 和 STM32CubeMonitor上新,提高STM32开发效率-上

ST 近期推出新版本的 STM32CubeProgrammer、STM32CubeMonitor、STM32CubeMonitor-RF 和 STM32CubeMonitor-UCPD。许多 STM32 开发人员通过使用它们更快地将产品推向市场。所有嵌入式系统工程师都需要面对这样的挑战,为选用的微控制器或微处理器寻找功能全面的开发平台。一个设备可能有很多特性需求,设计人员如何有效地实现这些性能非常关键。因此,泛生态软件工具在推动基于 STM32 的嵌入式系统开发至关重要。让我们一起探索STM32CubeProgrammer 和 STM32CubeMonitor的新功能。

“STM32CubeProgrammer

STM32CubeProgrammer关键词,请参见“臻于至善,履践致远|STM32CubeProgrammer 和 STM32CubeMonitor上新,提高STM32开发效率-上

STM32 Cube Monitor关键词

MCU 的 “奈飞”

STM32CubeMonitor 是一个实时变量监控和可视化工具,提供支持远程连接的 Web 界面和可以创建自定义仪表板的图形界面。它确保开发人员可以通过可视化图形界面有效地监控他们的应用程序。这种基于流的编程工具使用户无需编码即可创建复杂的数据图表,使他们能够在不破坏程序代码的情况下轻松调试软件和分析行为。此外,用户可以在 Node-RED 和 ST 社区上共享他们的仪表板,以相互构建。

为了让 STM32CubeMonitor 的首次体验更加直观,ST Wiki 详细解释了开发人员如何通过两个简单的步骤监控应用程序中的变量。用户选择他们在内存中跟踪的数据起始地址及其类型。为了协助完成这项任务,我们提供了一份指南,展示了如何从 ELF 文件中获取地址,以及CubeMonitor 如何通过 STLINK 与 STM32 连接。

基于Node-RED的实时变量监控工具

跟踪寄存器、内存中的变量以及在任何给定时刻发生的无数事件难度非常大,手动监控它们的要求非常高,以至于团队通常没有资源来进行这项工作。STM32CubeMonitor 为这个问题提供了一个解决方案,并尽可能使其简单易用。用户可将可编辑的图形化节点拖放到画布上来创建流程,即一系列事件。例如,通过设置条件可以触发通过电子邮件发送警报或使用 MQTT 将数据推送到云平台的模块。

“▲
▲ STM32CubeMonitor

用户一行代码都不用输入,就可以创建图形、图表或生成仪表板,帮助他们计数器中的数据、传感器的数据以及应用程序的许多其他方面进行可视化。此外,网络服务器的存在意味着可以在任何 PC 或移动浏览器上使用这些可视化,无论是在本地网络上还是远程。此外,得益于 Node-RED 和 ST 社区,用户可以从简单地查看其他用户的仪表板开始,并通过学习其他人的示例来系统地学习。

贯穿产品生命周期的支持工具

在原型设计阶段,工程师可能会使用 STLINK ,例如目前可用的 STLINK-V3 模块之一。它将 MCU 板连接到 PC,这有助于设置 STM32CubeMonitor 仪表板并充当 Web 界面的网关。当设计人员准备好交付他们的最终产品时,他们还可以创建一段程序,该程序将通过 UART 将数据发送到 USB 端口。因此,开发人员仍然可以通过运行在PC上的STM32CubeMonitor连接到该 USB 端口来安全地监控他们的应用程序。因此,该工具提供了有助于计划升级或未来新功能的长期分析。

STM32CubeMonitor 的新功能

支持Node-RED 1.3.7

STM32CubeMonitor 1.3.0使用NodeRED 1.3.7框架,目前最新版本是1.3版本。1.3 版本带来了新的插件框架和自动执行功能节点的能力。Change/Switch 节点的更新也提高了它们的可读性。

OpenJS 基金会将在 2022 年推出新版本的 Node-RED,ST 将继续更新 STM32CubeMonitor。

新格式和符号更改通知

最新版本的 STM32CubeMonitor 能够以 CSV 格式导出数据,而不是仅仅使用专有格式。因此,用户将能够将信息导入 Excel、MATLAB 等,从而为更多的数据优化和操作打开大门。如果符号发生变化,新软件也会发出通知。简而言之,该软件通过在文件中定义变量并将它们与符号相关联来跟踪变量。但是,重新编译代码可能会使符号文件过时,从而与 Node-RED 仪表板产生差异。如果用户忘记更新符号文件,新的 STM32CubeMonitor 会提醒用户。

STM32CubeMonitor-RF关键词

STM32CubeMonitor-RF 是一款用于测试 STM32WB 微控制器的蓝牙和 802.15.4 无线性能的工具。图形用户界面有助于实现信号强度和数据包错误的可视化,而命令行界面为宏、批处理文件和其他类型的自动化打开了大门。简而言之,它借鉴了与传统 STM32CubeMonitor 相同的理念,但专注于无线性能。因此,开发人员可以快速测试他们的设计并发现问题。该实用程序还可以探测设备之间的 802.15.4 通信。试用方法非常简单,将 STM32WB 开发板通过其 USB 或 UART 接口连接到计算机,就可以开始使用该软件了。

STM32CubeMonitor-RF的新功能

STM32CubeMonitor-RF 2.8.0 是一项重大更新,因为使用了更大的数据包,无线性能提高了一倍以上。当用户在“OTA Updater”中选择“Optimize MTU size”选项时,软件工具将OTA传输从16 kbit/s增加到41 kbit/s。因此,对于开发人员来说,这是提高生活质量的必要条件。发送文件或更新设备固件是开发过程中的日常操作。更快的速度将确保开发人员更快、更高效地工作。

“▲
▲ The OTA Updater 和 Optimize MTU Size option

STM32 CubeMonitor-UCPD关键词

STM32CubeMonitor-UCPD 监控并帮助在运行 ST USB PD 堆栈的 STM32 微控制器上设置 USB-C 和供电系统。开发人员可以使用该工具监控 USB-C 接口上的交互,使用sink或source电源配置文件,并使用供应商定义的消息 (VDM)。该工具甚至具有预定义的设置,通过处理这些新技术固有的复杂性来加速开发。STM32CubeMonitor-UCPD 于2019年推出,是意法半导体 USB-C 供电生态系统不可或缺的一部分。一直以来,我们都在不断改进软件,以帮助开发人员更快地评估性能并获得认证。

STM32CubeMonitor-UCPD的新功能

STM32CubeMonitor-UCPD 1.2.0 最重要的新增功能之一是 Java 机器的集成。与本文中的其他工具一样,该软件具有安装程序所需的一切。用户在运行应用程序之前不再需要自己安装 Java。此外,用户现在可以追踪显示电压和电流、VDM、UCSI 等轨迹。新的 STM32CubeMonitor-UCPD 还可以监控电池的电气值。因此,开发人员可以跟踪更多进程并了解连接两个 USB-C 设备或使用 Power Delivery 时发生的情况。

更多资料

围观 292

参考链接:

https://blog.st.com/stm32cubeprogrammer-stm32cubemonitor/

“”STM32CubeProgrammer

行而不辍,履践致远。为了给嵌入式工程师带来全新的STM32开发调试体验,大幅提升开发感受,ST在生态建设和开发工具创新上的努力从未间断。

STM32Cube系列大家族,相信大家用得很顺手。该系列软件开发工具大家族,提供了从MCU配置、代码生成、编译以及调试,到程序烧录和监测整个软件开发流程需要的全部功能。它们各司其职,也有功能交叠,大家合力,共同给STM32开发者搭建了一个完整的开发平台。

ST 近期推出新版本的 STM32CubeProgrammer、STM32CubeMonitor、STM32CubeMonitor-RF 和 STM32CubeMonitor-UCPD。许多 STM32 开发人员通过使用它们更快地将产品推向市场。所有嵌入式系统工程师都需要面对这样的挑战,为选用的微控制器或微处理器寻找功能全面的开发平台。一个设备可能有很多特性需求,设计人员如何有效地实现这些性能非常关键。因此,泛生态软件工具在推动基于 STM32 的嵌入式系统开发至关重要。让我们一起探索STM32CubeProgrammer 和 STM32CubeMonitor的新功能。

STM32CubeProgrammer关键词

统一的体验

STM32CubeProgrammer 旨在统一用户体验。ST 将 ST-LINK Utility、DFU 等实用程序的所有功能引入 STM32CubeProgrammer,使其成为嵌入式系统开发人员的一站式解决方案。ST还将它设计为适用于所有主要操作系统,甚至集成 OpenJDK8-Liberica, 以方便安装。在体验 STM32CubeProgrammer 之前,用户无需自己安装 Java ,也不用为兼容性问题烦恼。该实用程序有两个关键组件:图形用户界面和命令行界面。用户既可以选择直观的图形用户界面进行工作,也可以选择使用命令行工具来编写脚本文件。

STM32 Flasher 和调试器

STM32CubeProgrammer 的核心是帮助调试和烧写 STM32 微控制器。因此,它也包括优化这两个过程的功能。例如,2.6 版引入了导出整个寄存器内容和动态编辑任何寄存器的能力。以往,更改寄存器的值意味着更改源代码、重新编译并刷新固件。如今,测试新参数或确定某个值是否导致错误要简单得多。同样,工程师现在可以使用 STM32CubeProgrammer 一次烧写所有外部存储器。但在以前,烧写外部嵌入式存储和 SD 卡需要开发人员单独启动每个进程。而STM32CubeProgrammer 可以一步完成。

开发人员面临的另一个挑战是解析通过 STM32CubeProgrammer 传递的大量信息。刷过固件的人都知道跟踪所有日志有多么困难。因此,我们带来了自定义跟踪功能,允许开发人员为不同的日志信息设置不同的颜色。它确保开发人员可以快速将特定输出与日志的其余部分区分开来,从而使调试变得更加直接和直观。此外,它可以帮助开发人员使用与 STM32CubeIDE 一致的配色方案,STM32CubeIDE 是我们独特的生态系统的另一个成员,旨在为开发者提供支持。

STM32 上的安全门户

STM32CubeProgrammer 是 STM32Cube 生态系统中安全解决方案的核心部分。该实用程序附带 Trusted Package Creator,它使开发人员能够将 OEM 密钥上传到硬件安全模块并使用相同的密钥加密他们的固件。然后,OEM 使用 STM32CubeProgrammer 将固件安全地安装到支持SFI的 STM32 微控制器上。开发人员甚至可以使用 I2C 和 SPI 接口,这为他们提供了更大的灵活性。此外,STM32L5 和 STM32U5 还支持外部安全固件安装 (SFIx),使 OEM 可以在微控制器外部的内存模块上刷新加密的二进制文件。

Sigfox 规定

使用 STM32WL 微控制器时,开发人员可以使用 STM32CubeProgrammer 提取嵌入到 MCU 中的 Sigfox 证书。首先,开发人员将这个 136 字节的字符串复制到他们的剪贴板或将其保存在二进制文件中。 其次,他们访问 my.st.com/sfxp,在那里粘贴证书并立即以 ZIP 文件的形式下载 Sigfox 凭据。第三,他们通过 STM32CubeProgrammer 将下载包的内容加载到 MCU,并使用 AT 命令获取 MCU 的 Sigfox ID 和 PAC。最后,开发者去 https://buy.sigfox.com/activate/ 进行注册。激活后两年有效,开发者可以在一年内每天免费发送 140 条消息。

“▲
▲ STM32CubeProgrammer

STM32CubeProgrammer 的新功能

双重认证

最新版本 STM32CubeProgrammer 2.9 现在支持双重身份验证系统,通过 JTAG 或引导加载程序为 STM32WB 上的蓝牙协议栈配置OEM的密钥。简而言之,该功能使制造商能够保护其蓝牙协议栈防止最终用户随意更新协议栈。事实上,在大多数情况下,如果开发人员知道自己在做什么,他们就可以使用 ST 的安全固件更机制升级新蓝牙协议栈。但是,制造商可能会希望使用特定版本的协议栈配置,希望对其进行保护。因此,双重身份验证系统会阻止最终用户随意使用更新机制。ST 已发布了AN5185 应用笔记以提供更多详细信息。

脚本模式

新软件对其命令行界面 (CLI) 进行了更新,以支持创建脚本。由于脚本管理器是应用程序的一部分,因此它不依赖于操作系统或其外壳环境。因此,脚本是高度可共享的。另一个优点是脚本管理器可以保持与目标的连接。使用传统的批处理文件时,STM32CubeProgrammer CLI 需要在每一步都重新连接。另一方面,新的脚本管理器可以在整个会话期间保持连接。它还可以处理局部变量,甚至支持对这些变量的算术或逻辑运算。因此,开发人员可以创建强大的宏更好地实现复杂流程的自动化。

PKCS#11 支持

现在,STM32CubeProgrammer 2.9在为 STM32MP1 加密固件时可支持 PKCS#11。公钥加密标准 (PKCS) 11,也称为 Cryptoki,是一种在低级别管理加密过程的标准。PCKS#11标准化的API 方便嵌入式系统开发人员使用相关机制,因而越来越受流行。在 STM32MP1 上,PKCS#11 允许工程师分离私钥的存储和安全秘密配置 (SSP) 的加密过程。

SSP 相当于 MPU 的安全固件安装SFI。开发人员在将代码发送给 OEM 之前,可以通过STM32CubeProgrammer 使用公私钥系统对其固件进行加密。第三方无法读取OEM的软件代码。在生产过程中,OEM 将使用硬件安全模块 (HSM),将解密的固件加载到 MPU 内部,HSM中包含固件加密密钥,这个密钥无法保护在HSM中无法被读出。到目前为止,加密 MPU 代码的开发人员可以访问私钥。但一些组织必须限制对此类关键信息的访问。解决这个问题的新方法是使用新版 STM32CubeProgrammer 和 PKCS#11,即使在开发人员的加密过程中,私钥仍然可隐藏在 HSM 中。

来源:STM32
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 67
订阅 RSS - STM32CubeProgrammer