Установка среды разработки ESP-IDF для ESP32 |
![]() |
Добавил(а) microsin | ||||||
Зайдите на страничку быстрого старта [1]. Найдите ссылку на инсталлятор для Windows [2] (Windows Installer Download). Выберите вариант Universal Online Installer, скачайте исполняемый файл инсталлятора (esp-idf-tools-setup-online-2.14.exe), запустите, пойдет процесс установки. На начальном этапе установки кликните на кнопку Apply Fixes (применить исправления). После установки исправлений кликните на кнопку Next. На следующем окне выберите Download ESP-IDF, кликните Next. На следующем окне выберите последнюю версию (на момент установки это была версия v4.4), при необходимости поменяйте диск для установки (я поменял на M:, потому что на диске C: было мало места).
На следующем окне оставьте все опции без изменения.
После клика на кнопку Install запустится процесс установки. В окошках с запросами о разрешении установки различных драйверов подтверждайте установку кликом на кнопку "Установить". Процесс установки займет по времени около 20 минут. После завершения установки на рабочем столе появятся ярлыки Espressif-IDE, ESP-IDF 4.4 CMD и ESP-IDF 4.4 PowerShell. Первый ярлычок запускает среду разработки на основе Eclipse, а последние два командную строку с подсказкой по компиляции проекта. 1. Выберите в меню File -> New -> Espressif IDF Project, откроется окно, где нужно указать произвольное имя для проекта, например hw. Кликните Next. 2. Поставьте галочку "Create a project using one of the template". Выберите проект hello_world. Кликните Finish. Примечание: завершение шага 2 автоматически создаст папку hello_world для проекта в рабочем каталоге (по умолчанию это каталог workspace, который находится в каталоге установки ESP-IDF, у меня это папка m:\Espressif\frameworks\esp-idf-v4.4\workspace\). В рабочем каталоге также находится папка .metadata, где записаны все текущие настройки ESP-IDF. Может быть несколько рабочих каталогов, и между ними можно переключаться, что бывает довольно удобно. Сохраняйте содержимое папки .metadata, это позволит сохранить состояние рабочего окружения при переустановке ESP-IDF, или при переходе на новый компьютер. 3. В окне Project Explorer появится новая строчка наподобие hello_world [esp-idf-v4.4 8153bfe]. Разверните дерево проекта и ознакомьтесь с его содержимым. 4. Подключите вашу платку к компьютеру через порт USB. Это может быть платка с мостом USB-UART CP2104, наподобие MINI132 с установленным модулем ESP-WROOM-32, или VGA32_V1.4 с модулем TTGO T-MICRO32.
После подключения на компьютере появится новый COM-порт. В моем случае это оказался COM12. Примечание: номер (имя) COM-порта можно узнать в Диспетчере Устройств. Имя COM-порта понадобится, когда будем запускать прошивальщик для взаимодействия с загрузчиком платы. 5. Выберите подходящую цель (target) для компиляции. Для этого кликните на шестеренку в третьем выпадающем списке панели инструментов (on:): Откроется окно для создания новой цели. В выпадающем списке IDF Target выберите esp32, а в Serial Port выберите порт, который образовался на шаге 4. Кликните Finish. 6. Скомпилируйте проект через меню Project -> Build Project. Через несколько минут проект скомпилируется, процесс компиляции будет отображаться в окне Console. Примечание: в текущей конфигурации может быть несколько открытых проектов. Например, это могут быть проекты для отдельных библиотек. В этом случае пункт меню Build All (Ctrl+B) выполнит сборку всех проектов. После завершения отобразится текст со статистикой компиляции: Generated M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/hello_world.bin [1011/1011] cmd.exe /C "cd /D M:\Espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build\esp-idf\esptool_py && python M:/Espressif/frameworks/esp-idf-v4.4/components/partition_table/check_sizes.py --offset 0x8000 partition --type app M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/partition_table/partition-table.bin M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/hello_world.bin" hello_world.bin binary size 0x29740 bytes. Smallest app partition is 0x100000 bytes. 0xd68c0 bytes (84%) free. Build complete (0 errors, 0 warnings): M:\Espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build m:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe m:\Espressif\frameworks\esp-idf-v4.4\tools\idf_size.py M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/hello_world.map Total sizes: Used static DRAM: 11308 bytes ( 169428 remain, 6.3% used) .data size: 9028 bytes .bss size: 2280 bytes Used static IRAM: 45479 bytes ( 85593 remain, 34.7% used) .text size: 44452 bytes .vectors size: 1027 bytes Used stat D/IRAM: 56787 bytes ( 255021 remain, 18.2% used) .data size: 9028 bytes .bss size: 2280 bytes .text size: 44452 bytes .vectors size: 1027 bytes Used Flash size : 115147 bytes .text : 84543 bytes .rodata : 30348 bytes Total image size: 224161 bytes (.bin may be padded larger) m:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe m:/Espressif/frameworks/esp-idf-v4.4//components/ partition_table/gen_esp32part.py M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/ partition_table/partition-table.bin Total time taken to build the project: 209 335 ms 7. Теперь осталось прошить нашу первую программу в память микроконтроллера. Для этого используется UART-загрузчик. Выберите в меню Run -> Run (Ctrl+F11). Если не был выбран COM-порт для подключения на шаге 5, то отроется окно, предлагающее выбрать порт. Процесс вывода сообщений загрузчика будет отображаться в окне Console. [1/5] cmd.exe /C "cd /D M:\Espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build\esp-idf\esptool_py && python M:/Espressif/frameworks/esp-idf-v4.4/components/partition_table/check_sizes.py --offset 0x8000 partition --type app M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/partition_table/partition-table.bin M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/hello_world.bin" hello_world.bin binary size 0x29740 bytes. Smallest app partition is 0x100000 bytes. 0xd68c0 bytes (84%) free. [2/5] Performing build step for 'bootloader' [1/1] cmd.exe /C "cd /D M:\Espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build\bootloader\esp-idf\esptool_py && python M:/Espressif/frameworks/esp-idf-v4.4/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x1000 M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build/bootloader/bootloader.bin" Bootloader binary size 0x62c0 bytes. 0xd40 bytes (12%) free. [2/3] cmd.exe /C "cd /D M:\Espressif\frameworks\esp-idf-v4.4\components\esptool_py && M:\Espressif\tools\cmake\3.20.3\ bin\cmake.exe -D IDF_PATH="M:/Espressif/frameworks/esp-idf-v4.4" -D SERIAL_TOOL="python M:/Espressif/frameworks/esp-idf-v4.4/components/esptool_py/esptool/esptool.py --chip esp32" -D SERIAL_TOOL_ARGS= "--before=default_reset --after=hard_reset write_flash @flash_args" -D WORKING_DIRECTORY="M:/Espressif/frameworks/esp-idf-v4.4/workspace/hello_world/build" -P M:/Espressif/frameworks/esp-idf-v4.4/components/esptool_py/run_serial_tool.cmake" esptool.py esp32 -p COM12 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 40m --flash_size 2MB 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin 0x8000 partition_table/ partition-table.bin esptool.py v3.2-dev Serial port COM12 Connecting...... Chip is ESP32-PICO-D4 (revision 1) Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None Crystal is 40MHz MAC: 24:a1:60:4e:1e:90 Uploading stub... Running stub... Stub running... Changing baud rate to 460800 Changed. Configuring flash size... Flash will be erased from 0x00001000 to 0x00007fff... Flash will be erased from 0x00010000 to 0x00039fff... Flash will be erased from 0x00008000 to 0x00008fff... Compressed 25280 bytes to 15788... Writing at 0x00001000... (100 %) Wrote 25280 bytes (15788 compressed) at 0x00001000 in 0.7 seconds (effective 279.7 kbit/s)... Hash of data verified. Compressed 169792 bytes to 89631... Writing at 0x00010000... (16 %) Writing at 0x0001afd3... (33 %) Writing at 0x0002074e... (50 %) Writing at 0x00025f94... (66 %) Writing at 0x0002e5ae... (83 %) Writing at 0x00036946... (100 %) Wrote 169792 bytes (89631 compressed) at 0x00010000 in 2.4 seconds (effective 576.3 kbit/s)... Hash of data verified. Compressed 3072 bytes to 103... Writing at 0x00008000... (100 %) Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (effective 493.7 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin... Executing action: flash Running ninja in directory m:\espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build Executing "ninja flash"... Done 8. Откройте окно терминала через меню Window -> Show View -> Terminal. Кликните на иконку с монитором, или нажмите комбинацию клавиш Ctrl+Alt+Shift+T. Откроется окно Launch Terminal, где будет предложено выбрать порт подключения. Выберите порт, который образовался на шаге 4, для кодировки текста выберите UTF-8. В окне терминала будет отображен лог наподобие следующего: Executing action: monitor Running idf_monitor in directory m:\espressif\frameworks\esp-idf-v4.4\workspace\hello_world Executing "m:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe m:/Espressif/frameworks/esp-idf-v4.4/tools/ idf_monitor.py -p \\.\COM12 -b 115200 --toolchain-prefix xtensa-esp32-elf- --target esp32 --revision 0 --print_filter m:\espressif\frameworks\esp-idf-v4.4\workspace\hello_world\build\hello_world.elf -m 'm:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe' 'm:\Espressif\frameworks\esp-idf-v4.4\tools\idf.py'"... ←[0;33m--- idf_monitor on \\.\COM12 115200 ---←[0m --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT) configsip: 188777542, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:6612 load:0x40078000,len:14780 load:0x40080400,len:3792 0x40080400: _init at ??:?
entry 0x40080694 I (28) boot: ESP-IDF v4.4 2nd stage bootloader
I (28) boot: compile time 07:35:41
I (28) boot: chip revision: 1
I (30) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (37) boot.esp32: SPI Speed : 40MHz
I (42) boot.esp32: SPI Mode : DIO
I (47) boot.esp32: SPI Flash Size : 2MB
I (51) boot: Enabling RNG early entropy source...
I (56) boot: Partition Table:
I (60) boot: ## Label Usage Type ST Offset Length
I (67) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (75) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (82) boot: 2 factory factory app 00 00 00010000 00100000
I (90) boot: End of partition table
I (94) boot_comm: chip revision: 1, min. application chip revision: 0
I (101) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=0778ch ( 30604) map
I (121) esp_image: segment 1: paddr=000177b4 vaddr=3ffb0000 size=02344h ( 9028) load
I (125) esp_image: segment 2: paddr=00019b00 vaddr=40080000 size=06518h ( 25880) load
I (139) esp_image: segment 3: paddr=00020020 vaddr=400d0020 size=14a40h ( 84544) map
I (170) esp_image: segment 4: paddr=00034a68 vaddr=40086518 size=04c90h ( 19600) load
I (179) esp_image: segment 5: paddr=00039700 vaddr=50000000 size=00010h ( 16) load
I (184) boot: Loaded app from partition at offset 0x10000
I (184) boot: Disabling RNG early entropy source...
I (199) cpu_start: Pro cpu up.
I (199) cpu_start: Starting app cpu, entry point is 0x40080fe8
0x40080fe8: call_start_cpu1 at M:/Espressif/frameworks/esp-idf-v4.4/components/esp_system/port/cpu_start.c:156
I (0) cpu_start: App cpu up.
I (213) cpu_start: Pro cpu start user code
I (213) cpu_start: cpu freq: 160000000
I (213) cpu_start: Application information:
I (218) cpu_start: Project name: hello_world
I (223) cpu_start: App version: v4.4
I (228) cpu_start: Compile time: Apr 14 2022 07:34:48
I (234) cpu_start: ELF file SHA256: 3b91a538f4c8b3c7...
I (240) cpu_start: ESP-IDF: v4.4
I (245) heap_init: Initializing. RAM available for dynamic allocation:
I (252) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (258) heap_init: At 3FFB2C30 len 0002D3D0 (180 KiB): DRAM
I (264) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (270) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (277) heap_init: At 4008B1A8 len 00014E58 (83 KiB): IRAM
I (284) spi_flash: detected chip: gd
I (287) spi_flash: flash io: dio
W (291) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k).
Using the size in the binary image header.
I (305) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
Hello world!
This is esp32 chip with 2 CPU core(s), WiFi/BT/BLE, silicon revision 1, 2MB embedded flash
Minimum free heap size: 293260 bytes
Restarting in 10 seconds...
Restarting in 9 seconds...
Restarting in 8 seconds...
Restarting in 7 seconds...
Restarting in 6 seconds...
Restarting in 5 seconds...
Restarting in 4 seconds...
Restarting in 3 seconds...
Restarting in 2 seconds...
Restarting in 1 seconds...
Restarting in 0 seconds...
Restarting now.
ets Jun 8 2016 00:22:57
Этот проект я запускал на платке ESP32 MIN132, на которой применен модуль ESP-WROOM-32. 1. Меню New -> Espressif IDF Project, укажите любое имя для проекта, например MyBlink, нажмите Finish. 2. В рабочем каталоге будет автоматически создана папка проекта MyBlink. В этой ппке будет подкаталог main. Скопируйте в эту папку следующие файлы: Kconfig.projbuild, который надо взять из проекта примеров get-started\blink (полный путь каталогустановкиESP-IDF \ examples \ get-started \ blink \ main \ Kconfig.projbuild), этот файл надо скопировать с заменой. led_strip.h, который надо взять из папки каталогустановкиESP-IDF \ tinyusb \ tinyusb \ hw \ bsp \ esp32s2 \ components \ led_strip \ include\. 3. Сконфигурируйте проект, для чего двойным щелчком откройте файл sdkconfig, и настройте следующие опции: Example Configuration: в выпадающем списке Blink LED type выберите GPIO, в поле ввода Blink GPIO number введите 2 (синий светодиод подключен к ножке IO2). Также можно настроить Blink period in ms, это длительность полупериода мигания. Serial flasher config: здесь настраиваются параметры утилиты, работающей с загрузчиком. Установите Flash size в значение 2 MB. Остальные параметры можно оставить по умолчанию. 4. Откройте файл main.c, удалите в нем весь текст, и вставьте текст из файла каталогустановкиESP-IDF \ examples \ get-started \ blink \ main \ blink_example_main.c. 5. Скомпилируйте проект (меню Project -> Build Project) и прошейте его (Run Ctrl+F11). Синий светодиод начнет мигать. [Настройка ESP-IDF] 1. Настройте для себя удобные горячие клавиши для часто используемых действий. Например для пункта меню Project -> Build Project. Это делается в меню Windows -> Preferences, раздел настроек General -> Keys. Для глобальной сборки всех проектов Build All уже есть горячая клавиша Ctrl+B, но для сборки текущего проекта пока что не назначено никакой горячей клавиши. Удобно такую клавишу настроить, например на F7. Перейдите в раздел настроек General -> Keys, прокрутите вниз список команд и найдите найдите там Build Project. Выберите Build Project, кликните курсором мыши на поле ввода Binding: и нажмите клавишу F7. После этого кликните внизу на кнопку Apply and Close. 2. Проект конфигурируется через двойной клик на автоматически сгенерированном файле sdkconfig. В процессе сборки генерируется файл конфигурации проекта sdkconfig, для которого есть удобный графический конфигуратор. Конфигуратор открывается двойным щелчком на файле sdkconfig. Здесь можно настроить многочисленные опциии для проекта, например конфигурацию утилиты взаимодействия с загрузчиком Serial flasher config. Здесь имеет смысл указать размер памяти serial FLASH, используемой для хранения программы. Например, на плате ESP32-VGA32_V1.4 установлен чип ESP-PSRAM64H размером 64 мегабита, или 8 мегабайт. Однако ушлые китайцы иногда устанавливают бракованные чипы, у которых размер памяти в 2 раза меньше, чем должно быть. 3. Настройте автоматическое сохранение перед компиляцией измененных файлов проекта. Это делается через меню Windows -> Preferences, раздел настроек General -> Workspace -> Build, поставьте галочку Save automatically before manual build. 4. Отредактируйте стиль кода по умолчанию. Например, можно отключить "египетский" стиль фигурных скобок для блоков кода, установить размер табуляции, использовать пробелы вместо табуляции. Можно очень гибко настроить оформление кода в редакторе. Это делается через меню Windows -> Preferences, раздел настроек C/C++ -> Code Style -> Formatter. Создайте новый стиль и отредактируйте его свойства. Установка ESP-IDF на примере Ubuntu 20.04. Для начала нужно посетить страничку [1] и ознакомиться с ее содержимым. В разделе "Manual Installation" есть ссылка "Linux and macOS", откройте её, и следуйте пошаговым инструкциям. [Установка утилит и библиотек] Откройте командную строку терминала, и выполните одну за другой следующие команды: $ sudo apt-get install git wget flex bison gperf python3 python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 Примечание: для ESP-IDF требуется CMake версии 3.16 или более свежая. Запустите команду tools/idf_tools.py install cmake для установки подходящей версии, если на вашей OS она еще не установлена. [Установка Python 3] Проверьте, какая версия python установлена: $ python3 --version Если эта команда возвратила ошибку, то значит Python 3 не установлен. Ниже показаны шаги для установки Python 3. 1. Установите Homebrew [5] от имени обычного пользователя (без sudo): $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Запустите следующие 2 команды для добавления Homebrew в пути поиска запускаемых файлов: $ echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/имяпользователя/.profile $ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" 2. Установка Python 3: $ brew install python3 3. Установка pip: $ sudo apt install -y python3-pip [Установка ESP-IDF] 1. Загрузка ESP-IDF. Откройте терминал и запустите следующие команды: $ mkdir -p ~/esp$ cd ~/esp$ git clone --recursive https://github.com/espressif/esp-idf.git ESP-IDF будет загружена в каталог ~/esp/esp-idf. 2. Установка дополнительных инструментов. Помимо самой ESP-IDF, также понадобится для проектов ESP32 установить инструменты, используемые в ESP-IDF, такие как компилятор, отладчик, пакеты Python и т. д. $ cd ~/esp/esp-idf $ ./install.sh esp32 Можно установить все необходимое для разных моделей чипов ESP32, например: $ cd ~/esp/esp-idf $ ./install.sh esp32,esp32s2 Либо можно установить компоненты и проекты для всех чипов: $ cd ~/esp/esp-idf$ ./install.sh all 3. Настройте переменные окружения (PATH), чтобы можно было напрямую вызывать скрипт idf.py. Для настройки переменных окружения имеется специальный скрипт export.sh. $ . $HOME/esp/esp-idf/export.sh 4. Установка менеджера компонентов. $ pip install idf-component-manager --upgrade 5. Как определить имя подключенного последовательного порта: $ dmesg | grep tty [ 0.092843] printk: console [tty0] enabled [ 5219.435244] usb 3-6: cp210x converter now attached to ttyUSB0 [FAQ] Ошибка выдавалась на безобидный оператор: fflush(stdout); Это просто глюк ESP-IDF. В моем случае помогла перезагрузка проекта с компиляцией. Могут быть 2 варианта решения проблемы. Оба связаны с глюкавостью Eclipse. Вариант 1. Просто перезапустите среду. Вариант 2. Если не помог вариант 1, то поможет создание новой цели запуска. Не спрашивайте почему, потому что. Третий выпадающий список на панели инструментов -> New Launch Target... Вероятно, что существует активное подключение к выбранному COM-порту. Проверьте, что не запущен терминал в среде ESP-IDF или Arduino IDE, либо отдельное окно интерпретатора CMD с запущенным скриптом для консоли. [Ссылки] 1. Get Started site:espressif.com. |