Лобзик
SWD/JTAG отладчик на базе Black Magic Debug
Заголовок раздела «SWD/JTAG отладчик на базе Black Magic Debug»- Полная поддержка Black Magic Debug: отладка «из коробки» без необходимости в дополнительном ПО вроде OpenOCD.
- Два режима подключения: SWD (Serial Wire Debug) и JTAG — для максимальной гибкости.
- Встроенная GDB-серверная функциональность: подключайтесь напрямую через GDB — никаких промежуточных утилит.
- Открытая прошивка и схемотехника: вы можете изучать, модифицировать и адаптировать под свои задачи.
- Поддержка целей RISC-V: идеален для работы с современными микроконтроллерами.
- Поддержка К1921ВГ015
Навык для ИИ-агентов
Заголовок раздела «Навык для ИИ-агентов»Лобзиком может управлять ИИ-агент (Claude Code и другие агенты с поддержкой навыков): прошить плату, снять лог UART с самой загрузки, прочитать регистры на работающей плате, разобрать зависание или HardFault, обновить прошивку Лобзика. Скажите агенту «прошей и покажи лог» — он сделает всё сам.
Навык и инструкция по установке: github.com/Kits-Lab-Dev/lobzik-skill. Скрипт из навыка работает и без агента — из терминала.
Обновление прошивки
Заголовок раздела «Обновление прошивки»Свежая прошивка — в релизах на GitHub
(fretsaw_bmp.bin). Проще всего обновить скриптом из навыка: python lobzik.py reflash —
он сам скачает прошивку и запишет её без нажатия кнопки. Вручную: зажмите кнопку на Лобзике,
подключите USB, отпустите и запишите fretsaw_bmp.bin с адреса 0x08000000 через
STM32CubeProgrammer или dfu-util. Подробно — в описании релиза.
Прошивка Лобзика на Щепе L432
Заголовок раздела «Прошивка Лобзика на Щепе L432»Прошивка Лобзика без изменений работает на Щепе L432: Щепа становится
отладчиком Black Magic Probe с GDB-сервером и UART цели. Шьётся так же, через DFU
(fretsaw_bmp.bin из релизов).
Цель подключается напрямую к выводам Щепы. UART TX Щепы (PA2) — на RX цели, UART RX (PA3) — на TX цели.
Схема подключения
Чем Щепа отличается от Лобзика:
- Только 3,3 В — трансляторов уровней нет, цель должна работать от 3,3 В.
- Нет ключа питания цели —
mon tpwrничего не включает; цель питается сама или от +3.3 В Щепы. - Если VTREF (PA0) не подключён к питанию цели,
Target voltageпокажет около 0 В — сканировать это не мешает. - PA13/PA14 заняты светодиодами, поэтому SWD самой Щепы недоступен — перешивать её через DFU.
- PB0 прошивка переключает при работе SWD — к нему на Щепе ничего не подключайте.
Подробнее — в описании форка.
Настройка VSCode
Заголовок раздела «Настройка VSCode»Отладчик «Лобзик», полностью совместим с расширением Cortex-Debug для Visual Studio Code. Ниже приведено пошаговое руководство по настройке отладки.
🔧 Предварительные требования
Заголовок раздела «🔧 Предварительные требования»- Установлено расширение Cortex-Debug в VS Code.
- Установлен GDB, соответствующий архитектуре вашей цели:
- Для ARM Cortex-M: arm-none-eabi-gdb
- Для RISC-V: riscv32-unknown-elf-gdb или riscv64-unknown-elf-gdb (в зависимости от ядра)
- Прошивка «Лобзика» обновлена до актуальной версии.
- Целевая плата подключена к «Лобзику» через SWD или JTAG, и подано питание на цель,включая сигнал VTARGET (VCC).
📄 Настройка launch.json
Заголовок раздела «📄 Настройка launch.json»Откройте папку проекта в VS Code и создайте/отредактируйте файл .vscode/launch.json.
Пример конфигурации для ARM Cortex-M (например, STM32):
{ "version": "0.2.0", "configurations": [ { "name": "Debug via Лобзик (BMP)", "type": "cortex-debug", "request": "launch", "servertype": "bmp", "BMPGDBSerialPort": "COM4", // ← замените на ваш порт (Windows) // "BMPGDBSerialPort": "/dev/ttyACM0", // ← Linux/macOS "gdbPath": "arm-none-eabi-gdb", "executable": "${workspaceFolder}/build/firmware.elf", "svdFile": "${workspaceFolder}/STM32F407.svd", "interface": "swd", } ]}Пример конфигурации для RISC-V (K1921VG015):
{ "name": "Debug RISC-V via Лобзик", "type": "cortex-debug", "request": "launch", "servertype": "bmp", "BMPGDBSerialPort": "COM7", // ← ваш COM-порт "gdbPath": "riscv-none-elf-gdb", "executable": "${workspaceFolder}/build/app.elf", "svdFile": "${workspaceFolder}/K1921VG015.svd", "interface": "jtag", // "powerOverBMP": "enable", // ← Питание целевого устройства от отладчика (3.3V) "overrideLaunchCommands": [ //"mon freq 1000000", // ← Частота JTAG "load" ], "overrideResetCommands": [ "mon swreset" ], "overrideRestartCommands": [ "mon swreset", "load" ]}💡 Примечания:
Заголовок раздела «💡 Примечания:»Порт BMPGDBSerialPort можно найти в диспетчере устройств (Windows) или через ls /dev/tty* (Linux/macOS). «Лобзик» создаёт два COM-порта: первый — для GDB, второй — для UART.
Команда mon swdp_scan (для SWD) или mon jtag_scan (для JTAG) необходима для обнаружения целевого ядра.
att 1 — подключается к первому обнаруженному ядру (часто targetId: 1).
Для K1921VG015 добавлены кастомные команды сброса mon swreset и mon hwreset и команда стирания flash-памяти mon erase_mass. Лобзик сам считывает состояние сервисного режима K1921VG015 и сам выбирает метод стирания.
Для стирания flash K1921VG015 в сервисном режиме:
- Подключить вывод
SERVENк питанию 3.3V - Подключить питание
K1921VG015 - Открыть в терминале
riscv-none-elf-gdb - Выполнить команды:
tar ext com2- указать com-порт отладчикаmon jtagatt 1mon erase_mass
При успешном стирании должны получить Erasing device Flash: done
▶️ Запуск отладки
Заголовок раздела «▶️ Запуск отладки»- Соберите проект и убедитесь, что .elf-файл содержит отладочную информацию (-g в флагах компиляции).
- Нажмите F5 или выберите конфигурацию в панели отладки и нажмите «Start Debugging».
- Cortex-Debug автоматически:
- Подключится к «Лобзику» через указанный COM-порт,
- Выполнит команды инициализации,
- Загрузит прошивку (load)
📚 Полезные ссылки
Заголовок раздела «📚 Полезные ссылки»- Официальная документация Cortex-Debug
- Black Magic Debug — оригинальный проект
- Прошивка Лобзика — форк Black Magic Debug: исходники, релизы и чем отличается от оригинала
- Навык «Лобзик» для ИИ-агентов
