Eng | Рус

Настройка CLion + esp-idf + Arduino core for the ESP32

Arduino IDE удобна для запуска небольших скетчей, так как настроить и установить ее очень просто, но для профессионального использования или просто для разработки больших проектов ее не достаточно.

Отсутствие функций работы с GIT, форматирования кода, навигации по коду и удобной работы с несколькими модулями приравнивают ее больше к продвинутому текстовому редактору чем к IDE.

В отличии от Arduino IDE, Intellij CLion лишена таких недостатков, но требует настроек, которые на первый взгляд могут быть не очевидны.

В даной статье я приведу пошаговую инструкцию, как настроить CLion для разработки под ESP32 и пример запуска простого скетча Arduino IDE в CLion. Инструкция предполагает, что вы используете Windows 10.

Программное обеспечение, которое требуется установить:

MinGW

  1. Заходим на http://mingw-w64.org/doku.php/download/mingw-builds.
  2. Нажимаем на ссылку Sourceforge.
  3. Скачиваем mingw-w64-install.exe.
  4. Сохраняем и запускаем файл.
  5. Устанавливаем в папку C:\programs.
  6. При установке выбираем все настройки по умолчанию.

esp-idf

Для скачивания esp-idf нам понадобится GitBash, который можно скачать по ссылке https://git-scm.com/download/win. Страницу версии можно найти по адресу https://github.com/espressif/esp-idf/releases/tag/v4.0.1. В даном примере будем скачивать esp-idf в папку C:\programs.

  1. Открываем GitBash.
  2. Заходим в папку C:\programs:

    cd /c/programs

  3. Клонируем репозиторий:

    git clone -b v4.0.1 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.0.1

esp-idf-tools

Самый простой способ установить программы необходимые для работы esp-idf - это использовать инсталлятор.

В процессе установки будут открываться разные окна, ждем и ничего не закрываем. Даем права администратора по требованию.

  1. Скачать и запустить https://dl.espressif.com/dl/esp-idf-tools-setup-2.3.exe, так же ссылка для скачивания доступна на странице https://docs.espressif.com/projects/esp-idf/en/v4.0.1/get-started/windows-setup.html.
  2. Далее необходимо установить зависимости для Python, для этого запускаем cmd (Win+R → cmd → Enter) и выполняем:

    C:\Users\admin\AppData\Local\Programs\Python\Python37\python.exe -m pip install --user -r C:\programs\esp-idf-v4.0.1\requirements.txt

Не забываем заменить admin на имя вашего пользователя.

Настройка переменных среды окружения

  1. Открываем cmd (Win+R → cmd → Enter).
  2. Заходим в папку C:\programs\esp-idf-v4.0.1 и выполняем install.bat:


    bash
    cd C:\programs\esp-idf-v4.0.1
    install.bat
    export.bat

  3. Теперь установленные переменные среды окружения терминала необходимо перенести в переменные среды окружения Windows, что бы они были доступны для CLion. Вводим set что бы посмотреть все переменные в консоли. Нужные нам переменные начинаются на IDF_.
  4. Для примера, что бы добавить переменную среды окружения IDF_PATH=C:\programs\esp-idf-v4.0.1:
    1. Нажимаем на кнопку Пуск и в поиске вводим env → запускаем Edit system environment variables.
    2. Нажимаем Environment Variables....
    3. В нижней части окна нажимаем New.
    4. Заполняем имя (IDF_PATH) и значение (C:\programs\esp-idf-v4.0.1) и нажимаем OK.
    5. Заполняем остальные переменные.
    6. Так же необходимо добавить пути в переменную PATH.
    7. Закрываем все окна нажатием кнопки OK.
  5. Список переменных:


    IDF_CCACHE_ENABLE=1
    IDF_PATH=C:\programs\esp-idf-v4.0.1
    IDF_PYTHON_ENV_PATH=C:\Users\admin\.espressif\python_env\idf4.0_py3.7_env
    IDF_TOOLS_PATH=C:\Users\admin\.espressif
    IDF_GIT_DIR=C:\Program Files\Git\cmd\
    IDF_PYTHON_DIR=C:\Users\admin\AppData\Local\Programs\Python\Python37\

    Последнюю переменную добавлять не обязательно, так как она уже есть в переменных пользователя. Так же вместо системных переменных все переменные можно добавлять в список переменных пользователя.

  6. Пути, которые следует добавить в переменную PATH:


    C:\Users\admin\.espressif\tools\xtensa-esp32-elf\esp-2019r2-8.2.0\xtensa-esp32-elf\bin
    C:\Users\admin\.espressif\tools\esp32ulp-elf\2.28.51.20170517\esp32ulp-elf-binutils\bin
    C:\Users\admin\.espressif\tools\cmake\3.13.4\bin
    C:\Users\admin\.espressif\tools\openocd-esp32\v0.10.0-esp32-20190313\openocd-esp32\bin
    C:\Users\admin\.espressif\tools\mconf\v4.6.0.0-idf-20190628\
    C:\Users\admin\.espressif\tools\ninja\1.9.0\
    C:\Users\admin\.espressif\tools\idf-exe\1.0.1\
    C:\Users\admin\.espressif\tools\ccache\3.7\
    C:\Users\admin\.espressif\python_env\idf4.0_py3.7_env\Scripts
    C:\programs\esp-idf-v4.0.1\tools

