К основному содержанию
скилл CX Codex

openocd-jtag — скилл для Claude Code: что делает и как установить

Скилл учит агента настраивать OpenOCD, прошивать микроконтроллеры через JTAG или SWD и подключать GDB для низкоуровневой отладки.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill openocd-jtag -a claude-code
Открыть на GitHub

Что делает openocd-jtag

Скилл содержит готовые инструкции по отладке встраиваемых систем на чипах STM32, nRF52, ESP32 или RP2040. Он помогает составить конфиг openocd.cfg для интерфейсов CMSIS-DAP или J-Link, выбрать протокол SWD либо JTAG и запустить локальный GDB-сервер на порту 3333.

Обычные точки останова break заменяют команды в памяти и не срабатывают во flash-памяти при исполнении кода на месте. Скилл переключает агента на аппаратные брейкпоинты hbreak и отслеживание переменных через watch или rwatch. Число таких регистров строго ограничено самим чипом: у ядер Cortex-M обычно доступно от 4 до 8 аппаратных точек останова.

Внутри собраны команды для telnet-сессии на порту 4444, сценарии быстрой прошивки ELF или bin через параметр program ... verify reset exit, а также таблица решений для частых ошибок. При сбое сканирования цепочки JTAG агент сразу предлагает проверить питание и переключить транспорт на swd.

Какие задачи решает

  • настроить конфигурационный файл OpenOCD под адаптеры J-Link или CMSIS-DAP
  • прошить файлы ELF или бинарники через OpenOCD одной командой без интерактивного режима
  • подключить arm-none-eabi-gdb к удалённому порту OpenOCD
  • расставить аппаратные точки останова hbreak и ватчпоинты памяти в GDB
  • разобрать типовые ошибки подключения к чипу и сбои сканирования JTAG

Примеры запросов агенту

  • Как прошить stm32f4x через OpenOCD одной командой из терминала?
  • Помоги составить openocd.cfg для адаптера J-Link и микроконтроллера nRF52 по SWD.
  • Как подключить arm-none-eabi-gdb к порту 3333 и поставить аппаратный watchpoint на переменную?

Как установить openocd-jtag

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill openocd-jtag -a claude-code

2Вручную: положить файлы

~/.claude/skills/openocd-jtag/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/openocd-jtag/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о openocd-jtag

Как установить openocd-jtag в Claude Code?

Выполните команду npx skills add mohitmishra786/low-level-dev-skills --skill openocd-jtag -a claude-code. Файл навыка сохранится по пути ~/.claude/skills/openocd-jtag/SKILL.md.

Что делает скилл openocd-jtag?

Он предоставляет агенту базу знаний по синтаксису OpenOCD, режимам JTAG и SWD, сценариям прошивки микроконтроллеров и командам монитора GDB.

Почему скилл требует использовать hbreak вместо break?

Программный break пытается модифицировать память инструкций, что невозможно во flash-памяти без debug-регистров. Команда hbreak задействует аппаратные регистры отладки микроконтроллера.

Исходный текст

SKILL.md · MIT
---
name: openocd-jtag
description: OpenOCD skill for embedded hardware debugging. Use when configuring OpenOCD for JTAG or SWD targets, flashing firmware, connecting GDB to bare-metal targets, setting hardware watchpoints, or using J-Link with OpenOCD. Activates on queries about OpenOCD, JTAG, SWD, GDB remote target, flash programming, hardware breakpoints, J-Link, or connecting GDB to an MCU.
---

# OpenOCD / JTAG Debugging

## Purpose

Guide agents through configuring OpenOCD for JTAG and SWD targets, flashing firmware to microcontrollers, attaching GDB for bare-metal debugging, setting hardware watchpoints, and configuring J-Link and CMSIS-DAP adapters.

## Triggers

- "How do I connect GDB to my MCU with OpenOCD?"
- "How do I flash firmware using OpenOCD?"
- "How do I set up J-Link with OpenOCD?"
- "What's the difference between JTAG and SWD?"
- "How do I set a hardware watchpoint in GDB?"
- "OpenOCD says 'Error: unable to find JTAG device' — how do I fix it?"

## Workflow

