问题标签 [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 投票
2 回答
625 浏览

gdb - 与 Hawkboard 和 OpenOCD 一起使用的 JTAG 仿真器?

我想尝试使用Hawkboard进行裸机 ARM 编程,但部署过程看起来很糟糕。我对此完全陌生,所以我可能会误解说明,但看​​来我必须使用一个名为 AISgen 的程序来转换二进制文件,然后通过 UART 使用 u-Boot 引导并将 AIS 二进制文件复制到内存中。不仅每次我进行更改时都要做很多事情,而且我也无法使用 GDB 进行调试。

我能找到的最佳解决方案是 JTAG。但是这些 JTAG 仿真器的价格看起来很荒谬。我什至不确定哪些可以与 Hawkboard 一起使用,哪些不能。到目前为止,我最好的选择似乎是Flyswatter,但引脚布局不同。

基本上,我需要一些相对便宜且可与 Hawkboard 和 OpenOCD 配合使用的东西。

有什么建议么?或者还有其他方法可以做到这一点,也许?

0 投票
1 回答
3363 浏览

arm - 我能以某种方式使用这个 XDS100v2 JTAG 仿真器吗?

我买了一块 Hawkboard,然后去寻找一个用于调试的 JTAG 仿真器。我唯一确定的是 Spectrum Digital XDS100v2,因为引脚匹配,而且我读过其他人将它与 Hawkboard 一起使用。我曾希望使用 GCC ARM 工具链和 OpenOCD,但 XDS100v2 显然只适用于 TI Code Composer Studio。我对此很好,因为 Hawkboard 无论如何都使用 TI 处理器,而且我认为 TI 编译器能够很好地优化它。收到JTAG仿真器后,我安装了TI CCSv4 ...

我绝对讨厌它

它在我的硬盘驱动器中分散了文件,使我的用户目录变得混乱,配置起来非常痛苦,现在它甚至无法正确卸载。我真的非常想切换到 GCC 工具链和 OpenOCD/GDB 进行调试,但我找不到任何使用 XDS100v2 的方法。

OpenOCD 邮件列表上最近对此进行了一些讨论,但似乎许可问题阻止了团队对 XDS100v2 的直接支持。我还发现一个 Git 提交大约与讨论同时进行,其中似乎包含支持 XDS100v2 的代码,但我不知道这是否是官方的。我也无法真正测试它,因为 XDS100v2 实际上并没有正确安装。我必须安装 CCSv4 才能获得驱动程序,但我拒绝在我的另一台机器上执行此操作,因为我不希望它像第一个机器那样混乱。讨论中提到 XDS100v2 实际上只是一个 FTDI 设备,所以我尝试使用通用 FTDI 驱动程序,但 Windows 无法识别它。

我想我要问的是:有什么方法可以通过某种方式使用通用 FTDI 驱动程序或其他方法轻松地让 OpenOCD 支持 XDS100v2?我在这个 JTAG 仿真器上花了 80 美元,我真的不想让它浪费掉。

0 投票
3 回答
2109 浏览

gcc - 使用 FreeRTOS 和 OpenOCD 配置 GCC

我很确定这是可能的,但我不知道该怎么做。一般来说,我对使用 GCC 构建非常陌生,而且我从未使用过 FreeRTOS,但我想尝试让操作系统在 TI ARM Cortex MCU 上启动并运行,但略有不同:我想得到它与 Pascal 一起运行。我很好奇:

  • 这甚至可能得到工作?如果不是,那么接下来的问题就是有争议的问题。
  • 在我的 Delphi 时代,我隐约记得访问 C 库中的函数的能力。我想知道我是否可以访问 FreeRTOS 中的 C 例程。
  • 如果我使用 GCC 版本(首选),我可以在目标上使用 OpenOCD 进行调试吗?我不太确定调试符号是如何工作的,以及它是否或多或少与语言无关(希望在这种情况下)。
  • 作为一个有点超出原始查询范围的附加问题,我可以在 x86 处理器(例如我的开发 PC)上模拟 FreeRTOS,以便在开发过程中更轻松地进行调试吗?(当然,使用 Pascal 程序..)

我还没有找到任何关于实现这一点的文档,所以希望这里的人能有所启发!任何资源都是最有帮助的。就像我说的,我对这种发展很陌生。如果您认为有更好的选择,我也愿意接受建议。

仅供参考,我首选的主机配置类似于:

  • Linux (Ubuntu/Debian)
  • Eclipse IDE 用于开发、单元测试和希望的模拟/调试
  • 用于目标调试的 OpenOCD
  • 目标上的 GNU Pascal + FreeRTOS
0 投票
4 回答
24759 浏览

unit-testing - 如何编写 gdb 脚本(使用 python)?示例添加断点,运行,我们打的是什么断点?

我正在尝试使用 gdb 创建一个小单元测试,用于由OpenOCD控制的嵌入式 mcu (这使我可以通过 gdb 服务器控制我的目标)。

所以我想用gdb的一些脚本来自动化这个。

我想为 gdb 编写某种或多或少的脚本:

  1. 添加几个断点
  2. 启动程序
  3. 当我们停止时,它在哪里停止(获取帧信息)
  4. 辞职。

有任何想法吗?

关于如何在 python gdb 脚本中执行此操作的示例会很好。

谢谢约翰


注意

假设我们有这个基本结构,或多或少进入 test_failed() 或 test_success() 取决于函数 start_test() 返回的内容。

在 gdb 中手动执行此操作非常困难,

因此,我尝试的下一步是将这些 gdb 命令添加到 gdb 启动脚本中,该脚本或多或少看起来像这样。

并开始

而这种作品,但它不是很好。我如何使用 gdb 似乎支持的“新的和酷的”python 脚本来做到这一点。

0 投票
1 回答
11099 浏览

gdb - 如何使用 openOCD 和 gdb 对 STM32 闪存进行编程

我正在使用带有 openOCD 和 GDB 的 Olimex ARM-USB-OCD 加密狗来编程和调试 stm32f103 micro。我使用的 IDE 来自 Olimex dev-kit CD,并使用了 eclipse ganymede。

我可以将一个小程序加载到 RAM 中并单步执行代码而不会出现任何问题。

我现在有一个更大的程序,它不适合 RAM(只有 20K),所以我想从闪存(128K)运行它。

我修改了链接描述文件,指示程序代码应该进入闪存部分(地址 0x8000000),但 gdb 无法加载程序。

我应该怎么做才能让 gdb 将程序加载到闪存中?

0 投票
1 回答
2829 浏览

gdb - 为什么 cortex-m3 会在 gdb 中重置为地址 0?

我正在为 Stellaris LM3S8962 cortex-m3 芯片构建一个交叉编译工具链。我编写的测试 C++ 应用程序将执行一段时间然后出错。当我尝试访问内存映射的硬件设备时会发生故障。目前我的工作假设是我在启动序列中缺少一些必要的芯片初始化。

我想了解的是为什么 gdb 中的执行会停止并且程序计数器设置为 0?我在 0x0 处有向量表,但第一个值是堆栈指针。我不应该以我在向量表中指定的故障处理程序之一结束吗?

工具链基于 gcc、gdb、openocd。

0 投票
3 回答
35507 浏览

eclipse - 用于 Flash 和 Ram 调试的 STM32 GDB/OpenOCD 命令和初始化

我正在寻求有关正确 GDB / OpenOCD 初始化和运行命令(外部工具)的帮助,以在 Eclipse 中用于闪存和 RAM 调试,以及需要合并到用于闪存与 RAM 构建的 makefile 中的正确修改或添加对于这个 MCU,如果这当然重要的话。

单片机:STM32F103VET6

我正在使用带有 Zylin Embedded CDT、Yagarto 工具和 Bins、OpenOCD 0.4 的 Eclipse Helios,并且有一个 Olimex ARM-USB-OCD JTAG 适配器。

我已经配置了 ARM-USB-OCD 并将其添加为 Eclipse 中的外部工具。为了初始化 OpenOCD,我在 Eclipse 中使用了以下命令。开发板配置文件引用了 stm32 MCU:

当我在 Eclipse 中运行它时,一切似乎都在工作(GDB 接口、OpenOCD 找到 MCU 等)。我还可以远程登录到 OpenOCD 并运行命令。所以,我被困在下一部分;用于闪存和 RAM 调试以及擦除闪存的初始化和命令。

我通读了几个教程,并搜索了网络,但无法找到该处理器的任何特定内容。我对此并不陌生,因此我可能无法识别等效产品的示例。

0 投票
1 回答
2434 浏览

eclipse - Eclipse/OCD 中的 LPC17xx 调试问题

我会尽量做到完整和具体:

恩智浦 LPC1756 Cortex-M3。Eclipse Helios 使用 Codesourcery ARM 工具链和 OpenOCD 进行调试。JTAG 是 Olimex ARM-USB-OCD。操作系统是 Windows 7 64 位。

我相信我现在已经解决了闪存上传方面的问题。编程后,我让脚本执行 dump_image 并且转储的图像看起来大致正确。目前我有验证问题需要解决,但在这个阶段,我的 JTAG 设置似乎正在工作,并且我正在与 '1756 成功通信。

但是,当我尝试调试时,我遇到了问题。首先,我的 cfg 文件,从我的目标设备 cfg 文件开始:

现在,我的调试 cfg 文件:

在 Eclipse 中,我使用以下标志调用此工具:

这似乎工作正常(至少我似乎没有在控制台中收到任何错误)。现在是我遇到问题的部分:

我在 GDB 硬件调试下的 Eclipse(运行 > 调试配置...)中创建了一个调试配置。相关参数为:

(注意:我已将 pc 设置为 0x00001278,因为那是我的 Reset_Handler 的地址;我知道它应该是 0x00000004 但我正在试验;当它是 0x00000004 时,我遇到了同样的问题......)

当我尝试使用此设置进行调试时,我收到一条消息“GDB 硬件调试暂停”,PC 似乎位于引导加载程序 0x1FFF0080 并且我的调试器似乎不再连接。在控制台中,我看到如下内容:

例如,在反汇编窗口中,我可以搜索并找到诸如“main”或“Reset_Handler”之类的东西,但反汇编全是“movs r0, r0”——基本上都是零。我不能单步执行(显然,挂起......)即使在 0x1fff0080 它显示“movs r0,r0”。我似乎能够读取 CPU 寄存器(例如,sp 显示 0x10001ffc 和 pc 显示 0x1fff0081 所以也许JTAG接口没有死……)

我闪现的图像应该在 0x00000000(即那里的向量表)。当我执行 dump_image 时,似乎设备编程并且向量表条目看起来正确。代码保护?如果是这样,我怎样才能做一个明显成功的“转储+图像”?

但是,即使在未连接 JTAG 的情况下插入设备也会导致无法操作。我已经看到与 LPC1768 类似的帖子,但没有找到任何适合我的帖子。非常感谢任何意见或建议。

0 投票
5 回答
10896 浏览

gcc - arm-none-eabi-gdb 和 openocd:对偏移量查询、qOffsets 的错误响应?

我正在尝试使用 GDB 使用 OpenOCD 和 GNU ARM 工具链(随 MacPorts 安装)调试 Stellaris LM3S8962 评估板,每当我在 GDB 中设置远程目标时,它总是返回“Malfomred 对偏移查询的响应,qOffsets”。关于可能出现问题的任何想法?有什么我想念的吗?

这是 openocd 输出...一旦出现格式错误的响应,openocd 就会断开 telnet 连接...

这是我的 arm-none-eabi-* 工具链的版本输出...

我能够使用工具链进行编译,并使用 OpenOCD 刷新生成的 .bin 文件。仅通过搜索网络,我无法找到“格式错误的响应”问题的解决方案。

提前感谢您的任何建议或帮助!

更新

多亏了@turbo-j 和@guy-sirton 的回答,我才能更进一步……到目前为止,最有帮助的是我确实使用了错误的端口(4444 而不是 3333),但现在我得到了以下是否添加-c "init" -c "halt" -c "reset halt"到我的 openocd 命令字符串:

(这是在 qOffsets req/resp 之后,现在通过了)

在 OpenOCD 方面:

有时undefined debug reason 6 - target needs reset在 OpenOCD 控制台上会出现...不知道现在发生了什么,但它似乎更接近正常运行

更新 2

似乎如果我不加载文件“main.axf”或“main.o”,我不会遇到Remote 'g' packet reply is too long但我没有得到任何符号......我注意到其他网站主要处理 .elf 扩展名。有什么不同?我正在使用来自 StellarisWare 的“Hello World”示例,它从make命令生成 main.axf、main.bin(闪存写入和运行良好)、main.d、main.o。我的 Makefile 有什么奇怪的吗?

0 投票
3 回答
3049 浏览

arm - OPENOCD,闪存程序到 ARM Cortex M0 (JTAG)

我是 OpenOCD 的新手,有没有人尝试使用 Olimex OpenOCD 将程序 hex 文件(来自 Kiel 说)实际闪存到 ARM CORTEX M0(通用)中。

我需要设置脚本文件以获取 hex 文件的每个字以在 MCU 闪存中执行 mww(内存写入字)吗?任何人都可以提供一个示例。我用蟒蛇。

我打开建议。

我使用 Windows PC。