标签: openocd

通过OpenOCD实现STM32读出保护

STM32系列微控制器具有读出保护功能,因此无法通过调试接口(JTAG或SWD)读取专有代码.

使用OpenOCD,如何通过SWD/JTAG接口启用/禁用读出保护?RDP读出保护有多安全?

如果可能,请给出对整个STM32系列有效的答案.

embedded stm32 openocd

6
推荐指数
1
解决办法
7610
查看次数

STDOUT 与 GDB、OopenOCD 和半主机的结合在哪里?

我试图找出 ARM (STM32042) 上的 semihostong。printf如果我openocd直接从命令行运行并gdb通过 TCP连接到它,我可以看到输出。但是如果我openocd从内部启动gdb,输出会在天空中出现一些大的 /dev/null 。

如果我openocd

$ openocd -f interface/stlink-v2-1.cfg -f target/stm32f0x.cfg
Run Code Online (Sandbox Code Playgroud)

gdb像这样连接到它

(gdb) target remote localhost:3333
Run Code Online (Sandbox Code Playgroud)

printfopeocd终端看到输出。但是,如果我按照此链接的建议openocd从内部启动,gdb

(gdb) target remote | openocd -f interface/stlink-v2-1.cfg -f target/stm32f0x.cfg -c "gdb_port pipe"
Run Code Online (Sandbox Code Playgroud)

我看到了所有openocd调试消息(例如,xPSR: 0xc1000000 pc: 0x08001648 msp: 0x20001800, semihosting),但没有看到我的printfs。

gdb arm openocd semihosting

6
推荐指数
1
解决办法
316
查看次数

如何使用 OpenOCD 同时与两块 STM32 板通信?

假设我有两个 STM32,并且我在这里使用这个编程器。

我想连接到它们两个并独立调试/刷新/迭代。

所以,我的设置如下:

硬件

PC |-> USB1 -> ST-LINK-Programmer1 -> STM32_Board1 |-> USB2 -> ST-LINK-Programmer2 -> STM32_Board2

SW

我通常用一块板来做这件事的方法非常简单。

openocd -f config.cfg

这是我调用的配置文件:

source [find interface/stlink-v2.cfg] transport select hla_swd source [find target/stm32f4x.cfg] reset_config none

然后,在另一个终端中,我像这样调用arm-gdb:

arm-none-eabi-gdb build/FW.elf

在 ~/.gdbinit 中,我有这一行:

target remote localhost:3333

什么不起作用

这是非常明显的...我为第一个 OpenOCD 使用端口 3333,但第二个实例尝试使用相同的端口并失败

Error: couldn't bind tcl to socket: Address already in use

我尝试过的

我已经查看了此处的文档,但我无法了解如何在我的config.cfg文件中调用这些选项。

我还尝试将有关 tcl_port 和 gdb_port 的这些命令添加到实际的命令行参数中,例如 openocd -f config.cfg -c tcl_port 4444,但这也不起作用......套接字仍在使用中。

我真正的问题

这样做的正确方法是什么?配置 …

debugging gdb arm stm32 openocd

5
推荐指数
1
解决办法
5680
查看次数

Gdb无法连接stm32上的OpenOCD

尝试在 STM32L476 Nucleo-64 板上调试我的示例眨眼 LED 代码,但 gdb 无法连接到 OpenOCD(连接几乎立即因错误而断开)。我到处读过很多帖子,但没有一个有帮助。尝试使用 -c 添加命令到 OpenOCD,但行为没有改变。

我的代码在 Eclipse 的发布和调试配置中进行编译。我可以使用拖放功能刷新 bin 文件(虽然该板具有内置 STLink 插件),并且看起来代码在板上完美运行(LED 闪烁)。

在Centos7上使用以下版本进行交叉编译:

  • 工具链(gdb):gcc-arm-none-eabi-8-2018-q4-major
  • OpenOCD:0.10.0-11-20190118-1134

由于使用 eclipse 不起作用,我尝试了命令行,

(我在这个环境中不是经验丰富的开发人员,所以我找不到比 stm32l4discovery.cfg 更接近我的 stm32l476 板的配置文件,如果使用它可能出现一些问题,请告诉我)

./bin/openocd -f scripts/board/stm32l4discovery.cfg -c "init"
Run Code Online (Sandbox Code Playgroud)

开始,

GNU MCU Eclipse 64-bit Open On-Chip Debugger 0.10.0+dev-00462-gdd1d90111 (2019-01-18-11:37)
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
adapter speed: 500 kHz
adapter_nsrst_delay: 100 …
Run Code Online (Sandbox Code Playgroud)

gdb stm32 openocd

5
推荐指数
1
解决办法
1万
查看次数

如何使用OpenOCD ping芯片(检测是否连接了芯片)

1.问题解释

我正在尝试将OpenOCD用于不常见的事情。除了连接芯片,我只想检测芯片。
我想到的过程将如下所示:

  1. 使用参数作为探针的配置文件(例如stlink.cfg)启动OpenOCD -f。因此,OpenOCD知道要使用哪种探针,但不知道它将找到哪种芯片。

  2. OpenOCD检测到芯片并以某种方式报告该错误(例如,向stdout写一些东西)。如果可能的话,此操作不应对芯片造成干扰(例如将其重置)。

  3. OpenOCD关闭。

以下是有关该过程的更多说明:

注意1:如果OpenOCD没有达到服务器状态(我需要设置Telnet或GDB客户端才能与其进行交互),那将是很好的。我很乐意以更方便的方式获得芯片检测报告,例如在stdout通道上获取芯片信息。

