Лобзик
SWD/JTAG отладчик на базе Black Magic Debug
- Полная поддержка Black Magic Debug: отладка «из коробки» без необходимости в дополнительном ПО вроде OpenOCD.
- Два режима подключения: SWD (Serial Wire Debug) и JTAG — для максимальной гибкости.
- Встроенная GDB-серверная функциональность: подключайтесь напрямую через GDB — никаких промежуточных утилит.
- Открытая прошивка и схемотехника: вы можете изучать, модифицировать и адаптировать под свои задачи.
- Поддержка целей RISC-V: идеален для работы с современными микроконтроллерами.
- Поддержка К1921ВГ015
Настройка 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
Откройте папку проекта в 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)

