-
Notifications
You must be signed in to change notification settings - Fork 3
Сборка и прошивка проекта
- Бинарные прошивки
- Как скачать/обновлять проект
- Настройка среды сборки для Windows:
- Установка IDE Visual Studio Code:
- Сборка
- Как завести несколько разных конфигурационных файлов
user_config.h
для сборки проекта - Пользовательские профили сборки для PlatformIO
- Обновление и прошивка по воздуху (OTA update)
- Установка и сборка проекта с помощью Билд-скрипта для Windows 8-11:
Проект можно прошить в чистую плату используя готовые сборки со страницы выпусков. Бинарные образы подготавливаются и прикрепеляются к выпускам начиная с v3.6.0.
В списке Assets
можно нати архивы factory_images_XX.zip
и firmware_images_v3.6.0.zip
. Factory - полный образ прошивки готовый для заливки в чистую плату, содержит в себе полный набор компонентов включая образ файловой системы с веб-ресурсами. Firmware - образы для обновления предыдущей версии прошивки, пригодные для заливки по воздуху через WebUI (OTA).
- Скачайте Flash Download Tool
- Выберите factory файл в соответствие со своей платой, тип чипа и размер флеш-памяти.
- Залейте образ начиная с адреса 0x00.
- Параметры прошивки:
- SPI speed 40 MHz
- SPI mode: DIO
- Flash size: "your flash size"
- upload speed: 460800
Выбрать файл под свой чип/размер памяти, поменять аргументы в команде при необходимости.
esptool.py --chip esp32 write_flash --flash_mode dio --flash_freq 40m --flash_size 4MB 0x0 firmware.factory.bin
Актуальный срез проекта всегда можно скачать в виде zip-архива по ссылке, либо перейдя по ссылке последнего релиза.
Либо можно поддерживать клон репозитория и подтягивать обновления перед каждой новой сборкой.
Открываем консоль Git-bash, клонируем репозиторий в текущую папку командой git clone --depth 1 --no-single-branch https://github.com/vortigont/FireLamp_JeeUI.git
В последующем для того чтобы обновить репозиторий достаточно перейти в папку проекта и выполнить команду git pull
. Быстро переключаться между различными ветками проекта можно командами git switch master
, git switch feat
и т.п.
После того как вы скопировали проект (в виде zip архива или через git clone), при необходимости можно в папке include
скопировать файл user_config.h.default
под новым именем user_config.h
и в нем настроить некоторые параметры сборки под свои потребности.
Для сборки проекта понадобится установить в систему Git, Python, Platformio.
Сделать это проще всего с помощью скрипта установки от (@andy040670).
Скачайте install.zip в любую доступную папку, распакуйте и запустите Install.bat
, скрипт сам скачает и запустит установку необходимых пакетов Git, Python, Platformio.
После установки пакетов можно либо допольнительно установить IDE Visual Studio Code и собирать проект в ней, либо воспользоваться [Build-скриптом](#Установка и сборка проекта с помощью Билд-скрипта для Windows 8-11).
Для сборки/разработки проекта понадобится следующее:
- Установить IDE Visual Studio Code, и в качестве плагина к ней установить Platformio. О том как это сделать можно найти массу роликов на youtube, например этот.
Проект собирается с помощью Platformio, сборка через ArduinoIDE не поддерживается ввиду паталогической неспособности ArduinoIDE работать с версионированными зависимостями и сборочнымы флагами.
- Открываем папку проекта в VSCode
- Что бы собрать прошивку, можно воспользоваться кнопками в нижней статусной строке:
-
PlatformIO:Build
- собрать прошивку -
PlatformIO:Upload
- загрузить прошивку через USB в плату.
-
Platformio
сам скачает необходимые библиотеки для сборки проекта. Убедитесь что верно выбрали необходимый профиль сборки - платформу esp32, тип прошивки с отладкой или без.
Также можно открыть терминал с помощью клавиш Ctrl+Shit+` и воспользоваться расширенными командами для сборки проекта.
-
pio run -t upload
- собрать и записать в контроллер проект по-умолчанию под платформу esp32. Будет собрана облегченная прошивка без вывода отладочных сообщений через serial интерфейс. Рекомендуется для повседневного использования, если нет нужды отлаживать работу проекта. -
pio run -e esp32debug -t upload
- собрать и прошить версию esp32 с отладкой, будет собрана прошивка под esp32 c выводом отладочных сообщений через serial интерфейс -
pio deviсe monitor -e esp32debug
- запустить serial-монитор для просмотра сообщений, выдаваемых контроллером
Для работы лапмы нужно сформировать и залить в контроллер образ файловой системы. Выполняется это командой аналогично записи прошивки, но с параметром -t uploadfs
, к примеру
-
pio run -e esp32 -t uploadfs
- записать в контроллер образ ФС под платформу esp32
После первой прошивки дальнейшие обновления можно заливать в контроллер по воздуху. Для этого нужно зайти браузером на контроллер по URL вида http://embui-xxxx/update, где xxxx это ID контроллера, нажать на кномку 'Firmware', выбрать файл с прошивкой и загрузить его в контроллер.
Файл с прошивкой Platformio
кладет в подпапки проекта:
-
.pio/build/esp32/firmware.bin
- версия под esp32 -
.pio/build/esp32debug/firmware.bin
- версия под esp32 с отладкой
Для поиска проблем и работы на ошибками можно собрать проект с выводом подробных отладочных сообщений.
Собираем прошивку с профилем esp32debug (в консоли команада pio run -e esp32debug
) и прошиваем. Теперь в последовательный порт будет выводится подробная информация о работе программы и отладочные сообщения при падаении контроллера. В консоли монитор включается командой pio device monitor -e esp32debug
. О том как получить логи в среде VSCode можно почитать на форуме
Например у вас есть несколько ламп и под каждую нужно собирать проект с разными опциями - добавить/убрать ненужный функционал, иметь разные параметры в файле user_config.h
Создаёте в каталоге include/
несколько файлов с именами по шаблону user_cfg*.h
(напр. user_cfg1.h
, user_cfg_lamp1.h
и т.д.), в файлах прописываете необходимые параметры.
О том как подключить разные файлы к сборке профиля см. ниже
В проекте можно создать свой профиль для PlatformIO на основе имеющихся и переопределить некторые параметры или переменные сборки.
Для этого нужно создать в корне проекта файл с именем user_<something>.ini
, например user_profile.ini
. В файле нужно создать пользовательскую секцию с необходимыми переопредленными параметрами для сборки.
При выполнении команд сборки платформио будет искать эти файлы и подключать к списку доступных профилей данные этих файлов.
Пример:
Файл user_profile.ini
[env:mylamp]
extends = env:esp32
; переопределяем свою плату на которой собрана лампа (список доступных плат - https://docs.platformio.org/en/latest/boards/index.html#espressif-32)
board = esp32cam
build_flags =
${flags.build_flags}
; включаем дебаг для проекта
-DLAMP_DEBUG_LEVEL=4
; используем свой конфигурационный файл отличный от `user_config.h`
-DCUSTOM_CFG='"user_cfg_my.h"'
[env:mynewlamp]
extends = env:esp32
build_flags =
${flags.build_flags}
; включаем дебаг для проекта
DLAMP_DEBUG_LEVEL=4
; включаем дебаг для EmbUI
-DEMBUI_DEBUG_LEVEL=3
; используем свой конфигурационный файл отличный от `user_config.h` (если требуется)
;-DCUSTOM_CFG='"user_cfg_mynewlamp.h"'
Теперь можно собирать свои профили проекта либо через кнопки в VSCode либо командами pio run -e mylamp
, pio run -e mynewlamp
.
Последующее обновление ПО можно осуществлять по воздуху, без подключения лампы кабелем. Можно обновить проект, собрать прошивку и залить полученный файл через форму обновления открыв лампу в браузере (напр. http://firelamp/upload), где firelamp это имя хоста или ip-адресс контроллера в сети. Так же можно воспользоваться скриптом для платформио, который автоматически зальет прошивку в лампу. Для этого нужно создать свой профиль сборки проекта и указать в нем адрес доступа к лампе.
- Создайте в каталоге проекта файл
user_profile.ini
- скопируйте в файл пример секции
; OTA Upload example
из файлаplatformio.ini
- раскомментируйте параметры, убрав
;
в начале строк - замените в параметре
upload_port = http://firelamp/update
имя устройства лампы на свое или на ip адрес - соберите и загрузите прошивку в лампу командой
pio run -e ota -t upload
Для пользователей Windows OS нежелающих заниматься самостоятельной полной установкой VSCode и зависимых компонентов можно воспользоваться builder-скриптом. Билдер был изначально написан поользоватлем @kostyamat (за что ему спасибо), позже адаптирован под форк текущей комадой (@andy040670).
Билдер-скрипт при запуске на чистой системе последовательно предложит шаги по установки Python for Windows, git, Platformio, клонирование репозитория и сборку требуемого варианта прошивки. Впоследствии этим же скриптом можно легко обновлять изменения в репозитории и собирать обновлённую прошивку.
Для начала работы нужно скачать архив проекта в Гитхаб в виде zip-файла, распаковать его во временную директорию и запустить скрипт. Скрипт предложит вам заново склонировать репозиторий в другой каталог на произвольный диск в системе. После установки времненную копию можно удалить.
Запускаем Builder.bat
.
Поочерёдно вводим команды:
-
E
- сотрёт флеш, рекомендуется, если в контроллере уже есть какая ни будь прошивка. -
1
- Обновит ваш репо до актуального состояния из гита. Изменённые вами файлы затронуты не будут. -
5
- Соберёт прошивку и зальёт её в контроллер. -
F
- Соберёт ФС и зальёт её в контроллер.
Поочерёдно вводим команды:
-
1
- Обновит ваш репо до актуального состояния из гита. Изменённые вами файлы затронуты не будут. -
4
- Соберёт прошивку, прошивка будет находиться в папке "out_bin". -
b
- Соберёт ФС, образ ФС будет находиться в папке "out_bin".
Захдим в веб лампы/панели, в настройках жмём "Обновление firmware", выбираем папку "out_bin" и поочерёдно шьём оба файла. Можно собрать прошить только ФС, если были внесены какие ни будь изменения в папке "data".
-
3
- обновит и перезапишет ВСЕ файлы с гита, файл user_config.h затронут не будет. -
С
- удалит временную папки ".pio" и "out_bin". Рекомендуется удалять перед новой сборкой после обновления репозитория дабы избежать ошибок компиляции.
Остальные команды служебные, используются редко, по необходимости и смысл их понятен по описанию.
Note
Скрипт билдера поддерживается по остаточному принципу. В случае проблем со сриптом рекоммендуется использовать сборку через bash-git консоль и команды платформио.