- Лабораторные записки
- Сделанное не должно быть забыто.
- Настройка Ubuntu для работы с ESP32
- Toolchain
- Обновляем переменные системы
- ESP-IDF
- Пакеты Python
- Подсоединяем ESP32 к компьютеру
- Проект «Привет мир»
- Настройка проекта
- Прошивка
- Мониторинг
- Настройка Eclipse
- Импорт нового проекта
- Настройка проекта
- Сборка в Eclipse
- Прошивка в Eclipse
- Standard Setup of Toolchain for Linux (Legacy GNU Make)В¶
- Install Prerequisites¶
- Toolchain Setup¶
- Permission issues /dev/ttyUSB0В¶
- Next Steps¶
- Чуть подробнее о настройке среды разработки esp-idf для разработки приложений Esp32
- Введение
- Часть I. Консоль
- Linux
Лабораторные записки
Сделанное не должно быть забыто.
Настройка Ubuntu для работы с ESP32
На данный момент дебаг можно использовать лишь под Linux. Выбор мой пал на Ubuntu с его стандартным «гномом» (графическая оболочка очень похожа на Windows). В качестве редактора кода будет использоваться Eclipse.
Я исхожу из того, что Ubuntu и Eclipse уже установлены на компьютере, в этой статье мы займёмся их настройкой.
Toolchain
Будем следовать инструкциям с сайта espressif.com
Начинаем наши уроки колдовства:
sudo apt-get update
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing
После того, как загрузка закончится читаем новое заклинания:
Обновляем переменные системы
/.profile) добавляем новые строчки с новыми значениями системы:
export PATH=»$HOME/esp/xtensa-esp32-elf/bin:$PATH»
export IDF_PATH=
Эти изменения вступят в силу после перезагрузки системы, а для проверки потом можно будет воспользоваться командой «printenv PATH».
ESP-IDF
Пакеты Python
Устанавливаем дополнительные пакеты Python:
python -m pip install —user -r $IDF_PATH/requirements.txt
Подсоединяем ESP32 к компьютеру
В терминале надо будет выполнить команду «ls /dev/tty*» два раза. В первый раз до того, как подключите ESP32 к USB-порту, и второй раз, когда ESP32 будет подключена к вашему компьютеру. После чего посмотрите чем отличаются выводы этой команды в обоих случаях. Скорее всего во втором случае будет дополнительная строчка: «/dev/ttyUSB0».
Если она не появится, попробуйте выполнить следующую команду:
Проект «Привет мир»
Копируем проект из собрания примеров:
/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
Настройка проекта
Переходим внутрь папки с проектом и запускаем инструмент для настройки:
/esp/hello_world
make menuconfig
После чего должно открыться меню. Там вы идёте по следующим пунктам меню: «Serial flasher config» -> «Default serial port», после чего Вы выбираете пункт сохранить, подтверждаете и выходите из меню.
Прошивка
Зажимаем прищепкой кнопку «Boot» и в консоле вводим:
Мониторинг
Команда « make monitor» отобразит данные с модуля. Чтобы выйти из этого режима нажмите Ctr+5.
Настройка Eclipse
Вначале воспользуемся магией esp-idf. Через консоль зайдите в папку с проектом, а там запустите « make menuconfig». (Не забудьте сохранить перед выходом.)
Импорт нового проекта
Теперь запускаем eclipse и импортируем новый проект (уже существующий).
В eclipse идём по следущим пунктам меню: «File» -> «Import…»
В новом окне выбираем «С/С++» -> «Existing Code as Makefile Project» и нажимаем на кнопку «Next >».
Пользуемся кнопкой «Browse…» и выбираем папку с проектом. Ниже в списке тулчанов выбираем «Cross GCC». После чего нажимаем на кнопку «Finish».
Настройка проекта
В окне со списком проектов выбираем наш проект, кликаем по нему правой клавишей мышки, выбираем «Properties».
Теперь навигируем по следующим пунктам меню: «C/C++ Build» -> «Environment».
Нажимаем на кнопку «Add…». В новом окне заполняем оба поля данными «BATCH_BUILD» и «1». После чего жмём на кнопку «OK».
Вновь нажимаем на кнопку «Add…». Новая переменная будет «IDF_PATH», а значение папка, где находится «esp-idf», должно будет что-то на подобии «/home/
Проверьте переменную «PATH», там в том числе и должен быть прописан путь до папки «xtensa-esp32-elf/bin».
По пунктам меню переходим в «C/C++ General» -> «Preprocessor Include Paths». Там выбираем закладку «Providers».
В списке выбираем «CDT Cross GCC Built-in Compiler Settings», и меняем команду («Command to get compiler specs») на xtensa-esp32-elf-gcc $
Потом в списке кликаем по «CDT GCC Build Output Parser» и там меняем команду на «xtensa-esp32-elf-(gcc|g\+\+|c\+\+|cc|cpp|clang)».
После вновь переходим по следующим пунктам меню «C/C++ General» -> «Indexer». Там ставим галочку у «Enable project specific settings», а после убираем галочку с «Allow heuristic resolution of includes».
И под конец кликаем по пункту меню «C/C++ Build». Там выбираем таб «Behavior». Тут ставим галочку у «Enable parallel build».
Сохраняем нажимая на кнопку «Apply and Close».
Сборка в Eclipse
Напоминаю, что до этого в папке с проектом должна быть запущена команда « make menuconfig «.
В меню Eclipse идём по следующему путю: «Project» -> «Build All» (или нажимаем на кнопки «Ctrl+B»).
Примечание:
Если до этого проект был где-то в другом месте собран, то надо его «очистить». («Project» -> «Clean…»)
После этого файлы переподключатся и многие ошибки должны пропасть.
Прошивка в Eclipse
В окне с проектами кликаем правой клавишей мышки по нашему проекту. Там идём по пунктам меню «Build Targets» -> «Create…».
В новом окне в поле «Target name:» вводим «flash». И нажимаем на кнопку «OK».
Теперь можно прошивать. В окне с проектами кликаем правой клавишей мышки по нашему проекту и идём по менюшкам «Build Targets» -> «Build…» (Или жмите на клавиши Shift+F9). В новом окне жмите на кнопку «Build», а так же не забудьте зажать кнопку «Boot» на ESP32.
Источник
Standard Setup of Toolchain for Linux (Legacy GNU Make)В¶
Since ESP-IDF V4.0, the default build system is based on CMake. This documentation is for the legacy build system based on GNU Make. Support for this build system may be removed in future major releases.
Install Prerequisites¶
To compile with ESP-IDF you need to get the following packages:
Ubuntu and Debian:
Some older Linux distributions may be missing some of the Python packages listed above (or may use pyserial version 2.x which is not supported by ESP-IDF). It is possible to install these packages via pip instead — as described in section Step 4. Install the Required Python Packages .
Toolchain Setup¶
ESP32 toolchain for Linux is available for download from Espressif website:
for 64-bit Linux:
for 32-bit Linux:
Download this file, then extract it in
for 64-bit Linux:
for 32-bit Linux:
The toolchain will be extracted into
To use it, you will need to update your PATH environment variable in
/.profile file. To make xtensa-esp32-elf available for all terminal sessions, add the following line to your
Alternatively, you may create an alias for the above command. This way you can get the toolchain only when you need it. To do this, add different line to your
Then when you need the toolchain you can type get_esp32 on the command line and the toolchain will be added to your PATH .
If you have /bin/bash set as login shell, and both .bash_profile and .profile exist, then update .bash_profile instead. In CentOS, alias should set in .bashrc .
Log off and log in back to make the .profile changes effective. Run the following command to verify if PATH is correctly set:
You are looking for similar result containing toolchain’s path at the beginning of displayed string:
Instead of /home/user-name there should be a home path specific to your installation.
Permission issues /dev/ttyUSB0В¶
With some Linux distributions you may get the Failed to open port /dev/ttyUSB0 error message when flashing the ESP32. This can be solved by adding the current user to the dialout group .
Next Steps¶
To carry on with development environment setup, proceed to section Step 2. Get ESP-IDF .
Источник
Чуть подробнее о настройке среды разработки esp-idf для разработки приложений Esp32
Введение
Почему, ESP32?
Esp32 использует два процессора Xtensa с симметричной адресацией. Это разработка Гарварда, сделанная аж в 1997 году. Заявленная тактовая частота 240/160 МГц.
Частота таймеров 80 МГц
Очень низкое энергопотребление в режиме «глубокого сна» — аж 5-2,5 мкА.
Аналогичные по архитектуре модули STM32, скажем стоят значительно дороже. Да, 400 МГц, да отличная документация. Но, скажем процессор STM32F407 стоит около 1000 рублей на Алиэкспрессе.
И почти нет микропроцессоров, у которых были бы «на борту» Bluetooth и Wi-Fi стоимостью 150-200 рублей.
Удобные для любительской распайки модули с микропроцессором «на борту»
Почему esp-idf VSCode и Eclipse?
ESP-IDF позиционируется, как Espressif IoT Development Framework — Фреймворк разработки IoT (Интернет Вещей). Плата с процессором Esp32 вполне может стать объектом Интернета Вещей.
А так же, с этим фреймворком легко разрабатывать Bluetooth Low Energy устройства, которыми, скажем, можно легко управлять с мобильного телефона. Подключаться к WiFi и проводной сети Ethernet.
Да, цена входа для непрофессионального разработчика на Arduino IDE, значительно ниже. Для сегмента DIY (Самодельничество, или «сделай сам» (англ. DIY — Do It Yourself), — вид деятельности, при котором люди самостоятельно производят какие-либо изделия для собственного использования), более чем достаточно.
Но всегда же хочется большего, не правда ли? Примитивы FreeRTOS кажутся мне более понятными, логичными и простыми в использовании, чем void setup() и void loop(). Опять же, возможность обращения к LL функциям (Low Level Layer Function)
Так и не понял, можно ли «поднять» BLE GATT Server на Arduino IDE, но во фреймворке esp-idf он пишется почти элементарно.
Часть I. Консоль
Статей о настройке IDE Visual Studio Code и Eclipse под Linux и Windows написано уже много. В принципе, с точностью до небольших деталей, они повторяют друг-друга. Эта заметка не исключение.
Отличие лишь в том, что и Eclipse и Visual Studio Code будут использовать единожды установленные Espressif Framework и набор инструментов — toolchain. Раздражает, что каждая установка плагинов https://github.com/espressif/vscode-esp-idf-extension и https://github.com/espressif/idf-eclipse-plugin «тащит» за собой новую установку пакета ESP-IDF и TOOLCHAIN. Каждая установка в сумме, 3.3 Гб, между прочим.
Linux
Для примера, использую Ubuntu 21.04.
Во-первых, классическое начало для deb систем:
Ну или установить cmake и ninja, используя snap
Для полноценной работы esp-idf должны быть установлены git, python3 и pip3. Причём, надо, чтобы python вызывался, как python, а не python3 или python3.9 и т.д. Скажем, в Ubuntu 18.04, 20.10, 21.04 такой команды, как python изначально нет. Есть python3. Так, что надо либо сделать мягкую ссылку:
Последний способ чуть сложнее, но даже в создании мягкой ссылки есть забавный подвох: если Вы не создали каталог
/.local/bin, то .profile его не «подхватит», потому, что в скрипте профиле есть такой код:
Иными словами, если этот каталог не создан, его в пути и не будет. После создания каталога, нужно вызвать source
Проверим себя. Вызовем из терминала:
Всё работает. Скачиваем esp-idf. Предпочитаю установить фреймворк в какой-нибудь подкаталог домашеного каталога, вроде
/espressif. Фреймворков Esp32, аж целых три — esp-adf, esp-idf, esp-mdf, так что, чтобы не засорять «корневое» пространство пользовательского каталога, сложим их в одну кучу. Имена каталогов верхних уровней не должны содержать пробелов.
Имеет смысл сразу добавить в какой-нибудь из пользовательских .*rc-файлов загрузку переменных окружения esp-idf. Переменные ADF_PATH и MDF_PATH предусмотрены на тот случай, если Вы захотите работать на Esp32 со звуком или создавать самоорганизующиеся сети из нескольких плат Esp32.
Скрипт добавляет алиас idfexp. Так удобнее превращать текущую консоль в среду IDF-разработки, чтобы не набирать, скажем каждый раз
Можно добавить автоматическую загрузку скрипта через любой актуальный
/.*rc-файл. Например, добавить в
/.bashrc (\. необходим, поскольку, разрешения .*rc-файлов 0644):
Далее, осталось установить набор инструментария для сборки проектов. По умолчанию toolchain будет установлен в
Если всё прошло удачно, то увидим что-то такое (журнал установки укорочен):
WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available. You should consider upgrading via the ‘/home/grandfatherpikhto/.espressif/python_env/idf4.4_py3.8_env/bin/python -m pip install —upgrade pip’ command. All done! You can now run:
Обратите внимание, что предлагается обновить venv:
Размер esp-idf приблизительно 2.2 Гб, toolchain — 1.2 Гб. Ну, так на минуточку:
После установки toolchain можно вызвать source
/.idfrc и подгрузить переменные окружения ESP-IDF командой idfexp или
Если всё пошло правильно, должны увидеть что-то такое:
$ idfexp Detecting the Python interpreter Checking «python» . Python 3.8.10 «python» has been detected Adding ESP-IDF tools to PATH. Using Python interpreter in /home/grandfatherpikhto/.espressif/python_env/idf4.4_py3.8_env/bin/python Checking if Python packages are up to date. Python requirements from /home/grandfatherpikhto/espressif/esp-idf/requirements.txt are satisfied. Added the following directories to PATH: /home/grandfatherpikhto/espressif/esp-idf/components/esptool_py/esptool /home/grandfatherpikhto/espressif/esp-idf/components/espcoredump /home/grandfatherpikhto/espressif/esp-idf/components/partition_table /home/grandfatherpikhto/espressif/esp-idf/components/app_update /home/grandfatherpikhto/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin /home/grandfatherpikhto/.espressif/tools/xtensa-esp32s2-elf/esp-2021r1-8.4.0/xtensa-esp32s2-elf/bin /home/grandfatherpikhto/.espressif/tools/xtensa-esp32s3-elf/esp-2021r1-8.4.0/xtensa-esp32s3-elf/bin /home/grandfatherpikhto/.espressif/tools/riscv32-esp-elf/esp-2021r1-8.4.0/riscv32-esp-elf/bin /home/grandfatherpikhto/.espressif/tools/esp32ulp-elf/2.28.51-esp-20191205/esp32ulp-elf-binutils/bin /home/grandfatherpikhto/.espressif/tools/esp32s2ulp-elf/2.28.51-esp-20191205/esp32s2ulp-elf-binutils/bin /home/grandfatherpikhto/.espressif/tools/openocd-esp32/v0.10.0-esp32-20210721/openocd-esp32/bin /home/grandfatherpikhto/.espressif/python_env/idf4.4_py3.8_env/bin /home/grandfatherpikhto/espressif/esp-idf/tools Done! You can now compile ESP-IDF projects. Go to the project directory and run:
В принципе, можно приступить к сборке и прошивке какого-нибудь проекта из каталога
/espressif/esp-idf/examples, но сначала надо настроить udev — пакет управления устройствами для новых версий ядра Linux.
Ниже привожу «сборную солянку» файла 40-dfuse.rules из правил, которую удалось накопать на форуме Esp32 (https://www.esp32.com/). Думаю, в особых объяснениях этот файл не нуждается. Просто, коллекция idVendor и idProduct различных макетных плат Esp32. Обратите внимание, что расширение файла должно быть именно «rules». Иначе, udev не прочитает правила.
Теперь, можно собрать и запустить какой-нибудь простой проект Esp32. Не забудьте подключить макетную плату Esp32 к компьютеру. Если она уже была подключена, отключите и подключите снова. Иначе, правила udev не будут прочитаны для этого устройства.
У вашего покорного слуги наличествует макетная плата ESP32-WROOM. Попробуем собрать и прошить
/espressif/esp-idf/examples/get-started/hello_world. Обратите внимание, что, в принципе надо указывать порт. Например, idf.py -p /dev/ttyUSB0 flash. Но, на самом деле, это не обязательно. idf.py попробует найти порт, к которому подключено устройство Esp32 и прошьёт первое обнаруженное.
Если всё получилось хорошо, увидим что-то вроде:
/Programs/esp32/hello_world $ idf.py build
Executing action: all (aliases: build)
Running cmake in directory /home/denis/Programs/esp32/hello_world/build
Executing «cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DCCACHE_ENABLE=0 /home/denis/Programs/esp32/hello_world».
— IDF_TARGET not set, using default target: esp32
— Found Git: /usr/bin/git (found version «2.32.0»)
— The C compiler identification is GNU 8.4.0
— The CXX compiler identification is GNU 8.4.0
— The ASM compiler identification is GNU
— Found assembler: /home/denis/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
— Detecting C compiler ABI info
— Detecting C compiler ABI info — done
— Check for working C compiler: /home/denis/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc — skipped
— Detecting C compile features
— Detecting C compile features — done
— Detecting CXX compiler ABI info
— Detecting CXX compiler ABI info — done
— Check for working CXX compiler: /home/denis/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ — skipped
— Detecting CXX compile features
— Detecting CXX compile features — done
— Project is not inside a git repository, or git repository has no commits; will not use ‘git describe’ to determine PROJECT_VER.
— Building ESP-IDF components for target esp32
— Project sdkconfig file /home/denis/Programs/esp32/hello_world/sdkconfig
— Found PythonInterp: /home/denis/.espressif/python_env/idf4.4_py3.9_env/bin/python (found version «3.9.6»)
— Found Perl: /usr/bin/perl (found version «5.32.1»)
— App «hello-world» version: 1
— Adding linker script /home/denis/Programs/esp32/hello_world/build/esp-idf/esp_system/ld/memory.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_system/ld/esp32/sections.ld.in
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-time.ld
— Adding linker script /home/denis/espressif/esp-idf/components/soc/esp32/ld/esp32.peripherals.ld
— Components: app_trace app_update asio bootloader bootloader_support bt cbor cmock coap console cxx driver efuse esp-tls esp32 esp_adc_cal esp_common esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_ipc esp_lcd esp_local_ctrl esp_netif esp_phy esp_pm esp_ringbuf esp_rom esp_serial_slave_link esp_system esp_timer esp_websocket_client esp_wifi espcoredump esptool_py expat fatfs freemodbus freertos hal heap idf_test ieee802154 jsmn json libsodium log lwip main mbedtls mdns mqtt newlib nghttp nvs_flash openssl openthread partition_table perfmon protobuf-c protocomm pthread sdmmc soc spi_flash spiffs tcp_transport tcpip_adapter tinyusb ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa
— Component paths: /home/denis/espressif/esp-idf/components/app_trace /home/denis/espressif/esp-idf/components/app_update /home/denis/espressif/esp-idf/components/asio /home/denis/espressif/esp-idf/components/bootloader /home/denis/espressif/esp-idf/components/bootloader_support /home/denis/espressif/esp-idf/components/bt /home/denis/espressif/esp-idf/components/cbor /home/denis/espressif/esp-idf/components/cmock /home/denis/espressif/esp-idf/components/coap /home/denis/espressif/esp-idf/components/console /home/denis/espressif/esp-idf/components/cxx /home/denis/espressif/esp-idf/components/driver /home/denis/espressif/esp-idf/components/efuse /home/denis/espressif/esp-idf/components/esp-tls /home/denis/espressif/esp-idf/components/esp32 /home/denis/espressif/esp-idf/components/esp_adc_cal /home/denis/espressif/esp-idf/components/esp_common /home/denis/espressif/esp-idf/components/esp_eth /home/denis/espressif/esp-idf/components/esp_event /home/denis/espressif/esp-idf/components/esp_gdbstub /home/denis/espressif/esp-idf/components/esp_hid /home/denis/espressif/esp-idf/components/esp_http_client /home/denis/espressif/esp-idf/components/esp_http_server /home/denis/espressif/esp-idf/components/esp_https_ota /home/denis/espressif/esp-idf/components/esp_https_server /home/denis/espressif/esp-idf/components/esp_hw_support /home/denis/espressif/esp-idf/components/esp_ipc /home/denis/espressif/esp-idf/components/esp_lcd /home/denis/espressif/esp-idf/components/esp_local_ctrl /home/denis/espressif/esp-idf/components/esp_netif /home/denis/espressif/esp-idf/components/esp_phy /home/denis/espressif/esp-idf/components/esp_pm /home/denis/espressif/esp-idf/components/esp_ringbuf /home/denis/espressif/esp-idf/components/esp_rom /home/denis/espressif/esp-idf/components/esp_serial_slave_link /home/denis/espressif/esp-idf/components/esp_system /home/denis/espressif/esp-idf/components/esp_timer /home/denis/espressif/esp-idf/components/esp_websocket_client /home/denis/espressif/esp-idf/components/esp_wifi /home/denis/espressif/esp-idf/components/espcoredump /home/denis/espressif/esp-idf/components/esptool_py /home/denis/espressif/esp-idf/components/expat /home/denis/espressif/esp-idf/components/fatfs /home/denis/espressif/esp-idf/components/freemodbus /home/denis/espressif/esp-idf/components/freertos /home/denis/espressif/esp-idf/components/hal /home/denis/espressif/esp-idf/components/heap /home/denis/espressif/esp-idf/components/idf_test /home/denis/espressif/esp-idf/components/ieee802154 /home/denis/espressif/esp-idf/components/jsmn /home/denis/espressif/esp-idf/components/json /home/denis/espressif/esp-idf/components/libsodium /home/denis/espressif/esp-idf/components/log /home/denis/espressif/esp-idf/components/lwip /home/denis/Programs/esp32/hello_world/main /home/denis/espressif/esp-idf/components/mbedtls /home/denis/espressif/esp-idf/components/mdns /home/denis/espressif/esp-idf/components/mqtt /home/denis/espressif/esp-idf/components/newlib /home/denis/espressif/esp-idf/components/nghttp /home/denis/espressif/esp-idf/components/nvs_flash /home/denis/espressif/esp-idf/components/openssl /home/denis/espressif/esp-idf/components/openthread /home/denis/espressif/esp-idf/components/partition_table /home/denis/espressif/esp-idf/components/perfmon /home/denis/espressif/esp-idf/components/protobuf-c /home/denis/espressif/esp-idf/components/protocomm /home/denis/espressif/esp-idf/components/pthread /home/denis/espressif/esp-idf/components/sdmmc /home/denis/espressif/esp-idf/components/soc /home/denis/espressif/esp-idf/components/spi_flash /home/denis/espressif/esp-idf/components/spiffs /home/denis/espressif/esp-idf/components/tcp_transport /home/denis/espressif/esp-idf/components/tcpip_adapter /home/denis/espressif/esp-idf/components/tinyusb /home/denis/espressif/esp-idf/components/ulp /home/denis/espressif/esp-idf/components/unity /home/denis/espressif/esp-idf/components/usb /home/denis/espressif/esp-idf/components/vfs /home/denis/espressif/esp-idf/components/wear_levelling /home/denis/espressif/esp-idf/components/wifi_provisioning /home/denis/espressif/esp-idf/components/wpa_supplicant /home/denis/espressif/esp-idf/components/xtensa
— Build files have been written to: /home/denis/Programs/esp32/hello_world/build
Running ninja in directory /home/denis/Programs/esp32/hello_world/build
Executing «ninja all».
[8/994] Generating ../../partition_table/partition-table.bin
Partition table binary generated. Contents:
Источник