我正在尝试使用 AC6 SystemWorkBench 和 ST-LINK v2 设备刷新带有 CS32F103C8T6 芯片的蓝色药丸克隆。这是一个由 STM32CubeMX 构建的项目 - 我使用的是 MacOS Mojave 机器。这是尝试刷新设备时的输出。
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 8000 kHz
adapter_nsrst_delay: 100
Info : clock speed 8000 kHz
Info : STLINK v2 JTAG v31 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.162004
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Stlink adapter speed set to 4000 kHz
Warn : UNEXPECTED idcode: 0x2ba01477
Error: expected 1 of 1: 0x1ba01477
in procedure 'program'
in procedure 'init' called at file "embedded:startup.tcl", line 495
in procedure 'ocd_bouncer'
** OpenOCD init failed **
shutdown command invoked
我用谷歌搜索并找到了一些类似的帖子,但没有运气解决它。
有人有想法吗?
MVH 奥勒·K·霍恩斯
在OpenOCD配置文件中,您需要添加:
set CPUTAPID 0x2ba01477
我从未使用过 AC6 SystemWorkbench,现在我不知道如何配置板和其中的调试适配器。所以我真的不知道在哪里寻找配置文件。
OpenOCD 附带了完整的板配置目录,通常位于目录 OpenOCD / scripts / board 中。它包含一个名为
stm32f103c8_blue_pill.cfg
的脚本,可能会在您的情况下使用。从那里开始...
设置CPUTAPID 0x2ba01477;适用于克隆版本,但不适用于正版 STM32...
改为使用:设置 CPUTAPID 0
零告诉 OpenOCD 忽略 id 号,因此任何 MCU 都可以工作......
信息来源:OpenOCD TAPs
C:\Ac6\SystemWorkbench\plugins r.ac6.mcu.debug_2.5.0.201904120827 esources\openocd\st_scripts 目标\stm32f1x.cfg
在第一个 if 语句之前添加此行
设置CPUTAPID 0
它解决了所有 openocd stlink id 错误
对于通过手动调用
openocd
命令(如 openocd -f ...
)来运行此命令的任何人,请添加 -d
标志并像 openocd -d -f ...
一样运行它。在输出中搜索 stm32f1x.cfg
。例如,对我来说,我在以下位置找到它:
Debug: 26 1 command.c:155 script_debug(): command - ocd_find target/stm32f1x.cfg
Debug: 27 1 configuration.c:88 find_file(): found /usr/local/bin/../share/openocd/scripts/target/stm32f1x.cfg
所以我可以添加
set CPUTAPID 0x2ba01477
,或者根据Johan的答案更好 - set CPUTAPID 0
到该文件的文件顶部,特别是/usr/local/bin/../share/openocd/scripts/target/stm32f1x.cfg
。我需要使用 sudo 来编辑这个文件。希望这能概括这里的解决方案。