소개
Open On-Chip Debugger(OpenOCD)는 JTAG 및 SWD 인터페이스를 통해 임베디드 시스템의 온칩 디버깅, 플래시 프로그래밍, 경계 스캔을 지원하는 오픈 소스 도구입니다. 2023년 3월 3일에 버전 0.12.0이 출시되었으며, 다양한 마이크로컨트롤러 및 프로세서 아키텍처를 지원합니다. 이 소프트웨어는 하드웨어 디버깅 및 펌웨어 개발을 위한 커맨드라인 인터페이스를 제공하며, GPL-2.0 라이선스 하에 배포됩니다.
상세정보
JTAG 및 SWD 디버깅
OpenOCD는 JTAG 및 SWD 인터페이스를 통해 대상 장치의 레지스터 읽기/쓰기, 메모리 접근, 단계별 실행, 브레이크포인트 설정 등의 디버깅 기능을 제공합니다. 어댑터 속도를 지정하지 않을 경우 기본값으로 100 kHz를 사용합니다.
플래시 프로그래밍
지원되는 마이크로컨트롤러의 플래시 메모리에 펌웨어를 쓰거나 읽을 수 있습니다. Atmel/Microchip SAM E51 시리즈, GigaDevice GD32 시리즈, Nuvoton NPCX 시리즈, onsemi RSL10, Raspberry Pi Pico RP2040, ST STM32 시리즈 등의 플래시 알고리즘이 내장되어 있습니다.
경계 스캔(Boundary Scan)
JTAG 경계 스캔을 지원하여 보드 레벨 테스트 및 디버깅이 가능합니다. aarch64 및 ARM 코어에 대한 워치포인트 지원이 포함되어 있습니다.
세미호스팅(Semihosting)
대상 시스템이 호스트 컴퓨터의 표준 입출력 기능을 사용할 수 있도록 세미호스팅을 지원하며, 사용자 정의 작업도 가능합니다.
RTOS 인식
‘none’ 및 Zephyr RTOS에 대한 런타임 인식 기능을 제공하여 디버깅 세션에서 RTOS 상태를 볼 수 있습니다.
서버 기능
GDB 서버를 통해 원격 디버깅을 지원하며, 텔넷 및 TCP 서버를 통한 세미호스팅 I/O 리다이렉션이 가능합니다. GDB용 ‘Z’ 패킷 지원이 추가되었습니다.
다운로드·설치 방법
Windows 환경에서는 MSYS2 패키지 관리자를 통해 OpenOCD를 설치할 수 있습니다. 공식 홈페이지에서 소스 코드를 다운로드하여 직접 빌드할 수도 있으며, 일부 GNU/Linux 배포판(Debian, Fedora, Gentoo, OpenWrt), macOS용 Homebrew에서도 패키지를 제공합니다.
기본 사용법/명령어
OpenOCD는 주로 커맨드라인에서 실행됩니다. 기본 실행 명령어는 다음과 같습니다:
openocd -f 인터페이스.cfg -f 대상.cfg
예를 들어, ST-LINK 어댑터와 STM32F4 대상 보드를 사용할 경우:
openocd -f interface/stlink.cfg -f target/stm32f4x.cfg
실행 후 텔넷 또는 GDB를 통해 연결하여 디버깅 세션을 시작할 수 있습니다. 텔넷 포트는 기본적으로 4444, GDB 포트는 3333입니다.
이런 경우에 유용합니다
임베디드 시스템 개발자가 펌웨어 디버깅, 레지스터 검사, 메모리 dump/restore, 플래시 프로그래밍이 필요한 경우 OpenOCD를 사용할 수 있습니다. 특히 JTAG/SWD 인터페이스를 통해 마이크로컨트롤러의 저수준 디버깅이 필요한 상황에서 유용하며, Raspberry Pi Pico, STM32 시리즈, ESP32 등의 보드 개발에 자주 활용됩니다.
지원 환경·시스템 요구사항
OpenOCD는 Windows, GNU/Linux, macOS에서 실행할 수 있습니다. Windows에서는 MSYS2 환경이 권장되며, USB JTAG 어댑터(ST-LINK, CMSIS-DAP, JTAG-Hat 등)가 필요합니다. 소스 코드 빌드 시 autoconf 2.69 이상, libjim, libjaylink, libusb-1.0 등이 필요합니다.
최신 버전·업데이트
최신 안정 버전은 2023년 3월 3일에リリース된 0.12.0입니다. 이 버전에서는 JTAG 레이어의 어댑터 속도 기본값 설정, 다양한 어댑터 드라이버 추가(BCM2835, Espressif USB JTAG, ST-LINK TCP 서버 등), 대상 지원 확장(ESP32-S2/S3, RP2040, 다양한 STM32 시리즈), 세미호스팅 기능 향상, 서버 레이어의 GDB 확장 등이 포함되었습니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


