Блог
Компиляция ESP32: ошибки, флаги, скорость
Ошибки компиляции, пропавшие инструментарии, войны с правами на Windows — сборка ESP32 падает предсказуемыми способами, и починки короткие, если знаешь, куда смотреть. Ответы на вопросы о компиляции, которые реально останавливают людей.
Не компилируется плата ESP32?
Обычный виновник — пакет плат: если в Tools → Board нет записей ESP32 или сборка умирает с «exec: gcc: No such file» в самом начале, ядро arduino-esp32 отсутствует или установлено наполовину. Переустановите его из Boards Manager, перезапустите IDE и компилируйте снова. Повреждённый пакет плат стоит за большинством жалоб «не компилируется». FAQ по Arduino IDE разбирает установку по шагам.
Как скомпилировать и прошить код на C в ESP32?
Используйте ESP-IDF или PlatformIO — оба компилируют чистый C. В ESP-IDF: idf.py build, затем idf.py -p COM5 flash. В PlatformIO: platformio.ini с framework = espidf, а pio run -t upload делает оба шага. Ваш main.c в любом случае лежит в папке main/.
Можно ли собрать ESP32 с нуля?
Сам чип — нет: ESP32 это SoC фабричного производства с радиофронтендом и требованием кварца на 40 МГц; вручную такое не собирают. Что можно собрать с нуля — плату вокруг голого модуля: припаяйте модуль ESP32-WROOM на плату-носитель с расчищенной зоной под антенну, добавьте USB-serial чип и регулятор на 3,3 В — и devkit готов.
Ошибка «Access is denied» при компиляции ESP32?
«Access is denied» во время сборки — специфика Windows: компилятору нечем писать в папку проекта. Антивирус, блокирующий каталог сборки, синхронизация OneDrive или путь внутри Program Files — любое из этого срабатывает. Перенесите проект в C:dev или другой простой путь, исключите папку из проверки антивирусом и пересоберите. На моей машине виновником был OneDrive; перевод папки в офлайн починил всё за минуту.
Сколько раз можно компилировать ESP32?
Компиляция — это просто запись на диск: тысячи сборок чипу не навредят. Предел выносливости — циклы стирания флеша, примерно 10 000 на сектор, и считается только прошивка. Плата, прошиваемая раз в день, спокойно живёт 27 лет; компиляция без прошивки бесплатна вечно.
Почему первая сборка такая медленная?
Первая сборка компилирует весь SDK — закладывайте 5–10 минут; всё после неё инкрементально. Выберите цель один раз (idf.py set-target) и не делайте clean по привычке. На Linux и macOS заметное ускорение даёт ccache.
Библиотека BLE не компилируется?
Скетчи с BLE обычно падают, потому что библиотека собрана под старое ядро: arduino-esp32 2.x и 3.x изменили API BLE, и библиотека, заточенная под одну версию, ломается на другой. Зафиксируйте ядро на версии, которую называет README библиотеки, либо обновите библиотеку. Быстрее всего ищется по запросу «can’t compile esp32 dev board ble library» — это известное гнездо несовместимости версий.
Что означают все эти флаги компилятора?
-Os оптимизирует под размер, это дефолт ESP32; -DARDUINO_ARCH_ESP32 определяет ядро, а не вы. В Arduino флаги вы почти никогда не трогаете. В PlatformIO свои добавляет board_build_flags; в ESP-IDF параметры компиляции живут в menuconfig, а не в командной строке. FAQ по PlatformIO содержит синтаксис флагов.
Можно ли скомпилировать прошивку ESP AT для ESP32 S3?
Да — ESP-AT официально поддерживает ESP32-S3 начиная с v3.0, и собирается она из репозитория esp-at как обычный проект ESP-IDF. Нужен модуль с флешем 4 МБ или больше; нативный USB S3 также открывает путь AT+USBSERIAL.
Можно ли запустить Android на ESP32?
Нет — ESP32 микроконтроллер, а не процессор приложений: Android нужен MMU и заметно больше RAM. Тем, кто ищет «как собрать android для esp32», обычно нужно приложение для Android, которое общается с платой: приложение-компаньон на MQTT или BLE, пока ESP32 выполняет серверный скетч. Такая связка делается просто — сторону платы смотрите в FAQ по прошивке.
Проекты по этой теме запускаются прямо в бесплатном симуляторе sensbench: схема уже собрана, прошивка включена — без аккаунта и установки.