Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/openocd-org/openocd
嵌入式系统安全逆向工程调试器硬件黑客硬件安全硬件与物联网安全固件分析
GitHubopenocd-org/openocd

openocd

官方OpenOCD只读镜像(不接受拉取请求)

查看仓库
2.3k1.0k66天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

欢迎使用 OpenOCD

OpenOCD 提供片上编程与调试支持,采用分层的 JTAG 接口与 TAP 支持架构,包括:

  • (X)SVF 回放,便于自动化边界扫描和 FPGA/CPLD 编程;
  • 调试目标支持(例如 ARM、MIPS):单步执行、断点/观察点、gprof 性能分析等;
  • Flash 芯片驱动(例如 CFI、NAND、内部 Flash);
  • 嵌入式 Tcl 解释器,便于脚本编写。

OpenOCD 提供多种网络接口用于交互:telnet、Tcl 和 GDB。GDB 服务器使 OpenOCD 能够作为 GNU GDB 程序(以及其他使用 GDB 协议的工具,如 IDA Pro)的“远程目标”,用于嵌入式系统的源码级调试。

本 README 文件概述以下主题:

  • 快速入门说明,
  • 如何查找并构建更多 OpenOCD 文档,
  • 支持的硬件列表,
  • 安装与构建过程,
  • 打包提示。

快速入门(适用于心急用户)

如果您有一块流行开发板,直接使用其配置文件启动 OpenOCD,例如:

root@kitploit:~
openocd -f board/stm32f4discovery.cfg

如果您要连接特定适配器与特定目标,则需要同时引用 JTAG 接口和目标配置文件,例如:

root@kitploit:~
openocd -f interface/ftdi/jtagkey2.cfg -c "transport select jtag" \
        -f target/ti/calypso.cfg
root@kitploit:~
openocd -f interface/stlink.cfg -c "transport select swd" \
        -f target/stm32l0.cfg

OpenOCD 启动后,使用 GDB 连接:

root@kitploit:~
(gdb) target extended-remote localhost:3333

安装 OpenOCD

最简单的方式是通过操作系统的包管理器安装 OpenOCD。

  • Debian / Ubuntu

    root@kitploit:~
    sudo apt install openocd
    
  • Fedora

    root@kitploit:~
    sudo dnf install openocd
    
  • macOS(通过 Homebrew)

    root@kitploit:~
    brew install open-ocd
    
  • Windows(通过 MSYS2)

    root@kitploit:~
    pacman -S mingw-w64-x86_64-openocd
    

这些软件包通常比活跃开发的 Git 主线版本更稳定。打包者会在开发者发布新的源代码版本后创建 OpenOCD 的二进制版本。较旧的 OpenOCD 版本不适合诊断当前版本中的问题。用户应与发行版维护者或接口供应商保持联系,以确保定期获得适当的更新。

如果您使用这些二进制包之一,则必须联系打包者以获取支持或更新的二进制版本。OpenOCD 开发者不直接为打包的二进制文件提供支持。

致 OpenOCD 打包者

如果您符合以下情况,您就是 OpenOCD 的打包者:

  • 销售加密狗并包含预编译二进制文件;
  • 提供工具或 IDE(集成 OpenOCD 的开发解决方案);
  • 构建软件包(例如 GNU/Linux 发行版的 RPM 或 DEB 文件)。

作为打包者,您会最先遇到大多数问题的报告。当您为用户解决这些问题时,您的解决方案可能有助于阻止其他用户提出数百(甚至数千)个问题。

如果某些功能对您不起作用,请告知 OpenOCD 开发者如何改进系统或文档以避免将来出现问题,并跟进以确保问题在我们未来的版本中完全解决。

此外,OpenOCD 开发者希望您遵循以下建议:

  • 向上游提交补丁(包括配置文件),参与讨论;
  • 启用 OpenOCD 支持的所有选项,即使与您的特定硬件无关;
  • 对于基于 FTDI 的设备,使用“ftdi”接口适配器驱动。

OpenOCD 文档

除了仓库内的文档外,最新手册也可通过以下 URL 在线查看:

  • OpenOCD 用户指南:http://openocd.org/doc/html/index.html

  • OpenOCD 开发者手册:http://openocd.org/doc/doxygen/html/index.html

这些反映的是最新开发版本,因此下一节将介绍如何从软件包构建完整文档。

有关更多信息,请参阅这些文档,或通过订阅 OpenOCD 开发者邮件列表联系开发者:[email protected]

构建 OpenOCD 文档

