Pull to refresh

Comments 12

>После настройки среды необходимо добавить в файл конфигурации VS Code путь подключения библиотек чтобы их видел InteliSense в файлах приложений

Не надо так делать, IntelliSense работает с compile_commands.json, который генерится при сборке полной прошивки. Он оттуда возьмёт все необходимые пути до инклюдов (и не добавит лишние/приватные, как это делает приведённый пример).

Ещё есть ufbt - standalone сборщик приложений, с которым не нужно тащить и собирать всю прошивку целиком. Очень советую пользоваться именно им.

Спасибо за обратную связь! Поправлю конфигурацию VSCode.

При использовании ufbt приходится furi_delay_ms(5000) в мейн вставлять чтобы успевать запустить дебаггер или в консоли gdb выполнять команду break applications/main/fap_loader/fap_loader_app.c:107, потому что прошивка в бинарном виде, и нельзя просто так поставить бряку на applications/main/fap_loader/fap_loader_app.c:107 в интерфейсе vscode. И флиппер нужно присоединять к компу одновременно через usb (для аплоада приложения) и stlink для отладки.

В целом рабочая конструкция, но было бы здорово чтобы всё это было сильно проще.

Мы планируем некоторые улучшения со стороны отладки - ожидание аттача дебаггера и прочие мелочи.

Избавиться от usb пока не получится, rpc для заливки файлов через swd/дебаг-борду недоступен.

Апдейт: добавили брейкпойнт до запуска приложения. При активной сессии отладки будет триггериться брейкпойнт после загрузки кода в память, но до его запуска. В этот момент можно расставить все нужные точки в самом коде приложения.

Рад, что моя статья оказалась полезной!

для этого нам понадобится: внутрисхемный программатор ST-Link V2

Получается, без физической железки отладка Флиппера невозможна?

Да, без железки особо отладить не получиться, только если на экран/GPIO что-то выводить. С программатором можно посмотреть буквально все что происходит с микроконтроллером внутри (прерывания, регистры процессора, и многое другое, можно даже инструкции на ассемблере смотреть)

C dev board запуск выглядит также?
./fbt launch_app APPSRC=./applications_user/hello_world
./fbt
./fbt FORCE=1 flash_blackmagic

На этих этапах всё нормально. Но при запуске отладки vscode никак не реагирует. Для сравнения, если попробовать запустить режимы отладки с другими устройствами, которых у меня нет (например, "Attach FW (ST-Link)"), запускается gdb с ожидаемой ошибкой.
@hedger, подскажите, что я делаю не так? :)

Какая ОС?

Нужно посмотреть на логи вскода в окне отладки, содержимое вкладки консоли GDB. Если там не будет очевидных причин, то напишите в оф. группе в Телеграме, разберёмся.

Отладка заработала, когда заменил в строке конфига launch.json значение свойства "gdbTarget" с "${input:BLACKMAGIC}" на "tcp:192.168.64.107:2345". Хотя команда ./fbt get_blackmagic отдает корректный адрес (как для wifi, так и для usb), он по какой-то причине не подхватывается дальше. Запускал под актуальной macOS Ventura 13.3 (22E252) на свежей версии VSCode 1.77.0. До замены ошибок в логах не было, при запуске отладки на миг возникала анимация (тонкая синяя полоска прогресс бара), исчезала, и больше ничего.

Tasks Shell Input (1.8.2) был установлен вместе со всей рекомендуемой обвязкой для VSCode после клонирования репозитория, как описывается в статье.

Sign up to leave a comment.

Articles