### 1. JTAG vs SWD

| Feature | JTAG | SWD (Serial Wire Debug) |
|---------|------|------------------------|
| Pins | 4+ (TCK, TMS, TDI, TDO, TRST) | 2 (SWCLK, SWDIO) |
| Multi-target | Yes (daisy chain) | No (one target) |
| Speed | Up to 30 MHz | Up to 10 MHz |
| Availability | Full JTAG: Cortex-A/R, RISC-V | SWD: Cortex-M only |
| Cable cost | More complex | Simpler 2-wire |

Most Cortex-M microcontrollers support both. Use SWD when pin count is limited.

### 2. OpenOCD configuration

```tcl
# openocd.cfg — CMSIS-DAP (ST-Link v2, DAPLink)
source [find interface/cmsis-dap.cfg]
source [find target/stm32f4x.cfg]
adapter speed 4000              # kHz

# For SWD explicitly
transport select swd

# J-Link adapter
source [find interface/jlink.cfg]
jlink serial 123456789          # optional: select by serial
source [find target/nrf52.cfg]
adapter speed 8000
```

```bash
# Run OpenOCD (keeps running, serves GDB on port 3333)
openocd -f openocd.cfg

# Common interface config files
ls $(openocd --help 2>&1 | grep "scripts" | head -1)/interface/
# cmsis-dap.cfg, jlink.cfg, ftdi/olimex-arm-usb-ocd.cfg, stlink.cfg ...

# Common target config files
ls $(openocd --help 2>&1 | grep "scripts" | head -1)/target/
# stm32f4x.cfg, nrf52.cfg, esp32.cfg, rp2040.cfg, at91sam4s.cfg ...
```

### 3. Connecting GDB

```bash
# In terminal 1: start OpenOCD
openocd -f openocd.cfg

# In terminal 2: start GDB
arm-none-eabi-gdb firmware.elf

# GDB commands
(gdb) target extended-remote :3333   # connect to OpenOCD
(gdb) monitor reset halt              # reset and halt target
(gdb) load                            # flash ELF to target
(gdb) monitor reset init             # re-initialize after flash
(gdb) break main                      # set software breakpoint
(gdb) continue

# One-liner for quick debugging
arm-none-eabi-gdb -ex "target extended-remote :3333" \
                  -ex "monitor reset halt" \
                  -ex "load" \
                  -ex "break main" \
                  -ex "continue" \
                  firmware.elf
```

### 4. Flashing firmware

```bash
# Flash via OpenOCD telnet interface
telnet localhost 4444

# OpenOCD telnet commands
> reset halt
> program firmware.elf verify reset
> exit

# Or via GDB
(gdb) monitor flash write_image erase firmware.bin 0x08000000
(gdb) monitor reset run

# Flash only (no debug) — script mode
openocd -f openocd.cfg \
        -c "program firmware.elf verify reset exit"

# For raw binary
openocd -f openocd.cfg \
        -c "program firmware.bin 0x08000000 verify reset exit"
```

### 5. Hardware breakpoints and watchpoints

Software breakpoints (`break`) patch instruction memory with trap instructions — they don't work in flash-execute-in-place without debug registers. Use hardware breakpoints instead:

```bash
# Hardware breakpoint (uses debug register, limited count: 4-8 on Cortex-M)
(gdb) hbreak function_name
(gdb) hbreak *0x08001234

# Hardware watchpoint — triggers on memory read/write
(gdb) watch global_variable         # write watchpoint
(gdb) rwatch some_buffer            # read watchpoint
(gdb) awatch sensor_value           # read OR write watchpoint

# List breakpoints/watchpoints
(gdb) info breakpoints

# Cortex-M typically has: 4–8 hardware breakpoints, 2–4 watchpoints
```

### 6. OpenOCD commands reference

```bash
# Via telnet (port 4444) or GDB monitor
monitor reset halt          # reset and hold at reset vector
monitor reset init          # reset and run init scripts
monitor reset run           # reset and run freely
monitor halt                # halt running target
monitor resume              # resume execution
monitor mdw 0x20000000      # memory display word at address
monitor mww 0x40021000 0x1  # memory write word
monitor reg r0              # read register
monitor arm disassemble 0x08000000 16  # disassemble 16 instructions

# Flash operations
monitor flash list
monitor flash erase_sector 0 0 0   # erase sector 0
monitor flash write_bank 0 firmware.bin 0
```

