OpenOCD vs pyOCD
OpenOCD
openocd.orgpyOCD
pyocd.ioSide by side
| Figure | OpenOCD | pyOCD |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| API | — | Yes |
| Self-hosted | Yes | Yes |
| Plans published | 1 | 1 |
| Spec score · Debuggers | 7.8 (#12) | 8.6 (#3) |
| Installation | The project says OpenOCD is packaged in popular operating-system repositories and also provides access to its source repository. | The stable package is available from PyPI and can be installed or upgraded with pip; the documentation also recommends pipx for an isolated virtual Python environment. |
| Purpose | OpenOCD provides debugging, in-system programming, and boundary-scan testing for embedded target devices using a debug adapter. | pyOCD is a Python based tool and API for debugging, programming, and exploring Arm Cortex microcontrollers. |
Plans
In their own words
OpenOCD
OpenOCD provides debugging, in-system programming, and boundary-scan testing for embedded target devices through a debug adapter. It communicates with targets over JTAG or Serial Wire Debug (SWD), and can run as a server for GDB clients. Users can also interact through Telnet or GDB; its Tcl interface is intended for machine interaction, and configuration files can contain commands using the documented Tcl scripting API. The target list includes ARM, MIPS, RISC-V, Xtensa, ARC, AVR32, and other architectures. Release 0.12.0 notes support for Espressif ESP32, ESP32-S2, ESP32-S3 cores, and Raspberry Pi Pico RP2040, along with Zephyr and a no-RTOS option. OpenOCD supports remote debugging and exception breakpoints. It is free and listed for Linux, macOS, Windows, and self-hosted setups. The project says it is packaged in popular operating-system repositories and provides access to source code; community binaries are marked unofficial. Host configuration may take extra steps: Linux usually needs a udev rule for adapter access, and Windows requires driver configuration for each peripheral.
pyOCD
pyOCD is a Python tool and API for debugging, programming, and exploring Arm Cortex microcontrollers. Its GDB server supports command-line debugging and IDE workflows, including Arm CMSIS Debugger, Cortex-Debug, and Eclipse Embedded CDT. It can program firmware and data images into internal or external flash, or load images into RAM. The Python API controls target devices and can support CI setups and custom test or debug tools. More than 70 common Arm Cortex-M devices have built-in support, with CMSIS Device Family Packs available for additional devices. Features include semihosting, SWV, and CMSIS-Pack support. Built-in probe plug-ins include CMSIS-DAP, Raspberry Pi Picoprobe, SEGGER J-Link, STLink, and pyOCD remote; PE Micro Cyclone and Multilink require a separate plug-in. A server and client can share probes over TCP/IP. pyOCD requires Python 3.9 or later and runs on macOS, Linux, FreeBSD, and Windows. It is free, with code licensed under Apache 2.0. Unlocking a supported locked device can require a mass erase, which erases its data.