我正在尝试将我为 STM32F411RE 编写的程序从我的 TrueStudio for STM32 IDE 上传到电路板本身。该板通过 mini USB b 电缆连接,目的是通过 SWD 对其进行编程。
设置
Atollic 提供了一个很好的教程,介绍如何通过其 TrueStudio IDE 和 ST-Link_CLI(命令行界面)执行此编程,如此链接中的文档所述。这需要以下步骤,我已多次遵循并检查:
首先,输出(二进制)文件需要是 intel .HEX 而不是 TrueStudio .elf 默认值。要更改此设置
Project properties -> c/c++ build -> settings -> tool settings tab -> other -> Output format
并勾选“转换构建输出”选项,请确保在下拉列表中选择了 Intel Hex 选项。要从 IDE 内部调用 ST-Link_CLI,需要进行外部工具配置。为了进行这个配置,我去
Run -> External Tools -> External Tools Configurations ....
创建一个新的配置,我们称之为 ST-Link_CLI。
对于工作目录,我指定我的 ST-LINK_CLI
(C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility
)的目录,
而对于位置,我指定此目录和文件名
(C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe
)。
最后,我添加了以下参数来识别 STM32 板,让它通过 SWD 连接并处于复位状态,同时告诉它上传由 TrueStudio
(-c ID=0 SWD UR LPM -P ${project_loc}\Debug\${project_name}.hex -v
) 构建的 .HEX 文件。
输出
当我通过Run -> External Tools -> ST-Link_CLI
刚刚创建的链接调用这个外部工具配置时,我得到下面列出的输出:
STM32 ST-LINK CLI v3.4.0.0
STM32 ST-LINK Command Line Interface
ST-LINK SN: 066EFF525750877267092042
ST-LINK Firmware version: V2J33M25
Connected via SWD.
SWD Frequency = 4000K.
Target voltage = 3.3 V
Connection mode: Connect Under Reset
Reset mode: Hardware reset
Debug in Low Power mode enabled
Device ID: 0x431
Device flash Size: 512 Kbytes
Device family: STM32F411xC/E
Loading file...
Unable to open file!
显然,从 IDE 内部成功调用了 ST-Link_CLI,但它无法消化 .hex 文件(在调试文件夹内)并将其上传到 STM32 板。
即使从 CubeMX 刷新一个全新生成的项目并设置上述选项(包括将其设置为 .hex 文件)也不会让该工具链将其上传到板上。
手动刷码
我已经能够通过使用 ST-Link GUI 手动将 TrueStudio 构建的 .HEX 文件上传到 STM32 Board 成功上传,所以我认为问题不在于 ST-Link 本身。但是我不能以这种方式调试它,因为我需要 TrueStudio IDE 工具,因此需要外部工具配置才能成功工作。
相反,我怀疑问题出在我自己的设置上,不知何故缺少通话或选项设置不正确。也可能是 GUI 和 CLI 客户端以完全不同的方式运行,允许一个读取和上传文件,而另一个不能,但这对我来说似乎不合理。
但是,我在这里有点不知所措,因为我似乎无法弄清楚为什么其他人可以通过提供的 Atollic 文档来完成这项工作,而我却抛出了这些错误。