OpenOCD
OpenOCD is used to program and debug various devices with GDB.
It supports many interfaces which including GPIOs, professional interfaces and their clones.
Install
Build from source enabling every supported interface type.
Dependencies
Install prerequisites.
apt install build-essential git automake libtool libhidapi-dev libcapstone-dev libusb-1.0-0-dev libjaylink-dev libgpiod-dev libftdi-dev pkg-config
Dev
Install into /usr/local
mkdir -p /opt/src cd /opt/src git clone https://git.code.sf.net/p/openocd/code openocd cd openocd ./bootstrap ./configure --prefix=/usr/local --enable-ftdi --enable-sysfsgpio --enable-bcm2835gpio --enable-picoprobe --enable-jlink --enable-ft232r --enable-cmsis-dap --enable-cmsis-dap-v2 --enable-dummy --with-capstone --enable-openjtag --enable-aice --enable-presto --enable-usb-blaster make -j 4 make install
STMicroelectronics and RPi provide modified versions of OpenOCD for their processors
STM
Install into /opt
mkdir -p /opt/src cd /opt/src git clone https://github.com/STMicroelectronics/OpenOCD openocd.stm cd openocd.stm ./bootstrap ./configure --prefix=/opt/openocd.stm --enable-ftdi --enable-sysfsgpio --enable-bcm2835gpio --enable-picoprobe --enable-jlink --enable-ft232r --enable-cmsis-dap --enable-cmsis-dap-v2 --enable-dummy --with-capstone --enable-openjtag --enable-aice --enable-presto --enable-usb-blaster make -j 4 make install
RPi
Install into /opt
mkdir -p /opt/src cd /opt/src git clone https://github.com/raspberrypi/openocd openocd.rpi cd openocd.rpi ./bootstrap ./configure --prefix=/opt/openocd.rpi --enable-ftdi --enable-sysfsgpio --enable-bcm2835gpio --enable-picoprobe --enable-jlink --enable-ft232r --enable-cmsis-dap --enable-cmsis-dap-v2 --enable-dummy --with-capstone --enable-openjtag --enable-aice --enable-presto --enable-usb-blaster make -j 4 make install
Test
/opt/openocd.rpi/bin/openocd -f "interface/cmsis-dap.cfg" -f "target/rp2350.cfg" -c "adapter speed 4000" Open On-Chip Debugger 0.12.0+dev-gebec9504d (2024-10-17-18:47) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : Hardware thread awareness created Info : Hardware thread awareness created Info : Hardware thread awareness created Info : Hardware thread awareness created cortex_m reset_config sysresetreq adapter speed: 4000 kHz Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : Using CMSIS-DAPv2 interface with VID:PID=0x2e8a:0x000c, serial=1C789DE3E289C250 Info : CMSIS-DAP: SWD supported Info : CMSIS-DAP: Atomic commands supported Info : CMSIS-DAP: Test domain timer supported Info : CMSIS-DAP: FW Version = 2.0.0 Info : CMSIS-DAP: Interface Initialised (SWD) Info : SWCLK/TCK = 0 SWDIO/TMS = 0 TDI = 0 TDO = 0 nTRST = 0 nRESET = 0 Info : CMSIS-DAP: Interface ready Info : clock speed 4000 kHz Info : SWD DPIDR 0x4c013477 Info : [rp2350.dap.core0] Cortex-M33 r1p0 processor detected Info : [rp2350.dap.core0] target has 8 breakpoints, 4 watchpoints Info : [rp2350.dap.core0] Examination succeed Info : [rp2350.dap.core1] Cortex-M33 r1p0 processor detected Info : [rp2350.dap.core1] target has 8 breakpoints, 4 watchpoints Info : [rp2350.dap.core1] Examination succeed Info : starting gdb server for rp2350.dap.core0 on 3333 Info : Listening on port 3333 for gdb connections
Update
make distclean git pull --recurse-submodules ...