首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用OpenOCD/Clion启动调试会话

无法使用OpenOCD/Clion启动调试会话
EN

Stack Overflow用户
提问于 2022-03-24 19:37:56
回答 2查看 1.2K关注 0票数 0

我目前正在尝试为嵌入式开发设置CLion。运行“build”本身将创建可执行文件,不会出现任何问题,但尝试启动调试器时会出现以下错误:

代码语言:javascript
复制
/usr/bin/openocd -s /usr/share/openocd/scripts -f /home/username/Projects/STMicroelectronics/STM32CubeIDE/workspace_1.9.0/blackpill/stm32f411ceu6_black_pill.cfg -c "tcl_port disabled" -c "gdb_port disabled" -c "tcl_port disabled" -c "program \"/home/username/Projects/STMicroelectronics/STM32CubeIDE/workspace_1.9.0/blackpill/Debug/blackpill.elf\"" -c reset -c shutdown

Open On-Chip Debugger 0.11.0
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
srst_only separate srst_nogate srst_open_drain connect_deassert_srst

Info : clock speed 2000 kHz
Info : STLINK V2J39S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 2.465774
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Error executing event examine-end on target stm32f4x.cpu:
/usr/share/openocd/scripts/mem_helper.tcl:37: Error: wrong # args: should be "expr expression"
in procedure 'program' 
in procedure 'mmw' called at file "/usr/share/openocd/scripts/target/stm32f4x.cfg", line 85
at file "/usr/share/openocd/scripts/mem_helper.tcl", line 37
Info : gdb port disabled
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Error executing event examine-end on target stm32f4x.cpu:
/usr/share/openocd/scripts/mem_helper.tcl:37: Error: wrong # args: should be "expr expression"
in procedure 'program' 
in procedure 'ocd_process_reset' 
in procedure 'ocd_process_reset_inner' called at file "embedded:startup.tcl", line 288
in procedure 'mmw' called at file "/usr/share/openocd/scripts/target/stm32f4x.cfg", line 85
at file "/usr/share/openocd/scripts/mem_helper.tcl", line 37
Error: timed out while waiting for target halted
embedded:startup.tcl:530: Error: ** Unable to reset target **
in procedure 'program' 
in procedure 'program_error' called at file "embedded:startup.tcl", line 567
at file "embedded:startup.tcl", line 530

我在Fedora 35上运行以下配置:

代码语言:javascript
复制
source [find interface/stlink.cfg]

# increase working area to 64KB
set WORKAREASIZE 0x10000

transport select hla_swd

source [find target/stm32f4x.cfg]
reset_config srst_only

我看了一下脚本(stm32f4x.cfg),错误发生在这里:

代码语言:javascript
复制
proc mmw {reg setbits clearbits} {
        set old [mrw $reg]
        set new [expr ($old & ~$clearbits) | $setbits]
        mww $reg $new
}

特别是在set new线路上。我可以通过伪造结果来迫使脚本越过这一行(结果稍后才会中断),但我不确定应该有什么内容。

我可以上传代码到我的stm32f411没有任何问题使用STM32CubeIDE,所以我知道我的计算机和设备之间的连接是工作的。这个问题似乎与OpenOCD配置有关。

我对嵌入式开发非常陌生,所以请告诉我是否有更多的信息会有帮助。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-29 00:27:14

想出了这个办法。问题在于当前版本的OpenOCD不完全支持STM32设备。ST微电子公司确实提供了他们自己的OpenOCD版本,为我解决了这个问题。

OpenOCD的自定义版本可以在这里找到:https://github.com/STMicroelectronics/OpenOCD

有了这些之后,进入OpenOCD目录并运行以下命令:

./bootstrap

./configure --enable-stlink

make

sudo make install

注意:根据需要的支持,配置标志可能有所不同。运行./configure --help查看可用选项

现在应该将OpenOCD安装到/usr/local/bin/openocd中。

我的其他配置是正常的,但我必须将reset_config设置为none,就像Tom建议的(谢谢!)

如果有帮助,下面是我的CLion设置:

票数 2
EN

Stack Overflow用户

发布于 2022-03-25 11:46:29

“无法重置目标”是您发布的内容中的关键一行。

如果没有可用的硬件重置线,请尝试更改openOCD配置,包括:

代码语言:javascript
复制
reset_config none
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71608471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档