问题标签 [openocd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
886 浏览

gdb - openocd freertos意识无法启动gdb

我有一个带有 openocd 和 arm-none-eabi-gdb 的设置,我正在尝试调试 FreeRTOS 固件。

我开始 openocd:

该命令工作正常。

然后我运行arm-none-eabi-gdb -tui,在我的 .gdbinit 结束时我有:

但是当我尝试停止<ctrl>-c并启动continue我的 fw 时,我得到的只是错误:

我错过了什么?

我正在使用 JLink Base 调试探针。

0 投票
0 回答
79 浏览

fedora-25 - 在 linux for windows 上构建 openocd 需要哪些 winusb 驱动程序

我需要为 Windows 构建 openocd。我尝试使用规范文件在 linux 上为 64 位 Windows 构建 openocd。构建成功,但是当我尝试在 Windows 上使用生成的 openocd.exe 时,它​​给了我错误

“LIBUSB_ERROR_NOT_FOUND”。

在 Windows 上,虽然我有用于编程 MCU 的 WINUSB 驱动程序,但我仍然遇到同样的错误。有人可以帮忙吗,有人也遇到同样的问题吗?

虽然如果我在 Windows 机器上通过 cygwin 构建 openocd,openocd 可以正常工作。

我的要求是仅在 linux 机器上构建。

PS:我用的是fedora fc25 linux机器

0 投票
1 回答
1996 浏览

cygwin - 使用 OpenOCD 找不到脚本文件

我正在尝试按照本教程将 OpenOCD 与我的 ST 发现板一起使用:https ://japaric.github.io/discovery/README.html 。验证 OpenOCD 安装时,出现以下错误:

命令的输出

我试过提供所有文件的绝对路径,它不起作用。我还尝试使用 scripts/board 文件夹中的脚本文件。他们显示了类似的问题,找不到文件。任何有关解决此问题的指示都会很棒。

我的主机运行的是 Windows 10。

0 投票
1 回答
1426 浏览

embedded - OpenOCD read_bank 命令要求更多参数

我们正在尝试使用 OpenOCD 读取我们的 STM32F0x 微控制器的部分内容,我们也使用 OpenOCD 对其进行编程。但是,该flash read_bank命令不像记录的那样工作。无论我们输入什么,错误都是:

例如,我们通过以下方式调用它:

其他闪存操作按预期工作,例如:

或者

该命令flash read_bank似乎很少使用。至少,这是我的谷歌搜索说的。有人知道如何使用这个命令吗?

0 投票
2 回答
1488 浏览

stm32 - OpenOCD 多个 STLink

我需要同时通过 2 个 ST-Link 连接到 2 个 STM32。我发现这里描述的这个问题

但是,解决方案对我不起作用。

ST-Link ID1:55FF6B067087534923182367
ST-Link ID2:49FF6C064983574951291787

OpenOCD 配置文件:

我得到:

0 投票
2 回答
1291 浏览

c - Openocd:将值写入闪存地址

我想使用 openocd 将特定值写入闪存中的地址。地址是0x0003FFF0。我要写入的值是0xFFFFC000.

要删除我使用的那个地址: flash erase_address 0x0003FFF0 2048

但收到一条错误消息address range 0x0003fff0 .. 0x0003ffff is not sector-aligned

为了解决这个问题,我跑去flash info 0寻找开始的地址,然后跑了flash erase_address 0x38000 2048,这很有效。

最后将值写入闪存我试过:

reset halt

mww 0x0003FFF0 0xFFFFC000

但收到此错误:

SWD ack not OK: 4 FAULT SWD IDCODE 0x2ba01477

0 投票
1 回答
479 浏览

arm - 当前上下文中没有符号“GPIOA”

我正在尝试使用 OpenOCD 和 GDB(通过 VSCode 作为可视调试界面启动)调试我的 STM32F446RE Nucleo 板,但我无法使用print.

这是我的 main.c

我有两个断点,一个在

另一个在:

我的代码运行良好(LED 闪烁工作),我可以成功进入这个主循环并在这些点停止。

我正在尝试使用print GPIOA->ODR为我的 LED 打印输出寄存器来查看它,但是每当我这样做时,我都会得到错误:

即使我已经打破了主循环,并且只要我点击继续,就可以看到 LED 正在打开和关闭。

无论我输入什么,都会发生同样的错误:

GPIOA->ODRODR是结构指向的字段的取消引用,该字段GPIOA应该是存储在 address 的值0x40020014。如果我x 0x40020014在调试控制台窗口中键入以查看该寄存器,它实际上返回正常,我什至可以看到它在每个断点上切换。

为什么print不起作用,为什么它不能识别GPIOA或其任何成员变量/地址?

0 投票
0 回答
86 浏览

arm - arm板对.bin文件没有反应

大家,我是嵌入式系统编程的初学者,我的第一个led测试程序是mini2440,是用汇编语言编写的.S文件:

编译后,我从这个程序中得到了 .bin 文件,并将其写入 mini2440 的带状闪存并打开:

我没有看到终端有任何错误或警告,但板子没有反应,所有的 LED 都是黑暗的。如果有人能向我解释这一点,我将不胜感激。谢谢

0 投票
4 回答
8763 浏览

eclipse - 最终启动序列中的错误 - STM32L476 的 Eclipse 系统工作台调试

我正在尝试为 STM32L476 调试和运行简单的汇编代码。我已经设置了 Eclipse Oxygen,在 Eclipse 中安装了最新版本的 System Workbench 插件并安装了 ST-Link 驱动程序。IDE 成功构建程序而没有抛出任何错误,但是当我连接我的 STM Discovery Board 并尝试调试时,程序抛出以下错误:

最终启动序列中的错误 - 未为设备“通用 TCP/IP”定义重置命令。

错误图像 1, 错误图像 2

我在使用完全相同的软件的 Ubuntu 17.10 和 Windows 10 上都遇到了这个错误。在阅读了一些关于类似问题的其他帖子后,我被告知检查我是否在 Eclipse 中设置了 OpenOCD 和 arm-none-eabi-gdb,并且它们已正确设置,如下图所示。

调试器设置

解决此问题的任何帮助将不胜感激。谢谢

0 投票
1 回答
878 浏览

assembly - 如何为 ARM Cortex M7 编译和调试 ASM 代码?

编辑是我无法调试的代码的最小工作示例。我找到了编译问题的解决方案。

编译问题的解决方案:添加 .syntax 统一,它停止抱怨 it 块。

不过,仍然不确定这些标志


我在使用 ARM 程序集时遇到了一些麻烦。我有一个 STM32F769NI 探索板(它有一个 Cortex M7)。

我有一个让 LED 闪烁的程序,如果我用 ST Utility thingy 闪烁它,它工作正常,我也可以用相同的应用程序运行它。

但是,我在编译时遇到了一些麻烦。一旦我介绍了与条件指令相关的任何内容(cmp、it blocks 和 BL{cond}),事情就会向南发展,但我也不知道编译汇编代码实际上需要哪些参数。目前,我正在使用

gcc -mthumb -mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -ffast-math -c -g

我没有找到任何标志 as 这似乎是汇编代码更合乎逻辑的选项。

对于链接,我使用

ld -T script.ld

它似乎适用于我目前拥有的程序,但我无法通过条件执行编译任何东西。

如果我简单地添加

它说src/main.s:59: Error: Thumb does not support conditional execution

嗯不错。因此,让我们在这两条指令上方添加一条it eq,因为那是您应该为拇指做的,对吧?

然后我得到了更多的错误

第 60 行是它的分支,第 62 行是下一条指令(它们之间的空行)。

所以,即使我的代码编译了,但似乎有些错误。wait是一个存在的标签。否则代码可以正常工作。LED 像应有的那样闪烁。

调试问题

现在关于调试。我尝试了 OpenOCD 并尝试了 ST-Utility。

使用 OpenOCD,通过 GDB 刷新芯片的所有其他尝试都会失败。此外,有时,如果我启动 GDB,它不会在开始标签处停止,而是在某个垃圾地址处停止。我也从未想过如何简单地使用 OpenOCD 运行程序。我通过tar remote :3333

使用 ST-Utility,每次都可以通过 GDB 进行刷新,但我无法使用 st-flash 应用程序进行刷新。它抛出这个错误:

tar extended-remote :4242过去常常通过 st-utility 连接到开发板。

ST-Utility 也忽略断点。我可以运行并终止程序(不能用 OpenOCD 做到这一点),但如果我设置断点并使用“运行”,它会忽略断点。如果我继续,它会挂起。我可以用 OpenOCD 做到这一点。

闪烁、运行、暂停和单步执行程序与 ST-Link 软件完美配合。

我正在使用内置的 ST-Link/V2.1。

我在 GitHub 存储库中有我的代码和任何配置文件。OpenOCD 还有一个 bat,所以你可以看到我使用的参数(我只使用 -m 来表示 st-util)。

我知道有一些我可以使用的 IDE 可以帮我完成这项工作,但我不想处理 eclipse。我对 Visual Studio Code 非常满意,我想继续使用它。

我从控制台而不是在 Visual Studio Code 中启动 GDB。

编辑:我刚刚意识到我的等待函数实际上有条件分支。这行得通,但如果我在其他地方添加条件,它就行不通了……我不知道为什么。