Добавить в корзинуПозвонить
Найти в Дзене
K12 :: О ESP32 и не только

Система сборки ESP-IDF

Данная статья представляет собой более-менее “читабельный” перевод раздела 4.6 “Build system” ESP-IDF Programming Guide на декабрь 2024 г. Полную версию статьи вы можете прочитать на моем сайте https://kotyara12.ru/iot/esp-idf-builder/ Рекомендуется к прочтению всем, кто хочет создавать приложения (прошивки) для ESP32 и ESP-IDF, в том числе и с помощью PlatformIO. Из данного раздела вам станет ясно-понятно: Проект ESP-IDF можно рассматривать как объединение ряда отдельных составляющих. Например, для веб-сервера на ESP32, который показывает в вашем браузере текущую влажность, это могут быть: ESP-IDF делает все эти компоненты явными и настраиваемыми. При компиляции проекта система сборки будет искать необходимые компоненты в каталогах ESP-IDF, каталогах проекта и (опционально) в дополнительных пользовательских каталогах компонентов. Кроме этого, она позволяет пользователю настраивать проект ESP-IDF, включая каждый используемый компонент, с помощью текстовой системы меню. После настройк
Оглавление

Данная статья представляет собой более-менее “читабельный” перевод раздела 4.6 “Build system” ESP-IDF Programming Guide на декабрь 2024 г.

Полную версию статьи вы можете прочитать на моем сайте https://kotyara12.ru/iot/esp-idf-builder/

Рекомендуется к прочтению всем, кто хочет создавать приложения (прошивки) для ESP32 и ESP-IDF, в том числе и с помощью PlatformIO. Из данного раздела вам станет ясно-понятно:

  • как работает система сборки проектов ESP-IDF
  • как создать и настроить новый проект ESP-IDF
  • что за файлы CMakeList.txt, для чего они нужны, и как правильно заполняются
  • как подключить сторонние библиотеки (в терминах ESP-IDF – компоненты) к проекту
  • как подключить к проекту или компоненту двоичные или текстовые файлы (например PEM)
  • как правильно настроить зависимости библиотек друг от друга
  • и многое другое
Изображение из открытого доступа
Изображение из открытого доступа

Обзор

Проект ESP-IDF можно рассматривать как объединение ряда отдельных составляющих. Например, для веб-сервера на ESP32, который показывает в вашем браузере текущую влажность, это могут быть:

  • Базовые библиотеки ESP-IDF (libc, привязки к GPIO, таймеры и т. д.)
  • Драйвер Wi-Fi
  • Стек TCP/IP
  • Операционная система FreeRTOS
  • Веб-сервер HTTP SERVER
  • Драйвер для датчика влажности
  • Основной прикладной код, связывающий все это воедино

ESP-IDF делает все эти компоненты явными и настраиваемыми. При компиляции проекта система сборки будет искать необходимые компоненты в каталогах ESP-IDF, каталогах проекта и (опционально) в дополнительных пользовательских каталогах компонентов. Кроме этого, она позволяет пользователю настраивать проект ESP-IDF, включая каждый используемый компонент, с помощью текстовой системы меню. После настройки компонентов в проекте система сборки скомпилирует проект.

Концепции

  • Проект (Project)” — это каталог, содержащий все файлы и параметры для создания одного «приложения» (исполняемого файла), а также дополнительные файлы, такие как таблица разделов, разделы данных/файловой системы и загрузчик.
  • Конфигурация проекта (Project configuration)” хранится в одном файле, который называется sdkconfig и находится в корневом каталоге проекта. Этот файл конфигурации должен изменяться не “вручную”, а с помощью команды (утилиты) для настройки конфигурации проекта – idf.py menuconfig (pio run -t menuconfig для PlatformIO). Один проект может содержать только одну конфигурацию проекта.
  • Приложение (App)” — это исполняемый файл, созданный с применением ESP-IDF. Один проект обычно создает сразу два приложения — «приложение проекта» (основной исполняемый файл, т. е. ваша кастомная прошивка) и «приложение загрузчика» (начальная программа загрузчика, которая запускает приложение проекта).
  • Компоненты (Components)” — это модульные части автономного кода, которые компилируются в статические библиотеки (файлы .a) и связываются с приложением. То есть другими словами – библиотеки. Некоторые из них предоставляются самим ESP-IDF, другие могут быть получены от сторонних авторов или созданы Вами.
  • «Цель (Target)» — это оборудование (серия чипа ESP32 – примечание перев.), для которого было создано Ваше приложение. Полный список поддерживаемых серий в вашей версии ESP-IDF можно увидеть, запустив команду idf.py --list-targets.

Некоторые объекты не являются частью проекта:

Я честно пытался перенести технический текст в этот блог. "Ну не шмогла я, не шмогла...". Поскольку Дзен не очень подходит (а точнее - совсем не подходит) для технических статей, я в итоге решил не мучать ж... и опубликовать здесь только небольшой анонс статьи.
Полную версию статьи вы можете прочитать на моем сайте https://kotyara12.ru/iot/esp-idf-builder/.
Благодарю за понимание.