默认情况下,OpenOCD 构建过程会将文档准备为“Info 格式”,并按标准方式安装,以便通过 info openocd 访问。

此外,OpenOCD 用户指南还可以生成以下不同格式:

如果设置了 PDFVIEWER,以下命令将创建并查看 PDF 用户指南。

root@kitploit:~
make pdf && ${PDFVIEWER} doc/openocd.pdf

如果设置了 HTMLVIEWER,以下命令将创建并查看 HTML 用户指南。

root@kitploit:~
make html && ${HTMLVIEWER} doc/openocd.html/index.html

OpenOCD 开发者手册包含内部架构及其他代码细节信息:

注意:确保已安装 doxygen,输入 doxygen --version

root@kitploit:~
make doxygen && ${HTMLVIEWER} doxygen/index.html

支持的硬件

JTAG 适配器

AM335x, ARM-JTAG-EW, ARM-USB-OCD, ARM-USB-TINY, AT91RM9200, axm0432, BCM2835, Bus Blaster, Buspirate, Cadence DPI, Cadence vdebug, Chameleon, CMSIS-DAP, Cortino, Cypress KitProg, DENX, Digilent JTAG-SMT2, DLC 5, DLP-USB1232H, embedded projects, Espressif USB JTAG Programmer, eStick, FlashLINK, FlossJTAG, Flyswatter, Flyswatter2, FTDI FT232R, Gateworks, Hoegl, ICDI, ICEBear, J-Link, JTAG VPI, JTAGkey, JTAGkey2, JTAG-lock-pick, KT-Link, Linux GPIOD, Lisa/L, LPC1768-Stick, Mellanox rshim, MiniModule, NGX, Nuvoton Nu-Link, Nu-Link2, NXHX, NXP IMX GPIO, OOCDLink, Opendous, OpenJTAG, Openmoko, OpenRD, OSBDM, Presto, Redbee, Remote Bitbang, RLink, SheevaPlug devkit, Stellaris evkits, ST-LINK(支持 SWO 跟踪), STM32-PerformanceStick, STR9-comStick, sysfsgpio, Tigard, TI XDS110, TUMPA, Turtelizer, ULINK, USB-A9260, USB-Blaster, USB-JTAG, USBprog, VPACLink, VSLLink, Wiggler, XDS100v2, Xilinx XVC/PCIe, Xverve。

调试目标

ARM: AArch64, ARM11, ARM7, ARM9, Cortex-A/R(v7-A/R), Cortex-M(ARMv{6/7/8}-M), FA526, Feroceon/Dragonite, XScale。 ARCv2, AVR32, DSP563xx, DSP5680xx, EnSilica eSi-RISC, EJTAG(MIPS32, MIPS64), ESP32, ESP32-S2, ESP32-S3, Intel Quark, LS102x-SAP, RISC-V, ST STM8, Xtensa。

Flash 驱动

ADUC702x, AT91SAM, AT91SAM9(NAND), ATH79, ATmega128RFA1, Atmel SAM, AVR, CFI, DSP5680xx, EFM32, EM357, eSi-RISC, eSi-TSMC, EZR32HG, FM3, FM4, Freedom E SPI, GD32, i.MX31, Kinetis, LPC8xx/LPC1xxx/LPC2xxx/LPC541xx, LPC2900, LPC3180, LPC32xx, LPCSPIFI, Marvell QSPI, MAX32, Milandr, MXC, NIIET, nRF51, nRF52, NuMicro, NUC910, Nuvoton NPCX, onsemi RSL10, Orion/Kirkwood, PIC32mx, PSoC4/5LP/6, Raspberry RP2040, Renesas RPC HF 和 SH QSPI, S3C24xx, S3C6400, SiM3x, SiFive Freedom E, Stellaris, ST BlueNRG, STM32, STM32 QUAD/OCTO-SPI(用于 Flash/FRAM/EEPROM), STMSMI, STR7x, STR9x, SWM050, TI CC13xx, TI CC26xx, TI CC32xx, TI MSP432, Winner Micro w600, Xilinx XCF, XMC1xxx, XMC4xxx。

构建 OpenOCD

INSTALL 文件包含运行 configure 和编译 OpenOCD 源码的通用说明。该文件是所有 GNU autotools 包默认提供的。如果您不熟悉 GNU autotools,则应先阅读这些说明。

注意:如果 INSTALL 文件不存在,说明您使用的是开发分支的源代码,而非 OpenOCD 发布版。在这种情况下,请遵循下方“编译 OpenOCD”的说明,第一个命令 ./bootstrap 会生成该文件。

