Перейти к содержимому

Лобзик

  • Полная поддержка 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: Щепа становится отладчиком Black Magic Probe с GDB-сервером и UART цели. Шьётся так же, через DFU (fretsaw_bmp.bin из релизов).

Цель подключается напрямую к выводам Щепы. UART TX Щепы (PA2) — на RX цели, UART RX (PA3) — на TX цели.

Схема подключения Щепа L432 с прошивкой Лобзика: выводы SWD/JTAG, UART и VTREF

Чем Щепа отличается от Лобзика:

  • Только 3,3 В — трансляторов уровней нет, цель должна работать от 3,3 В.
  • Нет ключа питания цели — mon tpwr ничего не включает; цель питается сама или от +3.3 В Щепы.
  • Если VTREF (PA0) не подключён к питанию цели, Target voltage покажет около 0 В — сканировать это не мешает.
  • PA13/PA14 заняты светодиодами, поэтому SWD самой Щепы недоступен — перешивать её через DFU.
  • PB0 прошивка переключает при работе SWD — к нему на Щепе ничего не подключайте.

Подробнее — в описании форка.

Отладчик «Лобзик», полностью совместим с расширением Cortex-Debug для Visual Studio Code. Ниже приведено пошаговое руководство по настройке отладки.

  1. Установлено расширение Cortex-Debug в VS Code.
  2. Установлен GDB, соответствующий архитектуре вашей цели:
  3. Для ARM Cortex-M: arm-none-eabi-gdb
  4. Для RISC-V: riscv32-unknown-elf-gdb или riscv64-unknown-elf-gdb (в зависимости от ядра)
  5. Прошивка «Лобзика» обновлена до актуальной версии.
  6. Целевая плата подключена к «Лобзику» через SWD или JTAG, и подано питание на цель,включая сигнал VTARGET (VCC).

Откройте папку проекта в 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 jtag
    • att 1
    • mon erase_mass

При успешном стирании должны получить Erasing device Flash: done

  1. Соберите проект и убедитесь, что .elf-файл содержит отладочную информацию (-g в флагах компиляции).
  2. Нажмите F5 или выберите конфигурацию в панели отладки и нажмите «Start Debugging».
  3. Cortex-Debug автоматически:
  • Подключится к «Лобзику» через указанный COM-порт,
  • Выполнит команды инициализации,
  • Загрузит прошивку (load)