openocd中部分问题解决

本文介绍了一种解决OpenOCD在使用J-Link时遇到初始化失败的方法。通过在Windows环境下使用jlinkgdbserver并执行特定命令,可以有效解决OpenOCD无法正常识别J-Link的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装openocd后,当执行openocd命令的时候,出现如下所示问题:

Open On-Chip Debugger 0.4.0 (2010-10-08-15:42)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.berlios.de/doc/doxygen/bugs.html
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
jtag_nsrst_delay: 20
jtag_ntrst_delay: 20
Info : J-Link initialization started / target CPU reset initiated
Info : J-Link ARM Lite V8 compiled Dec 16 2010 20:30:43
Info : JLink caps 0xb9ff7bbf
Info : JLink hw version 80000
Info : JLink max mem block 8496
Info : Vref = 3.293 TCK = 1 TDI = 0 TDO = 1 TMS = 0 SRST = 0 TRST = 0

Info : J-Link JTAG Interface ready
Error: jlink_usb_read_emu_result retried requested = 1, result=-110, in_length=1
Error: jlink_usb_read_emu_result failed (requested = 1, result=-110)
Error: jlink_tap_execute, wrong result -107 (expected 1)
Info : RCLK (adaptive clock speed)
Error: jlink_usb_read_emu_result retried requested = 1, result=-110, in_length=1
Error: jlink_usb_read_emu_result failed (requested = 1, result=-110)
Error: jlink_tap_execute, wrong result -107 (expected 1)
Error: jlink_usb_read_emu_result retried requested = 1, result=-110, in_length=1
Error: jlink_usb_read_emu_result failed (requested = 1, result=-110)
Error: jlink_tap_execute, wrong result -107 (expected 1)
Command handler execution failed
Warn : jtag initialization failed; try 'jtag init' again.

问题解决方法:

1、在windows中打开jlink gdb server,启动开发板电源,打开jlink command

2、在jlink command中执行命令exec invalidateFw

等待,会发现windows提示硬件安装成功。

重新回到虚拟机中ubuntu,连接jlink后,发现就可以用了。

成功提示如下:

Open On-Chip Debugger 0.4.0 (2011-05-09-05:39)
Licensed under GNU GPL v2
For bug reports, read
 http://openocd.berlios.de/doc/doxygen/bugs.html
jtag_nsrst_delay: 500
jtag_ntrst_delay: 500
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
Info : J-Link initialization started / target CPU reset initiated
Info : J-Link ARM V8 compiled Dec  1 2009 11:42:48
Info : JLink caps 0xb9ff7bbf
Info : JLink hw version 80000
Info : JLink max mem block 9576
Info : Vref = 3.332 TCK = 1 TDI = 0 TDO = 1 TMS = 0 SRST = 0 TRST = 0

Info : J-Link JTAG Interface ready
Info : RCLK (adaptive clock speed)
Info : JTAG tap: s3c6410.etb tap/device found: 0x2b900f0f (mfg: 0x787, part: 0xb900, ver: 0x2)
Info : JTAG tap: s3c6410.cpu tap/device found: 0x07b76f0f (mfg: 0x787, part: 0x7b76, ver: 0x0)
Info : found ARM1176
Info : s3c6410.cpu: hardware has 6 breakpoints, 2 watchpoints
Warn : ETMv2+ support is incomplete
Info : ETM v3.2

