blob: 4a085940df9b0e6d73481bfe55e09f5d93587552 [file] [log] [blame] [view]
---
title: Install OpenOCD
---
OpenOCD is a tool to connect with the target chip over JTAG and similar transports.
It also provides a GDB server which is an "intermediate" when debugging software on the chip with GDB.
It is recommended to use the regular upstream version of OpenOCD instead of the [RISC-V downstream fork](https://github.com/riscv/riscv-openocd).
It is trivial to install OpenOCD because we manage the dependency with Bazel.
The Bazel-built OpenOCD binary lives at `//third_party/openocd:openocd_bin`.
It's not runnable, but we also provide a runnable wrapper: `//third_party/openocd`.
OpenOCD also ships with a library of config files.
Instead of using use whichever config files happen to be installed on the system, prefer the Bazel-exposed config files that match OpenOCD source.
Currently, we only expose OpenTitan's default JTAG adapter config as `//third_party/openocd:jtag_adapter_cfg`.
```console
# Manually run OpenOCD:
./bazelisk.sh run //third_party/openocd -- arg1 arg2
# Get the path of the OpenOCD binary:
./bazelisk.sh outquery //third_party/openocd:openocd_bin
```