本文档的其余部分将尝试为寻求快速安装的用户提供一些指导。

OpenOCD 依赖项

当前构建 OpenOCD 需要 GCC 或 Clang。开发者已开始强制执行严格的代码警告(-Wall、-Werror、-Wextra 等),并使用 C99 特有特性:内联函数、命名初始化器、声明与代码混合以及其他技巧。虽然使用其他编译器也可能实现,但编译器需要较新版本,并且可能需要扩展支持以有条件地移除 GCC 特有的扩展。

您还需要:

  • make
  • libtool
  • pkg-config >= 0.23 或 pkgconf
  • libjim >= 0.79

此外,从 Git 构建时需要:

  • autoconf >= 2.69
  • automake >= 1.14
  • texinfo >= 5.0

可选的基于 USB 的适配器驱动需要 libusb-1.0。

可选的 USB-Blaster、ASIX Presto 和 OpenJTAG 接口适配器驱动需要 libftdi 库。

可选的 CMSIS-DAP 适配器驱动需要 HIDAPI 库。

可选的 linuxgpiod 适配器驱动需要 libgpiod 库。

可选的 J-Link 适配器驱动需要 libjaylink 库。

可选的 ARM 反汇编需要 capstone 库。

可选的开发脚本 checkpatch 需要:

  • perl
  • python
  • python-ply
  • pymarkdownlnt

编译 OpenOCD

构建 OpenOCD 请使用以下命令序列:

root@kitploit:~
./bootstrap
./configure [选项]
make
sudo make install

仅当从 Git 仓库构建时才需要 bootstrap 命令。configure 步骤生成构建 OpenOCD 所需的 Makefile,通常需要提供一个或多个选项。第一个 make 步骤将构建 OpenOCD,并将最终可执行文件放置在 ./src/ 中。最后的可选步骤 make install 将所有文件放置到所需位置。

要查看所有支持的选项,请运行 ./configure --help

交叉编译选项

交叉编译支持标准的 autotools 方式,您只需在 --host 选项中指定交叉编译目标三元组,例如在 Debian 上为 MinGW 交叉编译 Windows 32 位:

root@kitploit:~
./configure --host=i686-w64-mingw32 [选项]

要使 pkg-config 在交叉编译时正常工作,可能需要额外的包装脚本,详见 https://autotools.io/pkgconfig/cross-compiling.html。

这需要告诉 pkg-config 到哪里寻找 OpenOCD 依赖的目标库。或者,您可以直接指定 *_CFLAGS 和 *_LIBS 环境变量,详情请参阅 ./configure --help。

有关更完整地完成所有工作的脚本,请参见 contrib/cross-build.sh。

并行端口加密狗

如果要通过 PPDEV 接口访问并行端口,必须同时指定 --enable-parport 和 --enable-parport-ppdev,因为后者是 parport 驱动的一个选项。

对于 --enable-parport-giveio 选项也是如此:如果您想使用 giveio 而不是 ioperm 并行端口访问方法,必须同时使用 --enable-parport 和 --enable-parport-giveio 选项。

从 Git 获取 OpenOCD

您可以使用任意 Git 客户端从主仓库下载当前 Git 版本:git://git.code.sf.net/p/openocd/code

您可能更倾向于使用镜像:

  • http://repo.or.cz/r/openocd.git
  • git://repo.or.cz/openocd.git

使用 Git 命令行客户端,您可以使用以下命令在当前目录下设置当前仓库的本地副本(确保当前目录中没有名为“openocd”的目录):

root@kitploit:~
git clone git://git.code.sf.net/p/openocd/code openocd

然后您可以随时使用 git pull 进行更新。

还有一个 gitweb 界面,您可以使用它浏览仓库或通过 HTTP 下载任意快照:http://repo.or.cz/w/openocd.git。

快照是源代码树的压缩 tarball,在编写本文时每个约 1.3 MB。

权限委托

出于安全原因,强烈不建议以 root/管理员权限运行 OpenOCD。

对于 GNU/Linux 上的 USB 设备,您应使用 contrib/60-openocd.rules 文件。它通常应放置在 /etc/udev/rules.d 目录下,但请查阅您的操作系统文档以确认。不要忘记将自己添加到“plugdev”组。

对于 GNU/Linux 和 FreeBSD 上的并行端口适配器,请相应更改“ppdev”(parport* 或 ppi*)设备节点的权限。

对于 Windows 上的并行端口适配器,您需要运行 install_giveio.bat(也可以使用 Cygwin 的“ioperm”),以赋予普通用户直接访问“LPT”寄存器的权限。

下载工具