Awesome
Segger Embedded Studio project for Flipper Zero firmware
Установка
- Добавить данный репозиторий в качестве сабмодуля в корень локальной копии репозитория
flipperzero-firmware
git submodule add https://github.com/hedger/flipperzero-sesproject.git sesproject
git submodule update --init --recursive
Зависимости
- Установить Segger Embedded Studio for ARM
- Установить gcc-arm-eabi-none
- Скачать OpenOCD и добавить в PATH
- Python 2+ для скрипта автоматического обновления версии сборки
Начальная конфигурация SES
-
Tools > Options > Building:
- В Global Macros добавить
GCCRoot
со значением пути распакованного тулчейна +/bin
(например,GCCRoot=D:/Tools/GNU Arm Embedded Toolchain/10 2021.10/bin
) - Parallel Building Threads = число ядер процессора
- В Global Macros добавить
-
Tools > Options > Environment > User Interface:
- Application Main Font + Application Monospace Font поправить на удобные значения
- Theme =
Dark
/Operating System Default
-
Tools > Options > Languages:
Для всех языков установить Indent Size и Tab Size в 4
-
Tools > Options > Text Editor:
-
Formatting > Use .clang-format file = Yes (ВАЖНО! Позволяет форматировать код по кодстайлу нажанием ctrl+k ctrl+f)
-
Formatting > Formatting Indent Size = 4
-
Visual Appearance > Font = по вкусу
-
Visual Appearance > Line Numbers =
All lines
-
Настройки сборки
SES использует концепцию "конфигураций" для формирования окончательных настроек солюшена. Конфигурации бывают публичные и приватные:
- Приватные содержат фрагмент настроек - опции компилятора, отладчика и т.д.;
- Публичные наследуют одну или несколько приватных конфигураций и собирают воедино настройки из них.
Также в солюшене практически все его части - сам солюшен, отдельные проекты, отдельные папки и файлы в проекте - могут оверрайдить настройки под конкретную конфигурацию, публичную или приватную.
Данный солюшен поставляется с несколькими приватными конфигрурациями:
- Конфиги под аппаратную ревизию Флиппера - F6 или F7
- Конфиги релизной и отладочной сборки
- Конфиги отладки через JLink и gdb/OpenOCD
...и двумя публичными, Release и Debug, в которых изначально выбран F7 и OpenOCD.
Настроить публичные конфигурации можно в меню Projects > Build Configurations, изменив чекбоксы у приватных конфигураций.
Поддержка CCache
Проект поддерживает ускорение повторных сборок с использованием CCache.
Под Windows, достаточно скачать собранный ccache.exe и разместить либо в PATH, либо в папке /bin
тулчейна.
По умолчанию поддержка CCache отключена, её можно добавить во все конфигурации через меню настройки сборки (Alt+Return при выбранном с дереве солюшене).
Отладка и прошивка из SES
-
Для сборки и загрузки прошивки в Флиппер под отладкой: F5 (Debug > Go).
-
Для подключения к Флипперу с уже работающей прошивкой: Ctrl+T, H (Target > Attach Debugger)
-
Для отключения отладки: Ctrl+T, D (Target > Disconnect)
NB: В случае использования подключения через OpenOCD, при остановке отладки SES преждевременно убивает сервер gdb, из-за чего Флиппер остаётся приостановленным. Для обхода этой проблемы можно запускать OpenOCD с помошью scripts/start_gdb_openocd.cmd
- SES при запуске отладки подключится к нему, а не будет запускать свой инстанс сервера. При отключении отладки этот инстанс OpenOCD не убивается SES, поэтому продолжение работы устройства корректно срабатывает. Подобной проблемы при подключении через JLink нет.
Скрипты
Для прошивки firmware и bootloader без использования SES подготовлены скрипты в папке scripts
. Для записи используется сборка под таргет f7. Запись выполняется через OpenOCD, необходимо его наличие в PATH
.
Прочее
-
Солюшен автоматически загружает все необходимые файлы с кодом при загрузке. Однако, если создать файл в файловой системе во время работы IDE, необходимо синхронизировать дерево солюшена: Project > Reload Flipper.
-
Файл проекта
flipperzero.emSession
- простой XML, многие опции проще править руками прямо в нём, чем разбираться с выбором конфигурации в интерфейсе SES. -
Дефайны для
firmware
с флагами и выбором приложений редактируются либо прямо в файле проекта, либо через SES:- выбрать проект в дереве солюшена, открыть свойства;
- выбрать конфигурацию "Common";
- отредактировать Code > Preprocessor > Preprocessor Definitions.