esp-idf Hello World

Что бы проверить, что esp-idf установлена корректно, скомпилируем простую программу из примеров. В даном примере будем использовать папку C:\src для хранения исходников.

  1. Скопируем пример C:\programs\esp-idf-v4.0.1\examples\get-started\hello_world в папку C:\src, чтобы получилось C:\src\hello_world.
  2. Далее запускаем CLion и в меню выбираем New CMake Project from Sources....
  3. Вибираем C:\src\hello_world → OK.
  4. Open Existing Project.

    После того, как проект загрузился необходимо настроить Toolchains.

  5. File → Settings → Build, Execution, Deployment → Toolchains.
  6. Нажимаем на "+" и выбираем MinGW.
  7. В поле Environment указываем путь к установленному MinGW.
  8. Нажимаем OK.
  9. Переходим во вкладку CMake и ожидаем окончания загрузки CMake файла.

Если процесс прошел успешно, то вы должны увидеть надпись [Finished] и в выпадающем списке появятся конфигурации запуска. Для запуска конфигурации следует нажимать кнопку Build, а не Run.

Две основные задачи запуска это:

Настройка Arduino core for the ESP32

  1. Открываем GitBash и клонируем репозиторий в папку components:


    bash
    cd /c/src/hello_world/
    mkdir components
    cd components
    git clone https://github.com/espressif/arduino-esp32.git arduino
    cd arduino/

    Стабильная версия доступна только для для версии esp-idf 3x, по этому следует переключиться на ветку v4.0, которая находится в разработке:


    bash
    git checkout idf-release/v4.0
    git pull
    git submodule update --init --recursive

  2. Переходим в CLion и в терминале запускаем idf.py menuconfig, если команда не запускается, то растяните окно терминала и разверните CLion на весь экран.
  3. Установите флажок Component config → mbedTLS → Enable mbedtls certificate expiry check.
  4. Установите флажок Arduino Configuration → Disable mutex locks for HAL.
  5. Нажмите Save, а затем Exit.
  6. На этом шаге мы произведем воркэраунд, который позволит нам работать с четвертой версией фреймворка, возможно, когда четвертая версия Arduino core for the ESP32 станет стабильной это не потребуется:
    1. Открываем C:\src\hello_world\components\arduino\cores\esp32\Arduino.h.
    2. Добавляем строку #define MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED сразу после #define Arduino_h.
  7. Переименовываем (Shift+F6) hello_world.c в main.cpp .
  8. Заменяем содержимое main.cpp на :
    
    #include "Arduino.h"
    
    extern "C" void app_main() {
                initArduino();
                setup();
                for (;;) {
                    loop();
                }
            }
    
    void setup() {
                Serial.begin(115200);
                Serial.printf("Hello world!\n");
            }
    
    void loop() {}
                
  9. Переходим в вкладку CMake и нажимаем Reload CMake Project.
  10. Нажимаем кнопку Build.

Таким образом мы получили стандартный скетч Arduino IDE и все возможности среды разработкт CLion.

Версии программного обеспечения использованные при написании инструкции:



© devices.fc0.org