03-10
<think>好的,我需要帮助用户了解如何使用OpenOCD进行嵌入式开发和调试。首先,我得回顾一下用户提供的引用内容,看看里面有哪些关键信息可以利用。 用户提到了几个引用,其中引用1、2、3和4都与OpenOCD相关。引用1和3详细描述了OpenOCD的用途,比如在RISC-V开发板上的调试,以及支持多种硬件和适配器,比如STM32。引用3还提到了OpenOCD的命令行配置和与GDB的交互,这点很重要,应该包含在教程里。引用2提到IDE和调试工具的配置,比如GDB和JTAG调试器,这可能涉及如何将OpenOCD集成到开发环境中。引用4则提到了使用CLION或其他IDE进行嵌入式开发,可能需要说明如何将OpenOCD与这些工具结合使用。 接下来,我需要按照用户的要求组织回答结构:安装步骤、基本配置、调试流程、集成到IDE、常见问题。每个部分都需要简明扼要,同时引用相关的资料来支持内容。 安装部分,用户可能需要不同系统的安装方法,比如Ubuntu使用apt,macOS用Homebrew,Windows用MSYS2或者直接下载二进制文件。这些信息在引用中没有直接提到,可能需要结合一般知识,但用户提供的引用3提到OpenOCD的下载和配置,所以可以建议官网或包管理器。 配置部分,引用3提到使用配置文件,比如stm32f4discovery.cfg,所以需要举例说明如何选择适合开发板的配置文件,并启动OpenOCD服务。同时,引用3还提到通过telnet和GDB连接,这里需要详细说明命令步骤。 调试流程中,引用3提到与GDB交互,需要说明如何启动GDB并连接到OpenOCD的端口,可能还需要基本的GDB命令,如加载程序、设置断点等,这部分需要确保步骤清晰。 集成到IDE方面,引用4提到使用CLION或VS Code,可能需要指导用户在这些IDE中配置OpenOCD和GDB。例如,在CLION中设置远程调试,指定GDB路径和OpenOCD的配置。这部分可能需要更详细的步骤,但引用中没有具体说明,可能需要结合一般经验。 常见问题部分,引用3提到广泛的硬件支持,但用户可能会遇到驱动或配置问题,比如USB权限、配置文件错误等,需要给出解决建议,如检查设备连接,确认配置文件正确性。 最后,生成相关问题需要考虑用户可能进一步想了解的内容,比如与其他调试工具的比较、高级功能、CLION集成问题或调试RTOS的方法。这些问题应该基于引用中的内容,比如引用3提到多语言接口和TCL脚本,可以问脚本自动化;引用4关于IDE,可以问集成问题。 需要确保所有LaTeX格式正确,行内公式用$...$,独立公式用$$...$$,但当前内容可能涉及较少数学公式,不过如果有示例命令中的参数可能需要正确格式化。例如,在代码块中展示命令时,不需要LaTeX,但如果有数学表达式,比如波特率计算,可能需要使用。不过根据引用内容,可能这部分不涉及太多数学,所以可能不需要。 检查是否有遗漏的关键点,比如OpenOCD支持的适配器类型(引用3提到FTDI、STM32),配置文件的位置,或者使用TCL脚本自动化任务(引用3提到易用性部分)。这些可能需要简要提及,以展示OpenOCD的灵活性。 总结步骤,确保每个部分都有引用支持,比如安装部分引用3的下载说明,配置部分引用3的示例命令,集成IDE引用2和4的内容。同时,保持回答结构清晰,分步骤说明,语言简洁,符合用户要求的中文回答。</think>### OpenOCD嵌入式开发与调试使用教程 #### 一、OpenOCD简介 OpenOCD(Open On-Chip Debugger)是开源的嵌入式调试工具,支持多种JTAG/SWD适配器和芯片(如STM32、RISC-V等),通过GDB实现源码级调试[^3]。其核心功能包括芯片编程、寄存器读写、断点设置等。 --- #### 二、安装步骤 1. **Ubuntu/Linux** ```bash sudo apt-get install openocd ``` 2. **macOS** ```bash brew install openocd ``` 3. **Windows** - 从[官网](http://openocd.org/)下载预编译二进制文件 - 或通过MSYS2安装: ```bash pacman -S openocd ``` --- #### 三、基本配置 1. **选择配置文件** OpenOCD通过配置文件(`.cfg`)定义调试目标,例如: ```bash openocd -f board/stm32f4discovery.cfg ``` 常用配置文件路径:`/usr/share/openocd/scripts/`(Linux)或安装目录下的`scripts`文件夹。 2. **启动服务** 执行后,OpenOCD会启动: - **GDB服务**:默认端口`3333` - **Telnet服务**:默认端口`4444`(用于发送调试命令) --- #### 四、调试流程 1. **连接GDB** 启动GDB并连接OpenOCD: ```bash arm-none-eabi-gdb your_firmware.elf (gdb) target remote localhost:3333 ``` 2. **常用操作** ```bash # 加载程序到芯片 (gdb) load # 设置断点 (gdb) break main # 运行程序 (gdb) continue ``` --- #### 五、集成到IDE(以CLion为例) 1. **配置工具链** - 在CLion中安装`Embedded Development`插件 - 设置`OpenOCD`路径和配置文件(如`stm32f4discovery.cfg`)[^4] 2. **调试配置** ```plaintext Run → Edit Configurations → Embedded GDB Server GDB: arm-none-eabi-gdb Target: your_firmware.elf GDB Server: openocd -f board/stm32f4discovery.cfg ``` --- #### 六、常见问题 1. **USB权限问题(Linux)** ```bash sudo usermod -a -G plugdev $USER ``` 2. **配置文件错误** - 检查开发板型号与配置文件是否匹配 - 确认JTAG/SWD接口连接正常 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值