注2:检测不应对芯片造成干扰。但是,如果OpenOCD找不到任何东西,我希望有一种备份方法,其中OpenOCD尝试更积极地查找芯片(例如按住nRST销)。如果需要,我可以自己调用其他方法(因此,无需OpenOCD自动执行此操作)。

注意3:首先,我将仅在具有STLinkV2或STLinkV3探针的STM32芯片上应用此“芯片检测”功能,然后再将其应用于其他探针和芯片。

注4:某些板仅具有SWD连接(无JTAG)。

注意5:我正在Windows 10计算机上工作,并从https://www.playembedded.org/blog/download/下载了最新的OpenOCD版本(版本0.10.0_dev00921,于2019年7月6日构建)。

 

2.到目前为止我尝试过的

Tommy Murphy先生向我介绍了OpenOCD参考手册中的10.7节(请参阅http://openocd.org/doc/pdf/openocd.pdf)。我已经阅读了本节,并观察了以下示例:

# openocd.cfg file
# -----------------
    source [find interface/olimex-arm-usb-tiny-h.cfg]
    reset_config trst_and_srst
    jtag_rclk 8
Run Code Online (Sandbox Code Playgroud)

因为我的芯片通过STLink探针连接并且使用SWD传输协议(而不是JTAG),所以我对该示例进行了一些修改:

# openocd.cfg file
# -----------------
    source [find interface/stlink.cfg]
    transport select hla_swd
    reset_config srst_only
    adapter_khz 480
Run Code Online (Sandbox Code Playgroud)

我将NUCLEO_F303K8板连接到PC进行此测试。然后,在控制台中发出以下命令:

> openocd -s "C:\...\scripts" …

embedded microcontroller jtag openocd swd

5
推荐指数
1
解决办法
569
查看次数

使用 OpenOCD 闪存/运行 Altera Cyclone IV

我想使用 OpenOCD 运行 Altera Cyclone IV IP。无论我需要 quartus 提供什么文件,但执行都应该由 OpenOCD 完成。我目前正在尝试使用 sof 文件来完成此操作。quartus 供程序员使用的。

也欢迎额外的提示来刷新它。

.sof 文件是否适合与 openbcd 一起使用?

我的板子是“Altera Cyclone IV FPGA学习板EP4CE6E22C8N和USB Blaster编程器”品牌是[zrTech]

在 Quartus 中,此配置有时可用于执行它(sof 文件),但并非每次都有效。但当它开始工作时,它会继续这样做: 进入quartus设置 这就是我目前收集的似乎不错的内容(除了评论):

altera_ep4ce6e22.cfg :

interface usb_blaster
usb_blaster_lowlevel_driver ftdi
transport select jtag
set CHIPNAME ep4ce6mb
set FPGA_TAPID 0x020f10dd

jtag newtap $CHIPNAME tap -irlen 10 -ircapture 0x01 -irmask 0x3 -expected-id $FPGA_TAPID

##no errors but not sure about those 
pld init 
init

## Some stuff I tried with the errors of the results ###
#pld load …
Run Code Online (Sandbox Code Playgroud)

fpga intel-fpga openocd flashing

5
推荐指数
1
解决办法
2194
查看次数

OpenOCD一次调试多个设备

我试图在eclipse上使用openocd同时调试多个设备.我有2x STM32F303发现borards,我已将hla_serial标志设置为正确的板,但仍然没有运气.

单独的板子没问题,但是当试图调试它时,Eclipse说它在最后一个序列中的错误.

所以如果有人有这方面的经验.谢谢

eclipse debugging openocd

4
推荐指数
1
解决办法
2639
查看次数

使用 openOCD 在 Cortex-M (STM32F4) 上提取 ETB 轨迹

STM32F4 发现(Cortex-M4)有 ETB,一个存储指令跟踪的缓冲区。如何使用 OpenOCD 和片上 st-link 调试器从 ETB 中提取跟踪?

我对 SWO/SWD 有点困惑。我应该使用什么?另外,我是否需要任何额外的硬件来提取跟踪?

谢谢

embedded stm32 openocd

4
推荐指数
1
解决办法
658
查看次数

为什么我在尝试使用 openocd 连接 stlink-v2 时出现通信失败

我正在尝试使用 stlink-v2 连接到“stm32”“bluepill”来编写一些代码

每当我运行 openocd 时,它都无法连接 我的 openocd.cfg 文件如下所示

source [find interface/stlink-v2.cfg]
source [find target/stm32f3x.cfg]
Run Code Online (Sandbox Code Playgroud)

当我运行 openocd 时,这是我收到的响应:

Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match …
Run Code Online (Sandbox Code Playgroud)

embedded openocd bluepill stm32f3 st-link

4
推荐指数
1
解决办法
4927
查看次数

OpenOCD - 找不到目标/swj-dp.tcl

我在使用 OpenOCD 时遇到了麻烦。由于某些原因,OpenOCD找不到 swj-dp.tcl,但该文件存在于 C:\OpenOCD\share\openocd\scripts\target 中。

Open On-Chip Debugger 0.9.0 (2015-08-15-12:41)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
C:\OpenOCD\share\openocd\scripts\target\stm32f1x.cfg:6: Error: Can't find target/swj-dp.tcl
in procedure 'script' 
at file "embedded:startup.tcl", line 60
at file "C:\OpenOCD\share\openocd\scripts\target\stm32f1x.cfg", line 6
Run Code Online (Sandbox Code Playgroud)

错误信息

你对我有什么想法或建议吗?谢谢

debugging stm32 openocd

3
推荐指数
1
解决办法
1547
查看次数