- Добавить данный репозиторий в качестве сабмодуля в корень локальной копии репозитория
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+ для скрипта автоматического обновления версии сборки
-
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 при выбранном с дереве солюшене).
-
Для сборки и загрузки прошивки в Флиппер под отладкой: 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.