### 7. Common errors

| Error | Cause | Fix |
|-------|-------|-----|
| `unable to find JTAG device` | Wrong interface, cable, or power | Check USB connection; power target; verify interface config |
| `JTAG scan chain interrogation failed` | Wrong target config or bad SWD mode | Match config to exact MCU; try `transport select swd` |
| `flash 'stm32f4x' is not supported` | Wrong target | Check MCU part number; use correct `.cfg` |
| `Error: timed out while waiting for target halted` | Target running, not halted | `monitor halt`; check BOOT pins |
| `Cannot access memory at address` | MMU, memory protection, or wrong address | Check MPU config; use correct flash/RAM address |
| `Warn: target not examined yet` | OpenOCD not connected to target | Check power and connections |

### 8. J-Link configuration

```tcl
# openocd.cfg for J-Link
source [find interface/jlink.cfg]
jlink usb 0          # use first J-Link found
transport select swd  # or jtag
adapter speed 4000

source [find target/stm32l4x.cfg]
```

J-Link GDB Server (alternative to OpenOCD):

```bash
# Segger's own GDB server
JLinkGDBServer -if SWD -device STM32L476RG -port 3333 &
arm-none-eabi-gdb -ex "target remote :3333" firmware.elf
```

## Related skills

- Use `skills/embedded/freertos` for FreeRTOS-aware debugging with OpenOCD
- Use `skills/embedded/zephyr` for Zephyr's `west debug` integration
- Use `skills/debuggers/gdb` for GDB session management
- Use `skills/embedded/linker-scripts` for understanding memory map for flash addresses

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Похожие скиллы

Все скиллы по теме «Тесты и QA» →
improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. 1 163 035установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. CX Codex +1 678 700установок tdd Matt Pocock Скилл управляет циклом красный-зелёный в TDD: проверяет, что тесты пишутся до кода, держит их на уровне публичных интерфейсов и не завязывает на внутреннюю структуру. 1 141 062установок skill-creator официальный anthropics Помогает создать новый скилл, доработать существующий и проверить результат через тестовые промпты и оценки. 414 180установок agent-browser vercel-labs Скилл управляет браузером через CLI: открывает страницы, заполняет формы, нажимает кнопки и проверяет веб-приложения. Подходит для задач, где агенту нужно действовать в интерфейсе. CX Codex +1 1 200 000установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. 986 201установок

Из того же набора79

cpp-modules Скилл для работы с модулями C++20: именованные модули, партиции, header units, сборка через CMake и флаги компиляторов. CX Codex +1 555установок rust-debugging Скилл настраивает отладку Rust через GDB, LLDB, макрос dbg! и tokio-console. Помогает разбирать бэктрейсы паник и инспектировать асинхронные задачи. CX Codex +1 548установок hardware-counters Помогает измерять аппаратные счётчики процессора через perf и PAPI. Скилл рассчитывает IPC, промахи кэша L1–LLC и связывает события PMU со строками кода. CX Codex +1 545установок rust-security Скилл для проверки Rust-проектов на уязвимости: cargo-audit, cargo-deny, RUSTSEC, безопасный FFI, фаззинг и Miri. CX Codex +1 544установок cpp-coroutines Скилл обучает ИИ-агента писать и отлаживать корутины C++20. Помогает реализовать promise_type, сократить размер фрейма в куче и разобрать зависшие вызовы через GDB. CX Codex +1 531установок debug-optimized-builds Помогает разобраться, почему GDB показывает «value optimized out» и как вообще отлаживать код, собранный с оптимизацией. CX Codex +1 533установок cpp-templates Помогает читать запутанные ошибки шаблонов C++ и переводить старый код с SFINAE на концепты C++20. CX Codex +1 528установок rust-sanitizers-miri Настраивает проверку unsafe-кода в Rust через Miri и санитайзеры LLVM. Помогает найти неопределённое поведение и гонки данных до релиза. CX Codex +1 527установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой