ESP32 Dev Kitc развојна табла
Информации за производот
Спецификации
- Производ: ESP32
- Водич за програмирање: ESP-IDF
- Верзија за објавување: v5.0.9
- Производител: Espressif Systems
- Датум на издавање: 16 мај 2025 година
Упатство за употреба на производот
1. Започнете
Пред да започнете со ESP32, запознајте се со
следново:
1.1 Вовед
Дознајте повеќе за основните функционалности и можности на
ESP32.
1.2 Што ви треба
Осигурајте се дека го имате потребниот хардвер и софтвер:
- Хардвер: Проверете го списокот на потребен хардвер
компоненти. - Софтвер: Инсталирајте го потребниот софтвер
компоненти.
1.3 Инсталација
Следете ги овие чекори за да го инсталирате IDE и да го поставите
околина:
- IDE: Инсталирајте го препорачаниот IDE за
програмирање на ESP32. - Рачна инсталација: Рачно поставете го
средина доколку е потребно.
1.4 Изградете го вашиот прв проект
Креирајте го и изградете го вашиот почетен проект користејќи го ESP32.
1.5 Деинсталирање на ESP-IDF
Доколку е потребно, научете како да го деинсталирате ESP-IDF од вашиот
систем.
2. API референца
Погледнете ја документацијата на API за детални информации за
протоколи за апликации, справување со грешки и конфигурација
структури.
Најчесто поставувани прашања (ЧПП)
П: Како можам да ги решам вообичаените проблеми со ESP32?
A: Погледнете го делот за решавање проблеми во упатството за програмирање
или посетете го производителот webсајт за ресурси за поддршка.
П: Може ли да користам ESP-IDF со други микроконтролери?
A: ESP-IDF е специјално дизајниран за ESP32, но може да најдете
компатибилност со други микроконтролери Espressif.
ESP32
Водич за програмирање ESP-IDF
Објавување v5.0.9 Espressif Systems 16 мај 2025 година
Содржина
Содржина
i
1 Започнете
3
1.1 Вовед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Што ви е потребно . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Хардвер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Софтвер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Инсталација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1 IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2 Рачна инсталација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Изградете го вашиот прв проект . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.5 Деинсталирање на ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2 API референца
45
2.1 API конвенции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.1 Ракување со грешки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.2 Конфигурациски структури . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.3 Приватни API-ја . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.4 Компоненти во exampле проекти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.5 Стабилност на API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2 Протоколи за апликација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.1 ASIO порта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.2.5 ESP HTTP клиент . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.2.6 Локална контрола на ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.2.7 ESP сериска помошна врска . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.2.8 Пакет сертификати ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.2.9 HTTP сервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.2.10 HTTPS сервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.2.11 ICMP Echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
2.2.12 mDNS услуга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.13 Mbed TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.14 IP мрежен слој . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3 Bluetooth API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.1 Bluetooth® Common . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.2 Bluetooth® со ниска потрошувачка на енергија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.3.3 Bluetooth® Classic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
2.3.4 Контролер и HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
2.3.6 API-ја на домаќини базирани на NimBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
2.4 Референца за кодови за грешки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
2.5 Мрежни API-ја . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.2 Етернет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
2.5.3 Нишка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
i
2.5.4 ESP-NETIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 IP мрежен слој. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Слој на апликации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 API за периферни уреди. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Драјвер за аналогно-дигитален конвертор (ADC) во еден режим. . . . . . . . . . . . . . . . . 977 2.6.2 Драјвер за аналогно-дигитален конвертор (ADC) во континуиран режим. . . . . . . . . . . . . . . 986 2.6.3 Драјвер за калибрација на аналогно-дигитален конвертор (ADC). . . . . . . . . . . . . . . . . . . 993 2.6.4 Дрво на часовници. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Дигитално-аналоген конвертор (DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO и RTC GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Тајмер за општа намена (GPTimer). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Меѓуинтегрирано коло (I2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Интер-IC звук (I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD екран. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Контрола на LED диоди (LEDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Модулатор за ширина на пулсот за контрола на моторот (MCPWM). . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Бројач на пулси (PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Примопредавател со далечинско управување (RMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 Барања за влечење нагоре со SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 Драјвер на домаќинот SDMMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 SD SPI драјвер за домаќин. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 Драјвер за помошна SDIO картичка. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Сигма-Делта модулација (SDM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 Главен драјвер на SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 SPI помошен драјвер. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (Безбеден елемент). . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Сензор за допир. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Двожичен автомобилски интерфејс (TWAI). . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Универзален асинхрон приемник/предавател (UART). . . . . . . . . . . . . . . . . . 1317 2.7 Конфигурација на проектот. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Вовед. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Мени за конфигурација на проектот. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Користење на sdkconfig.defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Правила за форматирање во Kconfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Компатибилност со стари верзии на опциите на Kconfig. . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Референца за опции за конфигурација. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 API за обезбедување. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Протоколска комуникација. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Унифицирано обезбедување. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Обезбедување на Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 API за складирање. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileСистемска поддршка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 Производствена алатка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 Библиотека за неиспарливо складирање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 Алатка за генерирање на NVS партиции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 Драјвер за SD/SDIO/MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 SPI Flash API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 СПИФС Fileсистем . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Виртуелен fileсистемска компонента . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 API за нивелирање на абење . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 Формат на слика на апликација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 Следење на ниво на апликација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 Повикување на функција со надворешен стек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 Ревизија на чип . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 Конзола . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 Менаџер на eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Кодови за грешки и помошни функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii
2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 Библиотека со јамки на настани . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (Надview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 FreeRTOS (ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 FreeRTOS (Дополнителни карактеристики) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 Доделување на меморија на куп . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 Дебагирање на меморија на куп . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 Тајмер со висока резолуција (ESP тајмер) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 Внатрешни и нестабилни API-ја . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 Повик помеѓу процесори . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 Доделување на прекини . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Библиотека за евидентирање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 Разни системски API-ја . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 Ажурирања преку интернет (OTA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 Монитор на перформанси . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 Управување со енергија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 Поддршка за POSIX нишки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 Генерирање на случајни броеви . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 Можности на SoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 Системско време . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 API за распределба на химеми . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 ULP копроцесорско програмирање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 Чувари . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161
3 Референца за хардвер
2167
3.1 Споредба на серии на чипови . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167
3.1.1 Поврзани документи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170
4 API водичи
2171
4.1 Библиотека за следење на ниво на апликација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.2 Режими на работа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.3 Опции за конфигурација и зависности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172
4.1.4 Како да ја користите оваа библиотека . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173
4.2 Тек на стартување на апликација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181
4.2.1 Први сtagе-подигнувач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.2 секунда сtagе-подигнувач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.3 Стартување на апликација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183
4.3 Bluetooth® Classic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.3.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.4 Bluetooth® со ниска потрошувачка на енергија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.2 Започнете . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191
4.4.3 Проfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240
4.5 Подигнувач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284
4.5.1 Компатибилност со Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.2 Ниво на дневник . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.3 Ресетирање на фабрички поставки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.4 Подигнување од тест фирмвер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.5 Враќање назад . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.6 Надзорник . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.7 Големина на подигнувачот . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.8 Брзо стартување од Deep Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.9 Прилагоден подигнувач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.6 Систем за градење . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.2 Користење на системот за градење . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289
iii
4.6.3 Прample Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 CMakeLists на проектот File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Компонента CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 Конфигурација на компоненти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 Дефиниции на претпроцесори . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 Барања за компоненти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Преовладувачки делови од проектот . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 Компоненти само за конфигурација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 Дебагирање на CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 Example Component CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 Прилагодени стандардни поставки за sdkconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 Флеш аргументи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 Градење на Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 Пишување чисти CMake компоненти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 Користење на CMake проекти од трети страни со компоненти . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.18 Користење на претходно изградени библиотеки со компоненти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 Користење на ESP-IDF во прилагодени CMake проекти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 ESP-IDF CMake Build System API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File Глобализација и инкрементални градби . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 Градење системски метаподатоци . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 Градење системски внатрешни делови . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.24 Мигрирање од ESP-IDF GNU Make System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Дамп на јадро . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 Конфигурации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 Зачувај го дампот од јадрото на флеш меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.4 Печатење на дамп од јадрото на UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 ROM функции во траги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 Дампинг на променливи по барање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 Извршување на espcoredump.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 Стабови за будење во длабок сон . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 Правила за стабови за будење . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Имплементирање на стаб . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 Вчитување код во RTC меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 Вчитување податоци во RTC меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 CRC Проверка за будење . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Exampле . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 Ракување со грешки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.2 Кодови за грешки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 Конвертирање на кодови за грешки во пораки за грешки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.4 Макро ESP_ERROR_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 Макро ESP_ERROR_CHECK_WITHOUT_ABORT . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 Макро ESP_RETURN_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 ESP_GOTO_ON_ERROR макро . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 ESP_RETURN_ON_FALSE макро . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 ESP_GOTO_ON_FALSE макро . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 ПРОВЕРЕТЕ МАКРОА Exampлес . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 Шаблони за ракување со грешки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 Исклучоци во C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 Вовед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 Концепти на ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 4.10.4 Градење мрежа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 Управување со мрежа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 Пренос на податоци . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Префрлување на канали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv
4.10.8 Перформанси . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 Дополнителни забелешки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 Ракување со настани . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Wi-Fi, Ethernet и IP настани . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 Mesh настани . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 Bluetooth настани . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 Фатални грешки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Ракувач со паника. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Дампирање и враќање на регистрите. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 GDB стаб. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 Истек на време на RTC Watchdog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Грешки во медитацијата на гуруто. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Други фатални грешки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Флеш енкрипција. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Вовед. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Релевантни eFuses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Процес на флеш енкрипција. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Конфигурација на флеш-енкрипција. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Можни дефекти. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 Статус на ESP32 Flash енкрипција. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Читање и пишување податоци во шифрирана флеш-меморија. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Ажурирање на шифрирана флеш-меморија. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Оневозможување на флеш-енкрипцијата. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Клучни точки за флеш-енкрипцијата. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Ограничувања на флеш-енкрипцијата. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Флеш енкрипција и безбедно стартување. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Напредни функции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Технички детали. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Апстракција на хардвер. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Архитектура. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 LL (ниско ниво) слој. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (Слој на апстракција на хардвер). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Прекини на високо ниво. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Нивоа на прекини. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Белешки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Дебагирање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.1 Вовед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 Како функционира? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 Избирање на JTAG Адаптер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 Поставување на OpenOCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 Конфигурирање на ESP32 Target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 Стартување на дебагер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Дебагирање Exampлес . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 Градење на OpenOCD од извори . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 Совети и чуда . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 Поврзани документи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 Генерирање на скрипта за линкери . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 Брз почеток . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.3 Внатрешни делови за генерирање на скрипта за поврзување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 Поддржани API-ја . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 BSD API за сокети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 Netconn API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 lwIP FreeRTOS Задача . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 Поддршка за IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 прилагодени модификации на esp-lwip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v
4.18.7 Оптимизација на перформансите . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 Типови на меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (Податочна RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (Инструкциска RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (код извршен од флеш меморија) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (податоци складирани во флеш меморија) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 RTC Бавна меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 RTC FAST меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 Барање за DMA способност . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 DMA бафер во стекот . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 Режими на стекот OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 Како да напишете апликација OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 Граничен рутер OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Табели за партиции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 Вградени табели за партиции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 Креирање прилагодени табели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.4 Генерирање на бинарна табела за партиции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 Проверка на големината на партицијата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 Флеширање на табелата за партиции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 Алатка за партиции (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 Перформанси . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 Како да се оптимизираат перформансите . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 Водичи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.1 Делумна калибрација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 Целосна калибрација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 Без калибрација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 Податоци за иницијализација на PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 API референца . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 Безбедно подигнување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 Позадина . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 Безбеден процес на стартувањеview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 Копчиња . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 Големина на подигнувачот . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.5 Како да се овозможи безбедно стартување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 Повторно флеширан софтверски подигнувач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 Генерирање на клуч за безбедно потпишување на стартување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 Далечинско потпишување на слики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 Најдобри практики за безбедно стартување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 Технички детали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 Безбедно стартување и енкрипција на флеш меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Потпишана верификација на апликација без безбедно стартување на хардвер . . . . . . . . . . . . . . . . . . . . . . . 2478 4.24.13 Напредни функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 Безбедно стартување V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 Позадина . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 Напредноtages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 Процес на безбедно стартување V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 Формат на блок за потпис . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.5 Безбедно дополнување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 Верификација на блок со потпис . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 Верификација на слика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Големина на подигнувачот . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 Употреба на eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 Како да се овозможи безбедно подигнување V2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 Ограничувања по овозможување на безбедно подигнување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 Генерирање на клуч за потпишување при безбедно подигнување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi
4.25.13 Далечинско потпишување на слики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 Најдобри практики за безбедно стартување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 Технички детали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 Безбедно стартување и енкрипција на флеш меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Потпишана верификација на апликација без хардверско безбедно стартување . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.18 Напредни функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 Поддршка за надворешна RAM меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 Вовед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 Хардвер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Конфигурирање на надворешна RAM меморија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 Ограничувања . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 Неуспешна иницијализирање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 Ревизии на чипови . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 FreeRTOS матичен API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 Pthread API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 C11 Стандард . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.1 IDF интерфејс – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 IDF Docker слика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 IDF Windows Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 Менаџер на IDF компоненти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 Алатки за преземање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 Единично тестирање во ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 Нормални тест случаи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 Тест случаи со повеќе уреди . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 Мулти-stage Тест случаи. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Тестови за различни цели. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Апликација за тестирање на градежни единици. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Извршување на единечни тестови. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Код за мерење на времето со тајмер компензиран за кеш меморијата. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Мамења. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Тестирање на единици на Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Тестови на вграден софтвер. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 IDF единечни тестови на Linux хост. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Wi-Fi драјвер. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 Список на Wi-Fi функции на ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Како да напишете Wi-Fi апликација. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 Код за грешка на ESP32 Wi-Fi API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Иницијализација на параметрите на ESP32 Wi-Fi API. . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 ESP32 Wi-Fi програмски модел. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 Опис на настанот за Wi-Fi на ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Општо сценарио за Wi-Fi станица ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 Општо сценарио за ESP32 Wi-Fi AP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 ESP32 Wi-Fi скенирање. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 Сценарио за поврзување на Wi-Fi станица ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 ESP32 Wi-Fi станица се поврзува кога се пронајдени повеќе пристапни точки. . . . . . . . . . . . . 2543 4.31.12 Повторно поврзување на Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Истек на време на Wi-Fi Beacon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 ESP32 Wi-Fi конфигурација. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy Connect™ (DPP). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Управување со безжична мрежа. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Мерење на радио ресурси. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Брза BSS транзиција. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 ESP32 Wi-Fi режим за заштеда на енергија. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 ESP32 Пропусен опсег на Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
4.31.21 Wi-Fi 80211 Испраќање пакети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Режим на Wi-Fi трагач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 Wi-Fi повеќе антени . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 Информации за состојбата на Wi-Fi каналот . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Информации за состојбата на Wi-Fi каналот Конфигурирај . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.27 Wi-Fi QoS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 Wi-Fi AMSDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 Фрагмент од Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 Запишан во WPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 Користење на Wi-Fi бафер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Како да се подобрат перформансите на Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Конфигурација на менито за Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 Решавање проблеми . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 Безбедност на Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 Безбедносни функции на Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.2 Заштитени рамки за управување (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-Личен . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 Надview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Поддржано сценарио за коегзистенција за ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 Механизам и политика на коегзистенција . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 Како да се користи функцијата за коегзистенција . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 Репродуктивни градби . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 Вовед . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 Причини за нерепродуктивни градби . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Овозможување на репродуктивни градби во ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 Како се постигнуваат репродуктивни градби . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 Репродуктивни градби и дебагирање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 Фактори кои сè уште влијаат на репродуктивните градби . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 Упатство за корисникот за режим на мала потрошувачка на енергија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578
5 водичи за миграција
2579
5.1 ESP-IDF 5.x Водич за миграција . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
5.1.1 Миграција од 4.4 до 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
6 библиотеки и рамки
2611
6.1 Облачни рамки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.1 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.3 Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.4 Google IoT Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.5 Алијун IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.6 Joylink IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.7 Tencent IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.8 Tencentyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.9 Baidu IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2 Рамки на еспресивни . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.1 Рамка за развој на аудио од Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.3 Espressif DSP библиотека . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.4 Рамка за развој на ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.5 ESP-WHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.6 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.7 ESP-IoT-решение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.8 ESP-протоколи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
viii
6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614
Водич за 7 придонеси
2615
7.1 Како да придонесете . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.2 Пред да придонесете . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.3 Процес на барање за повлекување . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.4 Правен дел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5 Поврзани документи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.1 Водич за стил на рамка за развој на Espressif IoT . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.2 Инсталирајте ја куката за претходно извршување за проектот ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . 2623
7.5.3 Документирање на код . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624
7.5.4 Креирање на Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629
7.5.5 Шаблон за документација за API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630
7.5.6 Договор за соработник . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632
7.5.7 Водич за заглавија за авторски права . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634
7.5.8 ESP-IDF тестови со Pytest водич . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635
8 Верзии на ESP-IDF
2645
8.1 Изданија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.2 Со која верзија треба да започнам? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.3 Шема за версионирање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.4 Периоди на поддршка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646
8.5 Проверка на тековната верзија . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647
8.6 Работен тек во Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7 Ажурирање на ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7.1 Ажурирање на стабилно издание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.2 Ажурирање на верзија пред издавање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.3 Ажурирање на главна гранка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.4 Ажурирање на гранка за издавање . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650
9 Ресурси
2651
9.1 ПлатформаIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.1 Што е PlatformIO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.2 Инсталација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.3 Конфигурација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.4 Упатства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.5 Проект Ексamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.6 Следни чекори . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.2 Корисни линкови . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
10 Авторски права и лиценци
2653
10.1 Авторски права на софтвер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.1 Компоненти на фирмверот . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.2 Документација . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.2 Авторски права за изворниот код на ROM-от . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.3 Xtensa libhal MIT лиценца . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.4 TinyBasic Plus MIT лиценца . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.5 Лиценца TJpgDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
11 За
2657
12 Префрлување помеѓу јазици
2659
Индекс
2661
Индекс
2661
ix
x
Содржина
Ова е документацијата за Espressif IoT Development Framework (esp-idf). ESP-IDF е официјалната рамка за развој за SoC-овите од сериите ESP32, ESP32-S и ESP32-C. Овој документ го опишува користењето на ESP-IDF со ESP32 SoC.
Започнете
Референца на API
Водичи за API
Еспресив системи
1 Испрати повратни информации за документот
Објавување v5.0.9
Содржина
Еспресив системи
2 Испрати повратни информации за документот
Објавување v5.0.9
Поглавје 1
Започнете
Овој документ е наменет да ви помогне да ја поставите околината за развој на софтвер за хардверот базирана на чипот ESP32 од Espressif. После тоа, едноставен примерampЌе ви покажеме како да го користите ESP-IDF (Espressif IoT Development Framework) за конфигурација на менијата, а потоа за креирање и флеширање на фирмверот на ESP32 плоча.
Забелешка: Ова е документација за стабилната верзија v5.0.9 на ESP-IDF. Достапни се и други верзии на ESP-IDF.
1.1 Вовед
ESP32 е систем на чип кој ги интегрира следниве карактеристики: · Wi-Fi (опсег од 2.4 GHz) · Bluetooth · Двојни високо-перформансни Xtensa® 32-битни LX6 процесорски јадра · Копроцесор со ултра мала потрошувачка на енергија · Повеќе периферни уреди
Напојуван од 40 nm технологија, ESP32 обезбедува робусна, високо интегрирана платформа, која помага да се задоволат континуираните барања за ефикасно користење на енергија, компактен дизајн, безбедност, високи перформанси и сигурност. Espressif обезбедува основни хардверски и софтверски ресурси за да им помогне на развивачите на апликации да ги реализираат своите идеи користејќи го хардверот од серијата ESP32. Рамката за развој на софтвер од Espressif е наменета за развој на апликации од Интернет на нештата (IoT) со Wi-Fi, Bluetooth, управување со енергија и неколку други системски функции.
1.2 Што ви треба
1.2.1 Хардвер
· ESP32 плоча. · USB кабел – USB A / микро USB B. · Компјутер со Windows, Linux или macOS.
Забелешка: Моментално, некои од развојните плочи користат USB тип C конектори. Бидете сигурни дека го имате точниот кабел за поврзување на вашата плоча!
Доколку имате една од официјалните развојни плочи на ESP32 наведени подолу, можете да кликнете на линкот за да дознаете повеќе за хардверот.
3
Глава 1. Започнете
ESP32-DevKitS(-R)
Ова упатство за корисникот дава информации за ESP32-DevKitS(-R), плочка базирана на ESP32, произведена од Espressif. ESP32-DevKitS(-R) е комбинација од две имиња на плочи: ESP32-DevKitS и ESP32-DevKitS-R. S е кратенка за пружини, а R е кратенка за WROVER.
ESP32-DevKitS
ESP32-DevKitS-R
Документот се состои од следниве главни делови: · Започнување: Обезбедува прегледview на ESP32-DevKitS(-R) и упатства за поставување на хардвер/софтвер за да започнете. · Референца за хардвер: Обезбедува подетални информации за хардверот на ESP32-DevKitS(-R)ns. · Поврзани документи: Дава врски до поврзана документација.
Започнување Овој дел опишува како да започнете со ESP32-DevKitS(-R). Започнува со неколку воведни делови за ESP32-DevKitS(-R), а потоа делот Како да се флешира плочка дава упатства за тоа како да се монтира модул на ESP32-DevKitS(-R), да се подготви и да се флешира фирмверот на него.
Во текот наview ESP32-DevKitS(-R) е Espressifns флеш-плоча дизајнирана специјално за ESP32. Може да се користи за флеширање на ESP32 модул без лемење на модулот на напојувањето и сигналните линии. Со монтиран модул, ESP32-DevKitS(-R) може да се користи и како мини развојна плоча како ESP32-DevKitC.
Плочките ESP32-DevKitS и ESP32-DevKitS-R се разликуваат само во распоредот на пружинските иглички за да одговараат на следните ESP32 модули.
· ESP32-DevKitS: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (PCB и IPEX) ESP32-WROVER-B (PCB и IPEX) ESP32-WROVER-E ESP32-WROVER-IE
За информации за горенаведените модули, ве молиме погледнете ги Модулите од серијата ESP32.
Опис на компоненти
Еспресив системи
4 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Сл. 1: ESP32-DevKitS – напред
Еспресив системи
Сл. 2: ESP32-DevKitS-R – предна страна 5
Поднесете повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Пружински иглички за клучни компоненти 2.54 mm женски конектори
USB-to-UART мост LDO микро-USB конектор/микро USB порт EN копче копче за стартување
Вклучување на ЛЕР
Опис Кликнете го модулот внатре. Пиновите ќе се вклопат во заоблените отвори на модулот. Овие женски конектори се поврзани со пиновите на модулот монтирани на оваа плочка. За опис на женските конектори, погледнете ги Блоковите за конектори. Мостот од еден чип USB до UART обезбедува брзина на пренос до 3 Mbps.
5V до 3.3V со низок пад на јачината на звукотtagе регулатор (LDO).
USB интерфејс. Напојување за плочката, како и комуникациски интерфејс помеѓу компјутерот и плочката.
Копче за ресетирање.
Копче за преземање. Држењето на Boot, а потоа притискањето на EN, го иницира режимот за преземање на фирмверот преку серискиот порт.
Се вклучува кога USB-то или напојувањето е поврзано на плочата.
Како да флеширате плочка Пред да го вклучите вашиот ESP32-DevKitS(-R), проверете дали е во добра состојба без очигледни знаци на оштетување.
Потребна опрема · ESP32 модул по ваш избор · USB 2.0 кабел (стандарден-A до микро-B) · Компјутер со Windows, Linux или macOS
Поставување на хардверот Монтирајте модул по ваш избор на вашиот ESP32-DevKitS(-R) според следниве чекори:
· Нежно поставете го вашиот модул на плочата ESP32-DevKitS(-R). Осигурајте се дека дупките со заоблени отвори на вашиот модул се порамнети со пружинските иглички на плочата.
· Притиснете го модулот надолу во плочата додека не кликне. · Проверете дали сите пружински иглички се вметнати во заоблените дупки. Доколку има некои неправилно порамнети пружински иглички,
ставете ги во кастелирани дупки со пинцета.
Поставување на софтвер
Префериран метод Рамката за развој на ESP-IDF обезбедува префериран начин за флеширање на бинарни датотеки на ESP32-DevKitS(-R). Продолжете на Започнување, каде што делот Инсталација брзо ќе ви помогне да ја поставите развојната околина, а потоа да флеширате апликација.ampна вашиот ESP32-DevKitS(-R).
Алтернативен метод Како алтернатива, корисниците на Windows можат да флешираат бинарни датотеки користејќи ја алатката за преземање на Flash. Само преземете ја, отпакувајте ја и следете ги упатствата во папката doc.
Забелешка: 1. За флеширање на бинарна датотека files, ESP32 треба да биде поставен на режим за преземање на фирмверот. Ова може да се направи или автоматски со алатката за флеширање или со држење на копчето Boot и допирање на копчето EN. 2. По флеширањето на бинарната датотека files, алатката за преземање флеш го рестартира вашиот ESP32 модул и стандардно ја стартува флешираната апликација.
Димензии на плочата Содржина и пакување
Еспресив системи
6 Испрати повратни информации за документот
Објавување v5.0.9
Поглавје 1. Започнување Сл. 3: Димензии на плочата ESP32-DevKitS – задната страна
Еспресив системи
Сл. 4: Димензии на плочата ESP32-DevKitS-R – задната страна 7
Поднесете повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Малопродажни нарачки Ако нарачате неколкуampЗначи, секој ESP32-DevKitS(-R) доаѓа во индивидуално пакување во антистатичка кеса или во какво било пакување во зависност од продавачот. За малопродажни нарачки, посетете ја страницата https://www.espressif.com/en/contact-us/get-sampлес.
Нарачки на големо Доколку нарачувате на големо, таблите се испорачуваат во големи картонски кутии. За нарачки на големо, посетете ја страницата https://www.espressif.com/en/contact-us/sales-questions.
Референца за хардвер
Блок-дијаграм Блок-дијаграмот подолу ги прикажува компонентите на ESP32-DevKitS(-R) и нивните меѓусебни врски.
Сл. 5: ESP32-DevKitS(-R) (кликнете за да зголемите)
Опции за напојување Постојат три меѓусебно исклучувачки начини за напојување на плочата: · Микро USB порт, стандардно напојување · Пинови за глава од 5V и GND · Пинови за глава од 3V3 и GND
Препорачливо е да се користи првата опција: микро USB порт.
Еспресив системи
.
Сигнал на ознака
L1 3V3 VDD 3V3
L2 EN CHIP_PU
L3 VP SENSOR_VP
L4 VN SENSOR_VN
L5 34
GPIO34
L6 35
GPIO35
L7 32
GPIO32
L8 33
GPIO33
продолжува на следната страница
8 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Табела 1 продолжува од претходната страница
.
Сигнал на ознака
L9 25
GPIO25
L10 26
GPIO26
L11 27
GPIO27
L12 14
GPIO14
L13 12
GPIO12
L14 GND GND
L15 13
GPIO13
L16 D2 SD_DATA2
L17 D3 SD_DATA3
L18 CMD SD_CMD
L19 5V
Надворешен 5V
R1 GND GND
R2 23 година
GPIO23
R3 22 година
GPIO22
R4 TX U0TXD
R5 RX U0RXD
R6 21 година
GPIO21
R7 GND GND
R8 19 година
GPIO19
R9 18 година
GPIO18
R10 5 година
GPIO5
R11 17 година
GPIO17
R12 16 година
GPIO16
R13 4 година
GPIO4
R14 0 година
GPIO0
R15 2 година
GPIO2
R16 15 година
GPIO15
R17 D1 SD_DATA1
R18 D0 SD_DATA0
R19 CLK SD_CLK
Заглавни блокови За сликата на заглавните блокови, погледнете го Описот на компонентите.
Поврзани документи
· Шеми на ESP32-DevKitS(-R) (PDF) · Лист со податоци за ESP32 (PDF) · Лист со податоци за ESP32-WROOM-32 (PDF) · Лист со податоци за ESP32-WROOM-32D и ESP32-WROOM-32U (PDF) · Лист со податоци за ESP32-SOLO-1 (PDF) · Лист со податоци за ESP32-WROVER (PDF) · Лист со податоци за ESP32-WROVER-B (PDF) · Изборник на производи за ESP
ESP32-DevKitM-1
Ова упатство за корисникот ќе ви помогне да започнете со ESP32-DevKitM-1, а исто така ќе ви обезбеди и подетални информации.
ESP32-DevKitM-1 е развојна плоча базирана на ESP32-MINI-1(1U) произведена од Espressif. Повеќето од I/O пиновите се поделени на заглавјата на пиновите од двете страни за лесно поврзување. Корисниците можат или да поврзат периферни уреди со џампер жици или да го монтираат ESP32-DevKitM-1 на протоплочка.
Еспресив системи
9 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
ESP32-DevKitM-1 – напред
ESP32-DevKitM-1 – изометриски
Документот се состои од следниве главни делови: · Започнување: Обезбедува прегледview од ESP32-DevKitM-1 и упатствата за поставување на хардвер/софтвер за да започнете. · Референца за хардвер: Обезбедува подетални информации за хардверот на ESP32-DevKitM-1ns. · Поврзани документи: Дава врски до поврзана документација.
Започнување Овој дел опишува како да започнете со ESP32-DevKitM-1. Започнува со неколку воведни делови за ESP32-DevKitM-1, а потоа делот „Започни со развој на апликации“ дава упатства за тоа како да се направи почетното поставување на хардверот, а потоа и како да се флешира фирмверот на ESP32-DevKitM-1.
Во текот наview Ова е мала и удобна табла за развој која има:
· ESP32-MINI-1 или ESP32-MINI-1U модул · USB-во-сериски програмски интерфејс кој исто така обезбедува напојување за плочката · заглавја на пинови · копчиња за ресетирање и активирање на режимот за преземање на фирмверот · неколку други компоненти
Содржина и пакување
Малопродажни нарачки Ако нарачате неколкуampНа пример, секој ESP32-DevKitM-1 доаѓа во индивидуално пакување во антистатичка кеса или во какво било пакување, во зависност од вашиот продавач.
За нарачки на мало, посетете ја страницата https://www.espressif.com/en/contact-us/get-sampлес.
Нарачки на големо Доколку нарачувате на големо, таблите се испорачуваат во големи картонски кутии. За нарачки на големо, посетете ја страницата https://www.espressif.com/en/contact-us/sales-questions.
Опис на компонентите Следната слика и табелата подолу ги опишуваат клучните компоненти, интерфејси и контроли на плочата ESP32-DevKitM-1. Како пример ја земаме плочата со модул ESP32-MINI-1.ampле во следните делови.
Еспресив системи
10 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Сл. 6: ESP32-DevKitM-1 – напред
Клучна компонента Вграден модул
Копче за стартување LDO од 5 V до 3.3 V
Копче за ресетирање Микро-USB порт
USB-to-UART мост 3.3 V LED диода за вклучување
I/O конектор
Опис
ESP32-MINI-1 модул или ESP32-MINI-1U модул. ESP32-MINI-1 доаѓа со вградена PCB антена. ESP32-MINI-1U доаѓа со конектор за надворешна антена. И двата модула имаат пакет од 4 MB флеш меморија во чип. За детали, видете го техничкиот лист на ESP32-MINI-1 и ESP32-MINI-1U.
Регулаторот за напојување конвертира 5 V во 3.3 V.
Копче за преземање. Држењето на Boot, а потоа притискањето на Reset, го стартува режимот за преземање на фирмверот за преземање на фирмверот преку серискиот порт.
Копче за ресетирање
USB интерфејс. Напојување за плочката, како и комуникацискиот интерфејс помеѓу компјутерот и чипот ESP32.
Еден USB-UART мост чип обезбедува брзина на пренос до 3 Mbps.
Се вклучува кога USB-то е поврзано со плочата. За детали, видете ги шемите во поврзаните документи. Сите достапни GPIO пинови (освен SPI магистралата за флеш меморија) се поделени на заглавјата на пиновите на плочата. Корисниците можат да го програмираат ESP32 чипот за да овозможат повеќе функции.
Започнете со развој на апликации Пред да го вклучите вашиот ESP32-DevKitM-1, проверете дали е во добра состојба без очигледни знаци на оштетување.
Потребна опрема · ESP32-DevKitM-1 · USB 2.0 кабел (стандарден-A до микро-B) · Компјутер со Windows, Linux или macOS
Поставување на софтвер Ве молиме продолжете со Започнување, каде што делот Инсталација брзо ќе ви помогне да ја поставите развојната околина, а потоа да инсталирате флеш-прилог на апликација.ampодете на вашиот ESP32-DevKitM-1.
Еспресив системи
11 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Внимание: ESP32-DevKitM-1 плочите произведени пред 2 декември 2021 година имаат инсталиран еднојадрен модул. За да потврдите кој модул го имате, проверете ги информациите за означување на модулот во PCN-2021-021. Ако вашата плоча има инсталиран еднојадрен модул, овозможете го режимот на еднојадрен (CONFIG_FREERTOS_UNICORE) во menuconfig пред да ги стартувате вашите апликации.
Блок-дијаграм за референца на хардверот Блок-дијаграмот подолу ги прикажува компонентите на ESP32-DevKitM-1 и нивните меѓусебни врски.
Сл. 7: ESP32-DevKitM-1
Избор на извор на енергија Постојат три меѓусебно исклучувачки начини за снабдување на плочата со енергија: · Микро USB порт, стандардно напојување · Пинови за глава од 5V и GND · Пинови за глава од 3V3 и GND
Предупредување: · Напојувањето мора да се обезбеди со користење на само една од опциите погоре, во спротивно плочата и/или изворот на напојување може да се оштетат. · Се препорачува напојување преку микро USB порт.
Описи на пиновите Табелата подолу ги содржи имињата и функциите на пиновите од двете страни на плочката. За конфигурации на периферни пинови, ве молиме погледнете го техничкиот лист на ESP32.
бр.
Име
Тип
1
ГНД
P
2
3V3
P
Функција Заземјување Напојување од 3.3 V
продолжува на следната страница
Еспресив системи
12 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Табела 2 продолжува од претходната страница
бр.
Име
Тип
Функција
3
I36
I
GPIO36, ADC1_CH0, RTC_GPIO0
4
I37
I
GPIO37, ADC1_CH1, RTC_GPIO1
5
I38
I
GPIO38, ADC1_CH2, RTC_GPIO2
6
I39
I
GPIO39, ADC1_CH3, RTC_GPIO3
7
РСТ
I
Ресетирање; Високо: овозможи; Ниско: исклучено напојување
8
I34
I
GPIO34, ADC1_CH6, RTC_GPIO4
9
I35
I
GPIO35, ADC1_CH7, RTC_GPIO5
10
IO32
I/O
GPIO32, XTAL_32K_P (влез на кристален осцилатор од 32.768 kHz),
ADC1_CH4, TOUCH9, RTC_GPIO9
11
IO33
I/O
GPIO33, XTAL_32K_N (излез на кристален осцилатор 32.768 kHz),
ADC1_CH5, TOUCH8, RTC_GPIO8
12
IO25
I/O
GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
13
IO26
I/O
GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
14
IO27
I/O
GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV
15
IO14
I/O
GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,
HS2_CLK, SD_CLK, EMAC_TXD2
16
5V
P
Напојување од 5 V
17
IO12
I/O
GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,
HS2_DATA2, SD_DATA2, EMAC_TXD3
18
IO13
I/O
GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,
HS2_DATA3, SD_DATA3, EMAC_RX_ER
19
IO15
I/O
GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,
HS2_CMD, SD_CMD, EMAC_RXD3
20
IO2
I/O
GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,
HS2_DATA0, SD_DATA0
21
IO0
I/O
GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,
EMAC_TX_CLK
22
IO4
I/O
GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,
HS2_DATA1, SD_DATA1, EMAC_TX_ER
23
IO9
I/O
GPIO9, HS1_DATA2, U1RXD, SD_DATA2
24
IO10
I/O
GPIO10, HS1_DATA3, U1TXD, SD_DATA3
25
IO5
I/O
GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK
26
IO18
I/O
GPIO18, HS1_DATA7, VSPICLK
27
IO23
I/O
GPIO23, HS1_STROBE, VSPID
28
IO19
I/O
GPIO19, VSPIQ, U0CTS, EMAC_TXD0
29
IO22
I/O
GPIO22, VSPIWP, U0RTS, EMAC_TXD1
30
IO21
I/O
GPIO21, VSPIHD, EMAC_TX_MK
31
TXD0
I/O
GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
32
RXD0
I/O
GPIO3, U0RXD, CLK_OUT2
Детали за ревизијата на хардверот Нема достапни претходни верзии.
Поврзани документи
· ESP32-MINI-1 и ESP32-MINI-1U технички лист (PDF) · Шеми на ESP32-DevKitM-1 (PDF) · Распоред на печатена плочка ESP32-DevKitM-1 (PDF) · Распоред на ESP32-DevKitM-1 (DXF) – Можете view тоа со Autodesk Viewонлајн · ESP32 Технички лист (PDF) · Изборник на производи за ESP
За друга документација за дизајнот на плочката, ве молиме контактирајте не на sales@espressif.com.
Еспресив системи
13 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
1.2.2 софтвер
За да започнете да го користите ESP-IDF на ESP32, инсталирајте го следниов софтвер: · Алатки за компајлирање код за ESP32 · Алатки за градење – CMake и Ninja за градење на целосна апликација за ESP32 · ESP-IDF кој во суштина содржи API (софтверски библиотеки и изворен код) за ESP32 и скрипти за работа на Алатките
1.3 Инсталација
За да го инсталирате целиот потребен софтвер, нудиме неколку различни начини за олеснување на оваа задача. Изберете една од достапните опции.
1.3.1 ИРО
Забелешка: Препорачуваме да го инсталирате ESP-IDF преку вашиот омилен IDE.
· Додаток за Eclipse · Екстензија за VSCode
1.3.2 Рачна инсталација
За рачна постапка, изберете според вашиот оперативен систем.
Еспресив системи
14 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Стандардно поставување на синџир на алатки за Windows
Вовед ESP-IDF бара инсталирање на некои предусловни алатки за да можете да изградите фирмвер за поддржаните чипови. Предусловните алатки вклучуваат Python, Git, крос-компајлери, алатки за градење CMake и Ninja. За ова „Започнување“ ќе го користиме командниот прозорец, но откако ќе се инсталира ESP-IDF, можете да го користите приклучокот Eclipse или друг графички IDE со поддршка за CMake. Забелешка: Ограничувања: – Патеката за инсталација на ESP-IDF и алатките ESP-IDF не смее да биде подолга од 90 знаци. Предолгите патеки за инсталација може да резултираат со неуспешно градење. – Патеката за инсталација на Python или ESP-IDF не смее да содржи празни места или загради. – Патеката за инсталација на Python или ESP-IDF не треба да содржи специјални знаци (неASCII) освен ако оперативниот систем не е конфигуриран со поддршка за oUnicode UTF-8p. Системскиот администратор може да ја овозможи поддршката преку Контролна табла – Промена на формати на датум, време или броеви – Администраторски таб – Промена на системска локација – означете ја опцијата oBeta: Користете Unicode UTF-8 за поддршка на јазици низ целиот свет p – Во ред и рестартирајте го компјутерот.
Инсталатор на ESP-IDF Tools Најлесниот начин да ги инсталирате предусловите за ESP-IDFns е да преземете еден од инсталатерите на ESP-IDF Tools.
Преземање на инсталерот на Windows
Која е употребата на онлајн и офлајн инсталерот? Онлајн инсталерот е многу мал и овозможува инсталација на сите достапни изданија на ESP-IDF. Инсталерот ќе ги преземе само потребните зависности, вклучувајќи го и Git за Windows, за време на процесот на инсталација. Инсталерот ги складира преземените податоци? files во кеш директориумот %userprofile%. еспресиф
Офлајн инсталерот не бара никаква мрежна конекција. Инсталерот ги содржи сите потребни зависности, вклучувајќи го и Git за Windows.
Компоненти на инсталацијата Инсталерот ги распоредува следните компоненти:
· Вграден Python · Вкрстени компајлери · OpenOCD · Алатки за градење CMake и Ninja · ESP-IDF
Инсталерот исто така дозволува повторна употреба на постоечкиот директориум со ESP-IDF. Препорачаниот директориум е %userprofile%Desktopesp-idf каде што %userprofile% е вашиот домашен директориум.
Еспресив системи
15 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Стартување на ESP-IDF околината На крајот од процесот на инсталација можете да ја проверите опцијата Run ESP-IDF PowerShell Environment или Run ESP-IDF Command Prompt (cmd.exe). Инсталерот ќе ја стартува ESP-IDF околината во избраниот прозорец. Стартувајте ESP-IDF PowerShell Environment:
Сл. 8: Завршување на волшебникот за поставување на алатките ESP-IDF со Run ESP-IDF PowerShell Environment
Стартувајте ја командната линија ESP-IDF (cmd.exe):
Користење на командната линија За преостанатите чекори за започнување, ќе ја користиме командната линија на Windows. Инсталаторот на ESP-IDF алатки, исто така, креира кратенка во менито Start за да ја стартува командната линија ESP-IDF. Оваа кратенка ја стартува командната линија (cmd.exe) и ја извршува скриптата export.bat за да ги постави променливите на околината (PATH, IDF_PATH и други). Внатре во оваа командна линија, достапни се сите инсталирани алатки. Забележете дека оваа кратенка е специфична за директориумот ESP-IDF избран во инсталаторот на ESP-IDF алатки. Ако имате повеќе директориуми ESP-IDF на компјутерот (на пр.ampт.е., за работа со различни верзии на ESP-IDF), имате две опции за нивно користење:
1. Направете копија од кратенката креирана од инсталерот на алатките ESP-IDF и променете го работниот директориум на новата кратенка во директориумот ESP-IDF што сакате да го користите.
2. Алтернативно, стартувајте cmd.exe, потоа префрлете се во директориумот ESP-IDF што сакате да го користите и стартувајте export.bat. Забележете дека за разлика од претходната опција, овој начин бара Python и Git да бидат присутни во PATH. Ако добиете грешки поврзани со тоа што Python или Git не се пронајдени, користете ја првата опција.
Први чекори на ESP-IDF Сега, бидејќи сите барања се исполнети, следната тема ќе ве води како да го започнете вашиот прв проект.
Еспресив системи
16 Испрати повратни информации за документот
Објавување v5.0.9
Поглавје 1. Започнување Сл. 9: ESP-IDF PowerShell
Сл. 10: Завршување на волшебникот за поставување на алатките ESP-IDF со Run ESP-IDF Command Prompt (cmd.exe)
Еспресив системи
17 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Сл. 11: Командна линија ESP-IDF
Еспресив системи
18 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Ова упатство ќе ви помогне во првите чекори со користење на ESP-IDF. Следете го ова упатство за да започнете нов проект на ESP32 и да изградите, флеширате и следите излезот на уредот. Забелешка: Ако сè уште не сте го инсталирале ESP-IDF, одете на Инсталација и следете ги упатствата за да го добиете целиот софтвер потребен за користење на ова упатство.
Започнете проект Сега сте подготвени да ја подготвите вашата апликација за ESP32. Можете да започнете со проектот getstarted/hello_world од пр.amples директориум во ESP-IDF.
Важно: Системот за градење на ESP-IDF не поддржува празни места во патеките ниту до ESP-IDF ниту до проекти.
Копирајте го проектот get-started/hello_world во директориумот ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhello_world hello_world
Забелешка: Постои низа од ексampле проекти во ексamples директориум во ESP-IDF. Можете да копирате кој било проект на ист начин како што е претставен погоре и да го извршите. Исто така е можно да се изгради ексampлезиите се на место без прво да се копираат.
Поврзете го вашиот уред Сега поврзете ја вашата ESP32 плоча со компјутерот и проверете под кој сериски порт е видлива плочата. Имињата на сериските порти почнуваат со COM во Windows. Ако не сте сигурни како да го проверите името на серискиот порт, ве молиме погледнете го делот Воспоставување сериска врска со ESP32 за повеќе детали.
Забелешка: Чувајте го името на портата при рака бидејќи ќе ви треба во следните чекори.
Конфигурирајте го вашиот проект Одете до вашиот директориум hello_world, поставете го ESP32 како цел и стартувајте ја алатката за конфигурација на проектот menuconfig.
Windows cd %userprofile%esphello_world idf.py поставување-цел esp32 idf.py конфигурација на менито
Откако ќе отворите нов проект, прво треба да ја поставите целта со idf.py set-target esp32. Забележете дека постојните градби и конфигурации во проектот, доколку ги има, ќе бидат исчистени и иницијализирани во овој процес. Целта може да се зачува во променливата на околината за да се прескокне овој чекор. Видете Изберете го чипот за цел: set-target за дополнителни информации. Ако претходните чекори се извршени правилно, се појавува следново мени: Го користите ова мени за да поставите променливи специфични за проектот, на пр., име и лозинка за Wi-Fi мрежа, брзина на процесорот итн. Поставувањето на проектот со menuconfig може да се прескокне за ohello_wordp, бидејќи ова е на пр.ample работи со стандардна конфигурација.
Внимание: Ако користите ESP32-DevKitC плоча со модулот ESP32-SOLO-1 или ESP32-DevKitM-1 плоча со модулот ESP32-MIN1-1(1U), овозможете режим на едно јадро (CONFIG_FREERTOS_UNICORE) во менито за конфигурација пред да го стартувате ex.ampлес.
Еспресив системи
19 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Сл. 12: Конфигурација на проектот – Почетен прозорец
Забелешка: Боите на менито може да бидат различни во вашиот терминал. Можете да го промените изгледот со опцијата –style. Ве молиме извршете ја командата idf.py menuconfig –help за повеќе информации.
Ако користите една од поддржаните развојни плочи, можете да го забрзате развојот со користење на Пакетот за поддршка на плочи. Видете Дополнителни совети за повеќе информации.
Изградете го проектот Изградете го проектот со извршување на:
idf.py изгради
Оваа команда ќе ја компајлира апликацијата и сите компоненти на ESP-IDF, а потоа ќе генерира подигнувач, табела за партиции и бинарни датотеки на апликации.
$ idf.py build Извршување на cmake во директориумот /path/to/hello_world/build Извршување на „cmake -G Ninja –warn-uninitialized /path/to/hello_world“… Предупредување за неиницијализирани вредности. — Пронајден е Git: /usr/bin/git (пронајдена е верзија „2.17.0“) — Градење на празна aws_iot компонента поради конфигурација — Имиња на компоненти: … — Патеки на компоненти: …
… (повеќе линии на излез од системот за изградба)
[527/527] Генерирање на hello_world.bin esptool.py v2.3.1
Градењето на проектот е завршено. За флеширање, извршете ја оваа команда: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin или извршете ја командата 'idf.py -p PORT флеширање'
Ако нема грешки, изградбата ќе заврши со генерирање на бинарниот .bin на фирмверот files.
Еспресив системи
20 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Флеширајте ги бинарните датотеки што штотуку ги изградивте (bootloader.bin, partition-table.bin и hello_world.bin) на вашата ESP32 плоча со извршување на: idf.py -p PORT [-b BAUD] флеширајте
Заменете го PORT со името на серискиот порт на вашата ESP32 картичка. Можете исто така да ја промените брзината на пренос на флешерот со заменување на BAUD со брзината на пренос што ви е потребна. Стандардната брзина на пренос е 460800. За повеќе информации за аргументите на idf.py, видете idf.py.
Забелешка: Опцијата flash автоматски го гради и флешира проектот, па затоа не е потребно да се изврши idf.py build.
Наидовте на проблеми при флеширање? Ако ја извршите дадената команда и видите грешки како што е „Неуспешно поврзување“ (Failed to connectp), може да има неколку причини за ова. Една од причините може да бидат проблемите со кои се соочува esptool.py, алатката што ја повикува системот за градење за ресетирање на чипот, интеракција со ROM-от за подигнување и флеширање на фирмверот. Едно едноставно решение што можете да го пробате е рачно ресетирање опишано подолу, а ако не помогне, можете да најдете повеќе детали за можните проблеми во „Решавање проблеми“.
esptool.py автоматски го ресетира ESP32 со поставување на DTR и RTS контролни линии на чипот за конвертор од USB во сериски формат, т.е. FTDI или CP210x (за повеќе информации, видете Воспостави сериска врска со ESP32). Контролните линии на DTR и RTS се пак поврзани со пиновите GPIO0 и CHIP_PU (EN) на ESP32, со што се менува волуменот.tagЕ нивоата на DTR и RTS ќе го стартуваат ESP32 во режим на преземање на фирмверот. Како на примерampНа пример, проверете ја шемата за развојната плоча ESP32 DevKitC.
Генерално, не би требало да имате проблеми со официјалните развојни плочи на esp-idf. Сепак, esptool.py не е во можност автоматски да го ресетира вашиот хардвер во следниве случаи:
· Вашиот хардвер нема DTR и RTS линии поврзани со GPIO0 и CHIP_PU · DTR и RTS линиите се конфигурирани различно · Воопшто нема такви сериски контролни линии
Во зависност од видот на хардверот што го имате, можеби е можно рачно да ја ставите вашата ESP32 плоча во режим на преземање на фирмверот (ресетирање).
· За развојните плочи произведени од Espressif, овие информации може да се најдат во соодветните упатства за почетници или упатства за корисници. На пр.ampле, за рачно ресетирање на развојната плоча ESP-IDF, држете го притиснато копчето Boot (GPIO0) и притиснете го копчето EN (CHIP_PU).
· За други видови хардвер, обидете се да го повлечете GPIO0 надолу.
Нормално работење Кога трепкате, ќе го видите излезниот дневник сличен на следниот:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev Сериски порт /dev/ttyUSB0 Поврзување…….._ Чипот е ESP32D0WDQ6 (ревизија 0) Карактеристики: WiFi, BT, двојно јадро, шема на кодирање Нема Кристалот е 40MHz MAC: 24:0a:c4:05:b9:14 Качување на stub… Извршување на stub… Stub работи… Промена на брзината на пренос на 460800 Променето.
(продолжува на следната страница)
Еспресив системи
21 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
(продолжува од претходната страница) Конфигурирање на големината на флеш меморијата… Компресирано 3072 бајти на 103… Запишување на 0x00008000… (100 %) Запишано 3072 бајти (103 компресирано) на 0x00008000 за 0.0 секунди (ефективно 5962.8 kbit/s)… Хешот на податоците е потврден. Компресирано 26096 бајти на 15408… Запишување на 0x00001000… (100 %) Запишано 26096 бајти (15408 компресирано) на 0x00001000 за 0.4 секунди (ефективно 546.7 kbit/s)… Хешот на податоците е потврден. Компресирани 147104 бајти на 77364… Запишување на 0x00010000… (20 %) Запишување на 0x00014000… (40 %) Запишување на 0x00018000… (60 %) Запишување на 0x0001c000… (80 %) Запишување на 0x00020000… (100 %) Запишани 147104 бајти (77364 компресирани) на 0x00010000 за 1.9 секунди (ефективни 615,5 kbit/s)… Хеширањето на податоците е потврдено.
Заминуваме… Тешко ресетирање преку RTS пин… Готово
Ако нема проблеми до крајот на процесот на флеширање, плочата ќе се рестартира и ќе ја стартува апликацијата theohello_worldpapplication. Ако сакате да го користите Eclipse или VS Code IDE наместо да го стартувате idf.py, проверете го додатокот Eclipse, додатокот VSCode.
Следење на излезот За да проверите дали ohello_worldpis навистина работи, напишете idf.py -p PORT monitor (Не заборавајте да го замените PORT со името на вашиот сериски порт).
Оваа команда ја активира апликацијата IDF Monitor:
$ idf.py -p monitor Извршување на idf_monitor во директориумот […]/esp/hello_world/build Извршување на „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor вклучен 115200 —– Излез: Ctrl+] | Мени: Ctrl+T | Помош: Ctrl+T проследено со Ctrl+H –ets 8 јуни 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) и 8 јуни 2016 00:22:57 …
Откако логовите за стартување и дијагностика ќе се скролуваат нагоре, треба да се појави пораката oHello world! отпечатена од апликацијата.
... Здраво свету! Рестартирање за 10 секунди… Ова е esp32 чип со 2 јадра на процесорот, WiFi/BT/BLE, силиконска ревизија 1, 2MB надворешна флеш меморија Минимална големина на слободната куповина: 298968 бајти Рестартирање за 9 секунди… Рестартирање за 8 секунди… Рестартирање за 7 секунди…
За да излезете од мониторот IDF, користете ја кратенката Ctrl+].
Еспресив системи
22 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Ако IDF мониторот откаже кратко време по прикачувањето, или, ако наместо пораките погоре, видите случајни ѓубре слични на она што е дадено подолу, вашата плоча веројатно користи кристал од 26 MHz. Повеќето дизајни на развојни плочи користат 40 MHz, па затоа ESP-IDF ја користи оваа фреквенција како стандардна вредност.
Доколку имате ваков проблем, направете го следново: 1. Излезете од мониторот. 2. Вратете се во menuconfig. 3. Одете во Component config > Hardware Settings > Main XTAL Config > Main XTAL frequency, потоа променете ја CONFIG_XTAL_FREQ_SEL на 26 MHz. 4. После тоа, повторно изградете ја и флеширајте ја апликацијата.
Во тековната верзија на ESP-IDF, главните XTAL фреквенции поддржани од ESP32 се следниве:
· 26 MHz · 40 MHz
Забелешка: Можете да комбинирате градење, флеширање и мониторинг во еден чекор со извршување на: idf.py -p PORT флеш монитор
Видете исто така: · IDF Monitor за практични кратенки и повеќе детали за користење на IDF monitor. · idf.py за целосна референца на командите и опциите на idf.py.
Тоа е сè што ви треба за да започнете со ESP32! Сега сте подготвени да пробате некои други.amples, или продолжете директно со развивање на ваши сопствени апликации.
Важно: Некои од поранешнитеampЛентите не поддржуваат ESP32 бидејќи потребниот хардвер не е вклучен во ESP32, па затоа не може да се поддржи. Ако градите ексampле, ве молам проверете го README file за табелата Поддржани цели. Ако ова е присутно, вклучувајќи ја и целта ESP32, или табелата воопшто не постои, на пр.ampЌе работи на ESP32.
Дополнителни совети
Проблеми со дозволи /dev/ttyUSB0 Кај некои Linux дистрибуции, може да ја добиете пораката за грешка „Неуспешно отворање на портата /dev/ttyUSB0“ при флеширање на ESP32. Ова може да се реши со додавање на тековниот корисник во групата за дијалаут.
Компатибилност со Python ESP-IDF поддржува Python 3.7 или понов. Препорачливо е да го надградите вашиот оперативен систем на понова верзија што го задоволува овој услов. Други опции вклучуваат инсталација на Python од извори или користење на систем за управување со верзии на Python, како што е pyenv.
Започнете со пакетот за поддршка на плочи За да го забрзате прототипирањето на некои развојни плочи, можете да користите пакети за поддршка на плочи (BSP), што ја олеснува иницијализацијата на одредена плоча со неколку повици на функции.
Еспресив системи
23 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
BSP обично ги поддржува сите хардверски компоненти обезбедени на развојната плоча. Освен функциите за дефинирање на пиновите и иницијализација, BSP се испорачува со драјвери за надворешните компоненти како што се сензори, дисплеи, аудио кодеци итн. BSP се дистрибуираат преку IDF Component Manager, така што можат да се најдат во IDF Component Registry. Еве еден пример.ampлекција за тоа како да додадете ESP-WROVER-KIT BSP во вашиот проект: idf.py add-dependency esp_wrover_kit
Повеќе ексampПомалку информации за употребата на BSP може да се најдат во BSP ex.ampпапката les.
Поврзани документи За напредни корисници кои сакаат да го прилагодат процесот на инсталација: · Ажурирање на алатките ESP-IDF на Windows · Воспоставување на сериска врска со ESP32 · Додаток Eclipse · Екстензија VSCode · IDF монитор
Ажурирање на алатките ESP-IDF на Windows
Инсталирајте ги алатките ESP-IDF користејќи скрипта Од командната линија на Windows, префрлете се во директориумот каде што е инсталиран ESPIDF. Потоа извршете:
инсталирај.лилјак
За Powershell, префрлете се во директориумот каде што е инсталиран ESP-IDF. Потоа извршете:
инсталирај.ps1
Ова ќе ги преземе и инсталира алатките потребни за користење на ESP-IDF. Доколку специфичната верзија на алатката е веќе инсталирана, нема да се преземе никакво дејство. Алатките се преземаат и инсталираат во директориум наведен за време на процесот на инсталирање на алатките ESP-IDF. Стандардно, ова е C:Usersusername.espressif.
Додадете ESP-IDF алатки во PATH користејќи скрипта за извоз. Инсталаторот на ESP-IDF алатки креира кратенка од менито Start за oESP-IDF Command Promptp. Оваа кратенка отвора прозорец со командна линија каде што сите алатки се веќе
достапно. Во некои случаи, можеби ќе сакате да работите со ESP-IDF во прозорец на командната линија кој не е стартуван со таа кратенка. Ако е тоа случај, следете ги упатствата подолу за да додадете алатки ESP-IDF во PATH. Во командната линија каде што треба да користите ESP-IDF, префрлете се во директориумот каде што е инсталиран ESP-IDF, а потоа извршете ја командата export.bat:
cd %userprofile% espesp-idf export.bat
Алтернативно, во Powershell каде што треба да користите ESP-IDF, префрлете се во директориумот каде што е инсталиран ESP-IDF, а потоа извршете ја командата export.ps1:
cd ~/esp/esp-idf извоз.ps1
Кога ова ќе се направи, алатките ќе бидат достапни во оваа командна линија.
Воспоставете сериска врска со ESP32 Овој дел дава упатства како да се воспостави сериска врска помеѓу ESP32 и компјутер.
Еспресив системи
24 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Поврзете ја ESP32 со компјутерот. Поврзете ја ESP32 плочата со компјутерот користејќи USB кабел. Доколку драјверот на уредот не се инсталира автоматски, пронајдете го чипот за USB-сериски конвертор на вашата ESP32 плоча (или надворешен конверторски адаптер), побарајте драјвери на интернет и инсталирајте ги. Подолу е листа на чипови за USB-сериски конвертор инсталирани на повеќето ESP32 плочи произведени од Espressif, заедно со линкови до драјверите:
· CP210x: CP210x USB to UART Bridge VCP драјвери · FTDI: FTDI виртуелни COM драјвери за порти. Ве молиме проверете го упатството за корисникот на плочката за специфичниот чип за конвертор од USB во сериски формат што се користи. Горенаведените драјвери се првенствено за референца. Под нормални околности, драјверите треба да бидат вклучени во оперативниот систем и автоматски да се инсталираат по поврзувањето на плочката со компјутерот.
Проверете го портот на Windows Проверете ја листата на идентификувани COM порти во Windows Device Manager. Исклучете го ESP32 и повторно поврзете го, за да потврдите кој порт исчезнува од листата, а потоа повторно се појавува. Сликите подолу го прикажуваат серискиот порт за ESP32 DevKitC и ESP32 WROVER KIT.
Сл. 13: USB до UART мост на ESP32-DevKitC во Windows Device Manager
Проверете го портот на Linux и macOS За да го проверите името на уредот за серискиот порт на вашата ESP32 плоча (или надворешен конверторски адаптер), извршете ја оваа команда двапати, прво со исклучена плоча/адаптер, а потоа со вклучена. Портот што се појавува вториот пат е оној што ви е потребен: Linux
ls /dev/tty*
macOS
Еспресив системи
25 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Сл. 14: Два USB сериски порти на ESP-WROVER-KIT во Windows Device Manager
Еспресив системи
26 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
ls /dev/cu.* Забелешка: корисници на macOS: ако не го гледате серискиот порт, проверете дали ги имате инсталирано USB/сериските драјвери. Видете го делот Поврзување на ESP32 со компјутер за врски до драјвери. За macOS High Sierra (10.13), можеби ќе треба експлицитно да дозволите вчитување на драјверите. Отворете ги Системските поставки -> Безбедност и приватност -> Општо и проверете дали овде се прикажува порака за oSystem Software од developer lp каде што името на развивачот е Silicon Labs или FTDI.
Додавање корисник во групата за дијалаут на Linux Моментално најавениот корисник треба да има пристап за читање и пишување на серискиот порт преку USB. На повеќето Linux дистрибуции, ова се прави со додавање на корисникот во групата за дијалаут со следнава команда:
sudo usermod -a -G бирање $USER
на Arch Linux ова се прави со додавање на корисникот во групата uucp со следнава команда:
sudo usermod -a -G uucp $USER
Погрижете се повторно да се најавите за да овозможите дозволи за читање и пишување за сериската порта.
Проверете ја сериската врска. Сега проверете дали сериската врска е оперативна. Можете да го направите ова со помош на програма за сериски терминал со проверка дали добивате излез на терминалот по ресетирањето на ESP32. Стандардната брзина на пренос на конзолата на ESP32 е 115200.
Windows и Linux Во овој случајampЗначи, ќе користиме PuTTY SSH клиент кој е достапен и за Windows и за Linux. Можете да користите други сериски програми и да поставите параметри за комуникација како што е прикажано подолу. Стартувајте го терминалот и поставете го идентификуваниот сериски порт. Baud rate = 115200 (доколку е потребно, променете го ова на стандардната baud rate на чипот што се користи), data bits = 8, stop bits = 1 и parity = N. Подолу се дадени примериampСнимки од екранот за поставување на портата и таквите параметри за пренос (накратко опишани како 115200-8-1-N) на Windows и Linux. Не заборавајте да го изберете точно истиот сериски порт што сте го идентификувале во чекорите погоре. Потоа отворете го серискиот порт во терминалот и проверете дали видите некој логов испечатен од ESP32. Содржината на логовот ќе зависи од апликацијата вчитана на ESP32, видете на примерampизлез.
Забелешка: Затворете го серискиот терминал откако ќе потврдите дека комуникацијата функционира. Ако ја задржите терминалната сесија отворена, серискиот порт нема да биде достапен за подоцнежно прикачување на фирмвер.
macOS За да ве поштеди од маката околу инсталирањето на програма за сериски терминал, macOS ја нуди командата screen. · Како што е дискутирано во Проверете го портот на Linux и macOS, извршете:
ls /dev/cu.* · Треба да видите сличен резултат:
/dev/cu.Bluetooth-Incoming-Port /dev/cu.SLAB_USBtoUART USBtoUART7
/dev/cu.SLAB_
· Излезот ќе варира во зависност од типот и бројот на плочи поврзани со вашиот компјутер. Потоа изберете го името на уредот на вашата плоча и стартувајте (доколку е потребно, променете го o115200pto на стандардната брзина на чипот што се користи):
screen /dev/cu.device_name 115200 Замени го името на_уредот со името пронајдено при извршување на ls /dev/cu.*.
Еспресив системи
27 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Сл. 15: Поставување на сериска комуникација во PuTTY на Windows
Еспресив системи
28 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Сл. 16: Поставување на сериска комуникација во PuTTY на Linux
Еспресив системи
29 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
· Она што го барате е некој дневник прикажан на екранот. Содржината на дневникот ќе зависи од апликацијата вчитана на ESP32, видете на пр.ample Output. To exit the screen session type Ctrl-A + .
Забелешка: Не заборавајте да ја напуштите сесијата на екранот откако ќе потврдите дека комуникацијата функционира. Ако не успеете да го направите тоа и само го затворите прозорецот на терминалот, серискиот порт нема да биде достапен за подоцнежно прикачување на фирмверот.
Example Output An exampДневникот е прикажан подолу. Ресетирајте ја плочката ако не видите ништо. ets 8 јуни 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) и 8 јуни 2016 00:22:57
rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0008,len:8 load:0x3fff0010,len:3464 load:0x40078000,len:7828 load:0x40080000,len:252 entry 0x40080034 I (44) boot: ESP-IDF v2.0-rc1-401-gf9fba35 2nd stage bootloader I (45) подигање: време на компајлирање 18:48:10
…
Ако можете да видите читлив излез од логовирањето, тоа значи дека сериската врска работи и дека сте подготвени да продолжите со инсталацијата и конечно да ја прикачите апликацијата на ESP32.
Забелешка: За некои конфигурации на ожичување на сериски порт, сериските RTS и DTR пинови треба да бидат оневозможени во терминалната програма пред ESP32 да се стартува и да произведе сериски излез. Ова зависи од самиот хардвер, повеќето развојни плочи (вклучувајќи ги и сите Espressif плочи) немаат овој проблем. Проблемот е присутен ако RTS и DTR се поврзани директно со EN и GPIO0 пиновите. Погледнете ја документацијата на esptool за повеќе детали.
Ако стигнавте тука од Чекор 5. Први чекори на ESP-IDF при инсталирање на софтвер за развој на ESP32, тогаш можете да продолжите со Чекор 5. Први чекори на ESP-IDF.
IDF Monitor IDF Monitor е главно програма за сериски терминал која пренесува сериски податоци до и од серискиот порт на целниот уред. Исто така, обезбедува и некои функции специфични за IDF. IDF Monitor може да се стартува од IDF проект со извршување на idf.py monitor.
Кратенки на тастатурата За лесна интеракција со IDF Monitor, користете ги кратенките на тастатурата дадени во табелата.
Еспресив системи
30 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Кратенка на тастатура Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (или A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (или I)
· Ctrl+H (или H)
· Ctrl+X (или X)
Ctrl+C
Акција
Опис
Излез од програмата Копче за излегување од менито Испрати го самиот знак од менито до далечинскиот управувач
Испрати го самиот знак за излез до далечинскиот управувач
Ресетирајте ја целта во подигнувачот за да ја паузирате апликацијата преку RTS линијата
Ресетирај ја целната табла преку RTS
Изградете го и флеширајте го проектот
Само креирајте и флеширајте ја апликацијата
Запри/продолжи печатење на излезот од дневникот на екранот
Излезот за запирање/продолжување на дневникот е зачуван во file
Време на запирање/продолжувањеamps
печатење
Прикажи ги сите кратенки на тастатурата
Притиснете и следете го со едно од копчињата дадени подолу.
Ја ресетира целната плоча во bootloader преку RTS линијата (доколку е поврзана), така што плочата не работи ништо. Корисно кога треба да почекате друг уред да се стартува. Ја ресетира целната плоча и ја рестартира апликацијата преку RTS линијата (доколку е поврзана).
Го паузира idf_monitor за да ја изврши целта на флеш-проектот, а потоа го продолжува idf_monitor. Секој променет извор fileсе прекомпајлираат, а потоа повторно се флешираат. Target encrypted-flash се извршува ако idf_monitor е стартуван со аргумент -E. Го паузира idf_monitor за да ја изврши целната команда на app-flash, а потоа го продолжува idf_monitor. Слично на флеш целта, но само главната апликација се гради и повторно се флешира. Target encrypted-app-flash се извршува ако idf_monitor е стартуван со аргумент -E. Ги отфрла сите дојдовни сериски податоци додека се активирани. Овозможува брзо паузирање и испитување на излезот од дневникот без напуштање на мониторот. Создава file во директориумот на проектот и излезот е запишан во него file сè додека ова не се оневозможи со истата кратенка на тастатурата (или додека IDF Monitor не излезе). IDF Monitor може да печати временска точкаamp на почетокот на секој ред. Временскиотamp форматот може да се промени од страна на –timestamp-format аргумент од командна линија.
Излезете од програмата
Прекини ја работата на апликацијата
Го паузира IDF Monitor и го стартува GDB дебагерот на проектот за дебагирање на апликацијата за време на извршување. Ова бара опцијата :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME да биде овозможена.
Сите притиснати копчиња, освен Ctrl-] и Ctrl-T, ќе бидат испратени преку серискиот порт.
Карактеристики специфични за IDF
Автоматско декодирање на адреси Секогаш кога ESP-IDF ќе прикаже хексадецимална кодна адреса од формата 0x4_______, IDF Monitor користи addr2line_ за да ја пронајде локацијата во изворниот код и да го пронајде името на функцијата.
Ако ESP-IDF апликацијата се сруши и се појави паника, се создава дамп на регистар и повратна трага, како што е следново:
Еспресив системи
31 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Грешка при медитација на Гуру од типот StoreProhibited се појави на јадро 0. Исклучок беше
необработен.
Дамп на регистар:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0x00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 ЕКСТРА:
0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0x00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90
IDF Monitor додава повеќе детали во дампот:
Грешка при медитација на Гуру од типот StoreProhibited се појави на јадро 0. Исклучок беше
необработен.
Дамп на регистар:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
0x400f360d: направи_нешто_за_паѓање во /home/gus/esp/32/idf/examples/започнете-започнете/
hello_world/main/./hello_world_main.c:57
(вметнато од) inner_dont_crash во /home/gus/esp/32/idf/examples/get-start/hello_
свет/главен/./hello_world_main.c:52
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0x00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 ЕКСТРА:
0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0x00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/ hello_world/main/./hello_world_main.c:57 (вметнато во линија од) inner_dont_crash во /home/gus/esp/32/idf/examples/get-started/hello_ world/main/./hello_world_main.c:52 0x400dbf56: сè уште не се урива на /home/gus/esp/32/idf/examples/get-started/hello_ world/main/./hello_world_main.c:47 0x400dbf5e: не се урива на /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:42 0x400dbf82: app_main во /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task во /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254
За декодирање на секоја адреса, IDF Monitor ја извршува следната команда во позадина: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS
Забелешка: Поставете ја променливата на околината ESP_MONITOR_DECODE на 0 или повикајте ја idf_monitor.py со одредена командна линија
Еспресив системи
32 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
опција: idf_monitor.py –disable-address-decoding за да се оневозможи декодирањето на адресите.
Ресетирање на целта при поврзување Стандардно, IDF Monitor ќе ја ресетира целта при поврзување со неа. Ресетирањето на чипот на целта се врши со користење на сериските линии DTR и RTS. За да спречите IDF Monitor автоматски да ја ресетира целта при поврзување, повикајте го IDF Monitor со опцијата –no-reset (на пр., idf_monitor.py –no-reset).
Забелешка: Опцијата –no-reset се однесува исто дури и кога IDF Monitor се поврзува со одреден порт (на пр., idf.py monitor –no-reset -p [PORT]).
Стартување на GDB со GDBStub GDBStub е корисна функција за дебагирање во време на извршување што работи на целта и се поврзува со домаќинот преку серискиот порт за да прима команди за дебагирање. GDBStub поддржува команди како што се читање меморија и променливи, испитување на рамки од стекот на повици итн. Иако GDBStub е помалку разновиден од JTAG дебагирање, не бара никаков посебен хардвер (како што е JTAG до USB мост) бидејќи комуникацијата се одвива целосно преку серискиот порт. Целта може да се конфигурира да го извршува GDBStub во позадина со поставување на CONFIG_ESP_SYSTEM_PANIC на GDBStub за време на извршување. GDBStub ќе работи во позадина сè додека не се испрати порака Ctrl+C преку серискиот порт и не предизвика GDBStub да ја прекине (т.е. да го запре извршувањето на) програмата, со што ќе му овозможи на GDBStub да обработува команди за дебагирање. Понатаму, обработувачот на паника може да се конфигурира да го извршува GDBStub при пад со поставување на CONFIG_ESP_SYSTEM_PANIC на GDBStub при паника. Кога ќе се случи пад, GDBStub ќе испрати посебен образец на стринг преку серискиот порт за да означи дека работи. Во двата случаи (т.е. испраќање на пораката Ctrl+C или примање на специјалниот образец на стринг), IDF Monitor автоматски ќе го стартува GDB за да му овозможи на корисникот да испраќа команди за дебагирање. Откако ќе излезе GDB, целта се ресетира преку RTS сериската линија. Ако оваа линија не е поврзана, корисниците можат да ја ресетираат својата цел (со притискање на копчето за ресетирање на boardns).
Забелешка: Во позадина, IDF Monitor ја извршува следната команда за да го стартува GDB:
xtensa-esp32-elf-gdb -ex “постави сериски бауд BAUD” -ex “целен далечински ПОРТ” -ex прекин build/PROJECT.elf :idf_target:`Здраво ИМЕ чип`
Филтрирање на излезот IDF мониторот може да се повика како idf.py monitor –print-filter=”xyz”, каде што –print-filter е параметарот за филтрирање на излезот. Стандардната вредност е празен стринг, што значи дека сè е отпечатено.
Ограничувањата за тоа што да се печати можат да се наведат како серија одtag>: предмети каде штоtag> е tag низа и е знак од множеството {N, E, W, I, D, V, *} што се однесува на ниво за евидентирање.
За прampле, PRINT_FILTER=”tag1:W” се совпаѓа и ги печати само излезите напишани со ESP_LOGW(“tag1“, …) или на пониско ниво на детаљност, т.е. ESP_LOGE(“tag1″, …). Не е наведено или користењето на * стандардно го поставува нивото Verbose.
Забелешка: Користете примарно логирање за да ги оневозможите при компилацијата излезните податоци што не ви се потребни преку библиотеката за логирање. Филтрирањето на излезните податоци со IDF монитор е секундарно решение кое може да биде корисно за прилагодување на опциите за филтрирање без повторно компајлирање на апликацијата.
Вашата апликација tags не смее да содржи празни места, ѕвездички * или две точки: за да биде компатибилен со функцијата за филтрирање на излезот.
Ако последниот ред од излезот во вашата апликација не е проследен со враќање на вредноста, филтрирањето на излезот може да се помеша, т.е. мониторот почнува да го печати редот и подоцна открива дека редот не требало да биде напишан. Ова е познат проблем и може да се избегне со секогаш додавање на враќање на вредноста (особено кога веднаш потоа не следи излез).
Еспресив системи
33 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
ExampЛекови од правилата за филтрирање:
· * може да се користи за да се совпадне со било кој tagsСепак, стрингот PRINT_FILTER=”*:I tag1:E“ во однос на tag1 печати само грешки, бидејќи правилото за tag1 има поголем приоритет во однос на правилото за *.
· Стандардното (празно) правило е еквивалентно на *:V бидејќи се совпаѓаат сите tag на Verbose ниво или пониско значи совпаѓање на сè.
· „*:N“ ги потиснува не само излезите од функциите за евидентирање, туку и отпечатоците направени од printf, итн. За да го избегнете ова, користете *:E или повисоко ниво на детаљност.
· Правилаtag1:V“, „tag1:v“, „tag1:“, „tag1:*“, и „tag1” се еквивалентни. · Правило „tag1:W tag1:E“ е еквивалентно на „tag1:E“ бидејќи секое последователно појавување на истото tag
името го пребришува претходното. · Правило „tag1: Јас tagСамо 2:W” печати tag1 на ниво на детализност на информациите или пониско и tag2 на Предупредувањето
ниво на зборлестост или пониско. · Правило „tag1: Јас tag2:W tag3:N“ е во суштина еквивалентно на претходното бидејќи tag3:N специфицира
тоа tag3 не треба да се печати. · tag3:N во правилото „tag1: Јас tag2:W tag3:N *:V” е позначајно бидејќи без tag3:N на
tagМожело да се испечатат 3 пораки; грешките за tag1 и tag2 ќе биде испечатен на наведеното (или пониско) ниво на детаљност, а сè друго ќе биде испечатено по дифолт.
Посложен пример за филтрирањеampСледниот фрагмент од дневникот е добиен без никакви опции за филтрирање:
load:0x40078000,len:13564 entry 0x40078d4c E (31) esp_image: сликата на 0x30000 има невалиден магичен бајт W (31) esp_image: сликата на 0x30000 има невалиден SPI режим 255 E (39) boot: Фабричката партиција на апликацијата не е bootable I (568) cpu_start: Про процесорот се стартува. I (569) heap_init: Се иницијализира. RAM достапна за динамичка алокација: I (603) cpu_start: Кориснички код за стартување на Про процесорот D (309) light_driver: [light_init, 74]:status: 1, mode: 2 D (318) vfs: esp_vfs_register_fd_range е успешен за опсег <54; 64) и VFS ID 1 I (328) wifi: задача за wifi драјвер: 3ffdbf84, prio:23, stack:4096, core=0
Зафатениот излез за опциите за филтрирање PRINT_FILTER=”wifi esp_image:E light_driver:I” е даден подолу:
E (31) esp_image: сликата на 0x30000 има невалиден магичен бајт I (328) wifi: задача на драјверот за wifi: 3ffdbf84, prio:23, stack:4096, core=0
Опциите „PRINT_FILTER=”light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V” го прикажуваат следниов излез:
load:0x40078000,len:13564 entry 0x40078d4c I (569) heap_init: Иницијализирање. RAM меморија достапна за динамичка алокација: D (309) light_driver: [light_init, 74]:status: 1, mode: 2
Познати проблеми со IDF мониторот
Проблеми забележани на Windows
· Копчињата со стрелки, како и некои други копчиња, не работат во GDB поради ограничувања на Windows конзолата. · Повремено, кога oidf.pypex излегува, може да застане до 30 секунди пред IDF Monitor да продолжи. · Кога се извршува ogdbpis, може да застане кратко време пред да започне комуникација со GDBStub.
Еспресив системи
34 Испрати повратни информации за документот
Објавување v5.0.9
Поглавје 1. Започнете со стандардно поставување на синџирот алатки за Linux и macOS
Чекор-по-чекор инсталација Ова е детален водич што ќе ве води низ процесот на инсталација.
Поставување на развојна околина Ова се чекорите за поставување на ESP-IDF за вашиот ESP32. · Чекор 1. Инсталирање на предуслови · Чекор 2. Преземање на ESP-IDF · Чекор 3. Поставување на алатките · Чекор 4. Поставување на променливите на околината · Чекор 5. Први чекори на ESP-IDF
Чекор 1. Инсталација на предуслови За да го користите ESP-IDF со ESP32, треба да инсталирате некои софтверски пакети базирани на вашиот оперативен систем. Ова упатство за поставување ќе ви помогне да инсталирате сè на системи базирани на Linux и macOS.
За корисници на Linux За да компајлирате користејќи ESP-IDF, ќе треба да ги добиете следниве пакети. Командата што ќе се изврши зависи од тоа која дистрибуција на Linux ја користите:
· Ubuntu и Debian: sudo apt-get install git wget flex bison gperf python3 python3-pip python3venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
· CentOS 7 и 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 е сè уште поддржан, но се препорачува CentOS верзија 8 за подобро корисничко искуство. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Забелешка: · CMake верзија 3.16 или понова е потребна за употреба со ESP-IDF. Извршете ја командата otools/idf_tools.py install cmakepto за да инсталирате соодветна верзија ако вашите верзии на оперативниот систем немаат таква. · Ако не ја гледате вашата Linux дистрибуција на горенаведената листа, тогаш проверете ја нејзината документација за да дознаете која команда да ја користите за инсталација на пакетот.
За корисници на macOS, ESP-IDF ќе ја користи верзијата на Python инсталирана по дифолт на macOS. · Инсталирајте ја верзијата на CMake и Ninja: Ако имате HomeBrew, можете да ја извршите: brew install cmake ninja dfu-util Ако имате MacPorts, можете да ја извршите: sudo port install cmake ninja dfu-util Во спротивно, консултирајте се со почетните страници на CMake и Ninja за преземања на инсталациите на macOS.
Еспресив системи
35 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
· Препорачливо е да инсталирате и ccache за побрзи градби. Ако имате HomeBrew, ова може да се направи преку brew install ccache или sudo port install ccache на MacPorts.
Забелешка: Ако се прикаже грешка како оваа за време на кој било чекор: xcrun: грешка: невалидна патека за активен развивач (/Library/Developer/CommandLineTools), недостасува xcrun на: /Library/Developer/CommandLineTools/usr/bin/xcrun
Потоа ќе треба да ги инсталирате алатките од командната линија на XCode за да продолжите. Можете да ги инсталирате со извршување на xcode-select –install.
Корисници на Apple M1 Доколку користите платформа Apple M1 и видите грешка како оваа: ПРЕДУПРЕДУВАЊЕ: директориумот за алатката xtensa-esp32-elf верзија esp-2021r2-patch3-8.4.0 е присутен, но алатката не е пронајдена ГРЕШКА: алатката xtensa-esp32-elf нема инсталирани верзии. Ве молиме стартувајте ја алатката „install.sh“ за да ја инсталирате.
или: zsh: погрешен тип на процесор во извршната датотека: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Потоа ќе треба да ја инсталирате Apple Rosetta 2 со извршување на /usr/sbin/softwareupdate –install-rosetta –agree-to-license
Инсталирање на Python 3 Врз основа на белешките за изданието macOS Catalina 10.15, употребата на Python 2.7 не се препорачува и Python 2.7 нема да биде вклучен по дифолт во идните верзии на macOS. Проверете кој Python го имате моментално: python –version
Ако излезот е како Python 2.7.17, вашиот стандарден интерпретер е Python 2.7. Ако е така, проверете и дали Python 3 не е веќе инсталиран на вашиот компјутер: python3 –верзија
Ако горенаведената команда врати грешка, тоа значи дека Python 3 не е инсталиран. Подолу е прикажан преглед.view од чекорите за инсталирање на Python 3.
· Инсталирањето со HomeBrew може да се направи на следниов начин: brew install python3
· Ако имате MacPorts, можете да извршите: sudo port install python38
Чекор 2. Преземете ESP-IDF За да креирате апликации за ESP32, потребни ви се софтверските библиотеки обезбедени од Espressif во ESP-IDF репозиториумот. За да го преземете ESP-IDF, одете до вашиот инсталациски директориум и клонирајте го репозиториумот со git clone, следејќи ги упатствата подолу специфични за вашиот оперативен систем. Отворете го терминалот и извршете ги следниве команди:
Еспресив системи
36 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
mkdir -p ~/esp cd ~/esp git клон -b v5.0.9 –рекурзивен https://github.com/espressif/esp-idf.git
ESP-IDF ќе се преземе во ~/esp/esp-idf. Консултирајте се со верзии на ESP-IDF за информации за тоа која верзија на ESP-IDF да се користи во дадена ситуација.
Чекор 3. Поставување на алатките Освен ESP-IDF, треба да ги инсталирате и алатките што ги користи ESP-IDF, како што се компајлерот, дебагерот, пакетите Python итн., за проекти што поддржуваат ESP32. cd ~/esp/esp-idf ./install.sh esp32
или со Fish shell cd ~/esp/esp-idf ./install.fish esp32
Горенаведените команди инсталираат алатки само за ESP32. Ако планирате да развивате проекти за повеќе чип-цели, тогаш треба да ги наведете сите и да ги извршите на пр.ample: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
или со Fish shell cd ~/esp/esp-idf ./install.fish esp32,esp32s2
За да инсталирате алатки за сите поддржани цели, извршете ја следнава команда: cd ~/esp/esp-idf ./install.sh all
или со Fish shell cd ~/esp/esp-idf ./install.fish сите
Забелешка: За корисници на macOS, ако се прикаже грешка како оваа за време на кој било чекор:urlгрешка при отворање [SSL: CERTIFICATE_VERIFY_FAILED] проверката на сертификатот не успеа: не може да се добие сертификат од локалниот издавач (_ssl.c:xxx)
Можете да ја извршите командата Install Certificates.command во папката Python на вашиот компјутер за да инсталирате сертификати. За детали, видете Грешка при преземање при инсталирање на алатките ESP-IDF.
Алтернатива File Преземања Инсталаторот на алатки презема голем број на files е прикачено на GitHub Releases. Ако пристапот до GitHub е бавен, тогаш е можно да се постави променлива на околината да го претпочита серверот за преземање Espressifns за преземање на средства од GitHub.
Забелешка: Оваа поставка контролира само поединечни алатки преземени од изданијата на GitHub, не ги менува URLs се користи за пристап до сите Git репозиториуми.
За да го претпочитате серверот за преземање Espressif при инсталирање на алатки, користете ја следнава низа команди кога ја извршувате инсталацијата.sh:
Еспресив системи
37 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
cd ~/esp/esp-idf извоз IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Прилагодување на патеката за инсталација на алатките Скриптите воведени во овој чекор инсталираат алатки за компилација потребни од ESP-IDF во рамките на домашниот директориум на корисникот: $HOME/.espressif на Linux. Ако сакате да ги инсталирате алатките во друг директориум, поставете ја променливата на околината IDF_TOOLS_PATH пред да ги стартувате скриптите за инсталација. Проверете дали вашата корисничка сметка има доволно дозволи за читање и пишување на оваа патека. Ако ја менувате IDF_TOOLS_PATH, проверете дали е поставена на истата вредност секој пат кога се извршуваат скриптата за инсталација (install.bat, install.ps1 или install.sh) и скриптата за извоз (export.bat, export.ps1 или export.sh).
Чекор 4. Поставување на променливите на околината Инсталираните алатки сè уште не се додадени на променливата на околината PATH. За да се направат алатките употребливи од командната линија, мора да се постават некои променливи на околината. ESP-IDF обезбедува друга скрипта што го прави тоа. Во терминалот каде што ќе го користите ESP-IDF, извршете:
. $HOME/esp/esp-idf/export.sh
или за риби (поддржано само од верзијата 3.0.0 за риби):
$HOME/esp/esp-idf/export.fish
Обрнете внимание на растојанието помеѓу водечката точка и патеката! Ако планирате често да го користите esp-idf, можете да креирате алијас за извршување на export.sh:
1. Копирајте ја и залепете ја следнава команда во вашиот shellns profile (.profile, .bashrc, .zprofileитн.)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Освежете ја конфигурацијата со рестартирање на терминалната сесија или со извршување на source [патека до profile],
за прample, source ~/.bashrc. Сега можете да ја стартувате get_idf за да ја поставите или освежите esp-idf околината во која било терминална сесија. Технички, можете да додадете export.sh во вашиот shellns pro.file директно; сепак, тоа не се препорачува. Со тоа се активира виртуелната средина IDF во секоја терминална сесија (вклучувајќи ги и оние каде што IDF не е потребен), со што се попречува целта на виртуелната средина и веројатно влијае на друг софтвер.
Чекор 5. Први чекори на ESP-IDF Сега, бидејќи сите барања се исполнети, следната тема ќе ве води како да го започнете вашиот прв проект. Ова упатство ќе ви помогне во првите чекори со користење на ESP-IDF. Следете го ова упатство за да започнете нов проект на ESP32 и да изградите, флеширате и следите излезот на уредот.
Забелешка: Доколку сè уште не сте го инсталирале ESP-IDF, одете на Инсталација и следете ги упатствата за да го добиете целиот софтвер потребен за користење на ова упатство.
Започнете проект Сега сте подготвени да ја подготвите вашата апликација за ESP32. Можете да започнете со проектот getstarted/hello_world од пр.amples директориум во ESP-IDF.
Важно: Системот за градење на ESP-IDF не поддржува празни места во патеките ниту до ESP-IDF ниту до проекти.
Копирајте го проектот get-started/hello_world во директориумот ~/esp:
Еспресив системи
38 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
Забелешка: Постои низа од ексampле проекти во ексamples директориум во ESP-IDF. Можете да копирате кој било проект на ист начин како што е претставен погоре и да го извршите. Исто така е можно да се изгради ексampлезиите се на место без прво да се копираат.
Поврзете го вашиот уред Сега поврзете ја вашата ESP32 плоча со компјутерот и проверете под кој сериски порт е видлива плочата. Сериските порти ги имаат следниве шеми на именување:
· Linux: почнувајќи со /dev/tty · macOS: почнувајќи со /dev/cu. Доколку не сте сигурни како да го проверите името на серискиот порт, ве молиме погледнете го делот Воспоставување сериска врска со ESP32 за повеќе детали.
Забелешка: Чувајте го името на портата при рака бидејќи ќе ви треба во следните чекори.
Конфигурирајте го вашиот проект Одете до вашиот директориум hello_world, поставете го ESP32 како цел и стартувајте ја алатката за конфигурација на проектот menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
Откако ќе отворите нов проект, прво треба да ја поставите целта со idf.py set-target esp32. Забележете дека постојните градби и конфигурации во проектот, доколку ги има, ќе бидат исчистени и иницијализирани во овој процес. Целта може да се зачува во променливата на околината за воопшто да се прескокне овој чекор. Видете Изберете го чипот за цел: set-target за дополнителни информации. Ако претходните чекори се извршени правилно, се појавува следното мени:
Сл. 17: Конфигурација на проект – Почетен прозорец Го користите ова мени за да поставите специфични променливи за проектот, на пр. име и лозинка за Wi-Fi мрежата, брзина на процесорот итн. Поставувањето на проектот со menuconfig може да се прескокне за hello_worldp, бидејќи ова еampле трча со
Еспресив системи
39 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
стандардна конфигурација.
Внимание: Ако користите ESP32-DevKitC плоча со модулот ESP32-SOLO-1 или ESP32-DevKitM-1 плоча со модулот ESP32-MIN1-1(1U), овозможете режим на едно јадро (CONFIG_FREERTOS_UNICORE) во менито за конфигурација пред да го стартувате ex.ampлес.
Забелешка: Боите на менито може да бидат различни во вашиот терминал. Можете да го промените изгледот со опцијата –style. Ве молиме извршете ја командата idf.py menuconfig –help за повеќе информации.
Ако користите една од поддржаните развојни плочи, можете да го забрзате развојот со користење на Пакетот за поддршка на плочи. Видете Дополнителни совети за повеќе информации.
Изградете го проектот Изградете го проектот со извршување на:
idf.py изгради
Оваа команда ќе ја компајлира апликацијата и сите компоненти на ESP-IDF, а потоа ќе генерира подигнувач, табела за партиции и бинарни датотеки на апликации.
$ idf.py build Извршување на cmake во директориумот /path/to/hello_world/build Извршување на „cmake -G Ninja –warn-uninitialized /path/to/hello_world“… Предупредување за неиницијализирани вредности. — Пронајден е Git: /usr/bin/git (пронајдена е верзија „2.17.0“) — Градење на празна aws_iot компонента поради конфигурација — Имиња на компоненти: … — Патеки на компоненти: …
… (повеќе линии на излез од системот за изградба)
[527/527] Генерирање на hello_world.bin esptool.py v2.3.1
Градењето на проектот е завршено. За флеширање, извршете ја оваа команда: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin или извршете ја командата 'idf.py -p PORT флеширање'
Ако нема грешки, изградбата ќе заврши со генерирање на бинарниот .bin на фирмверот files.
Флеширајте ги бинарните датотеки што штотуку ги изградивте (bootloader.bin, partition-table.bin и hello_world.bin) на вашата ESP32 плоча со извршување на:
idf.py -p PORT [-b BAUD] трепка
Заменете го PORT со името на серискиот порт на вашата ESP32 картичка. Можете исто така да ја промените брзината на пренос на флешерот со заменување на BAUD со брзината на пренос што ви е потребна. Стандардната брзина на пренос е 460800. За повеќе информации за аргументите на idf.py, видете idf.py.
Забелешка: Опцијата flash автоматски го гради и флешира проектот, па затоа не е потребно да се изврши idf.py build.
Еспресив системи
40 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Наидовте на проблеми при флеширање? Ако ја извршите дадената команда и видите грешки како што е „Неуспешно поврзување“ (Failed to connectp), може да има неколку причини за ова. Една од причините може да бидат проблемите со кои се соочува esptool.py, алатката што ја повикува системот за градење за ресетирање на чипот, интеракција со ROM-от за подигнување и флеширање на фирмверот. Едно едноставно решение што можете да го пробате е рачно ресетирање опишано подолу, а ако не помогне, можете да најдете повеќе детали за можните проблеми во „Решавање проблеми“.
esptool.py автоматски го ресетира ESP32 со поставување на DTR и RTS контролни линии на чипот за конвертор од USB во сериски формат, т.е. FTDI или CP210x (за повеќе информации, видете Воспостави сериска врска со ESP32). Контролните линии на DTR и RTS се пак поврзани со пиновите GPIO0 и CHIP_PU (EN) на ESP32, со што се менува волуменот.tagЕ нивоата на DTR и RTS ќе го стартуваат ESP32 во режим на преземање на фирмверот. Како на примерampНа пример, проверете ја шемата за развојната плоча ESP32 DevKitC.
Генерално, не би требало да имате проблеми со официјалните развојни плочи на esp-idf. Сепак, esptool.py не е во можност автоматски да го ресетира вашиот хардвер во следниве случаи:
· Вашиот хардвер нема DTR и RTS линии поврзани со GPIO0 и CHIP_PU · DTR и RTS линиите се конфигурирани различно · Воопшто нема такви сериски контролни линии
Во зависност од видот на хардверот што го имате, можеби е можно рачно да ја ставите вашата ESP32 плоча во режим на преземање на фирмверот (ресетирање).
· За развојните плочи произведени од Espressif, овие информации може да се најдат во соодветните упатства за почетници или упатства за корисници. На пр.ampле, за рачно ресетирање на развојната плоча ESP-IDF, држете го притиснато копчето Boot (GPIO0) и притиснете го копчето EN (CHIP_PU).
· За други видови хардвер, обидете се да го повлечете GPIO0 надолу.
Нормално работење Кога трепкате, ќе го видите излезниот дневник сличен на следниот:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev Сериски порт /dev/ttyUSB0 Поврзување…….._ Чипот е ESP32D0WDQ6 (ревизија 0) Карактеристики: WiFi, BT, двојно јадро, шема на кодирање Нема Кристалот е 40MHz MAC: 24:0a:c4:05:b9:14 Качување на stub… Извршување на stub… Stub работи… Промена на брзината на пренос на 460800 Променето. Конфигурирање на големината на флеш меморијата… Компресирано 3072 бајти на 103… Запишување на 0x00008000… (100 %) Запишано 3072 бајти (103 компресирано) на 0x00008000 за 0.0 секунди (ефективно 5962.8 kbit/s)… Хешот на податоците е потврден. Компресирано 26096 бајти на 15408… Запишување на 0x00001000… (100 %) Запишано 26096 бајти (15408 компресирано) на 0x00001000 за 0.4 секунди (ефективно 546.7 kbit/s)… Хешот на податоците е потврден. Компресирано 147104 бајти на 77364… Запишување на 0x00010000… (20 %) Запишување на 0x00014000… (40 %) Запишување на 0x00018000… (60 %) Запишување на 0x0001c000… (80 %)
(продолжува на следната страница)
Еспресив системи
41 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
(продолжува од претходната страница) Пишување на 0x00020000… (100 %) Запишани се 147104 бајти (77364 компресирани) на 0x00010000 за 1.9 секунди (ефективни 615,5 kbit/s)… Хеширањето на податоците е потврдено.
Заминуваме… Тешко ресетирање преку RTS пин… Готово
Ако нема проблеми до крајот на процесот на флеширање, плочата ќе се рестартира и ќе ја стартува апликацијата theohello_worldpapplication. Ако сакате да го користите Eclipse или VS Code IDE наместо да го стартувате idf.py, проверете го додатокот Eclipse, додатокот VSCode.
Следење на излезот За да проверите дали ohello_worldpis навистина работи, напишете idf.py -p PORT monitor (Не заборавајте да го замените PORT со името на вашиот сериски порт). Оваа команда ја стартува апликацијата IDF Monitor:
$ idf.py -p monitor Извршување на idf_monitor во директориумот […]/esp/hello_world/build Извршување на „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor вклучен 115200 —– Излез: Ctrl+] | Мени: Ctrl+T | Помош: Ctrl+T проследено со Ctrl+H –ets 8 јуни 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) и 8 јуни 2016 00:22:57 …
Откако логовите за стартување и дијагностика ќе се скролуваат нагоре, треба да се појави пораката oHello world! отпечатена од апликацијата.
... Здраво свету! Рестартирање за 10 секунди… Ова е esp32 чип со 2 јадра на процесорот, WiFi/BT/BLE, силиконска ревизија 1, 2MB надворешна флеш меморија Минимална големина на слободната куповина: 298968 бајти Рестартирање за 9 секунди… Рестартирање за 8 секунди… Рестартирање за 7 секунди…
За да излезете од IDF мониторот, користете ја кратенката Ctrl+]. Ако IDF мониторот не успее кратко време по прикачувањето или, наместо пораките погоре, видите случајни ѓубре слични на она што е дадено подолу, вашата плоча веројатно користи кристал од 26 MHz. Повеќето дизајни на развојни плочи користат 40 MHz, па затоа ESP-IDF ја користи оваа фреквенција како стандардна вредност.
Ако имате таков проблем, направете го следново:
1. Излезете од мониторот. 2. Вратете се во менито за конфигурација. 3. Одете во Конфигурација на компоненти > Поставки на хардвер > Главна XTAL конфигурација > Главна XTAL конфигурација
фреквенција, потоа променете ја CONFIG_XTAL_FREQ_SEL на 26 MHz. 4. После тоа, повторно изградете и флеширајте ја апликацијата.
Еспресив системи
42 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Во тековната верзија на ESP-IDF, главните XTAL фреквенции поддржани од ESP32 се следниве:
· 26 MHz · 40 MHz
Забелешка: Можете да комбинирате градење, флеширање и мониторинг во еден чекор со извршување на: idf.py -p PORT флеш монитор
Видете исто така: · IDF Monitor за практични кратенки и повеќе детали за користење на IDF monitor. · idf.py за целосна референца на командите и опциите на idf.py.
Тоа е сè што ви треба за да започнете со ESP32! Сега сте подготвени да пробате некои други.amples, или продолжете директно со развивање на ваши сопствени апликации.
Важно: Некои од поранешнитеampЛентите не поддржуваат ESP32 бидејќи потребниот хардвер не е вклучен во ESP32, па затоа не може да се поддржи. Ако градите ексampле, ве молам проверете го README file за табелата Поддржани цели. Ако ова е присутно, вклучувајќи ја и целта ESP32, или табелата воопшто не постои, на пр.ampЌе работи на ESP32.
Дополнителни совети
Проблеми со дозволи /dev/ttyUSB0 Кај некои Linux дистрибуции, може да ја добиете пораката за грешка „Неуспешно отворање на портата /dev/ttyUSB0“ при флеширање на ESP32. Ова може да се реши со додавање на тековниот корисник во групата за дијалаут.
Компатибилност со Python ESP-IDF поддржува Python 3.7 или понов. Препорачливо е да го надградите вашиот оперативен систем на понова верзија што го задоволува овој услов. Други опции вклучуваат инсталација на Python од извори или користење на систем за управување со верзии на Python, како што е pyenv.
Започнете со пакет за поддршка на плочи За да го забрзате прототипирањето на некои развојни плочи, можете да користите пакети за поддршка на плочи (BSP), што ја прави иницијализацијата на одредена плоча лесна како неколку повици на функции. BSP обично ги поддржува сите хардверски компоненти обезбедени на развојната плоча. Освен функциите за дефинирање на пиновите и иницијализација, BSP се испорачува со драјвери за надворешните компоненти како што се сензори, дисплеи, аудио кодеци итн. BSP се дистрибуираат преку IDF Component Manager, така што можат да се најдат во IDF Component Registry. Еве еден пример.ampлекција за тоа како да додадете ESP-WROVER-KIT BSP во вашиот проект: idf.py add-dependency esp_wrover_kit
Повеќе ексampПомалку информации за употребата на BSP може да се најдат во BSP ex.ampпапката les.
Совет: Ажурирање на ESP-IDF Се препорачува повремено да се ажурира ESP-IDF, бидејќи поновите верзии поправаат грешки и/или обезбедуваат нови функции. Забележете дека секоја главна и помала верзија на ESP-IDF има поврзан период на поддршка, а кога една гранка на изданието се приближува кон крајот на животниот век (EOL), сите корисници се охрабруваат да ги надградат своите проекти на поновите изданија на ESP-IDF. За да дознаете повеќе за периодите на поддршка, видете Верзии на ESP-IDF.
Еспресив системи
43 Испрати повратни информации за документот
Објавување v5.0.9
Глава 1. Започнете
Наједноставниот начин да се направи ажурирањето е да се избрише постоечката папка esp-idf и повторно да се клонира, како да се извршува почетната инсталација опишана во Чекор 2. Земете ESP-IDF. Друго решение е да се ажурира само она што е променето. Постапката за ажурирање зависи од верзијата на ESP-IDF што ја користите. По ажурирањето на ESP-IDF, повторно извршете ја скриптата Install, во случај новата верзија на ESP-IDF да бара различни верзии на алатки. Видете ги упатствата во Чекор 3. Поставете ги алатките. Откако ќе се инсталираат новите алатки, ажурирајте ја околината користејќи ја скриптата Export. Видете ги упатствата во Чекор 4. Поставете ги променливите на околината.
Поврзани документи · Воспоставување на сериска врска со ESP32 · Додаток Eclipse · Продолжување VSCode · IDF монитор
1.4 Изградете го вашиот прв проект
Ако веќе го имате инсталирано ESP-IDF и не користите IDE, можете да го изградите вашиот прв проект од командната линија следејќи ги командите „Започни проект на Windows“ или „Започни проект на Linux и macOS“.
1.5 Деинсталирање на ESP-IDF
Ако сакате да го отстраните ESP-IDF, следете ја постапката „Деинсталирај ESP-IDF“.
Еспресив системи
44 Испрати повратни информации за документот
Објавување v5.0.9
Поглавје 2
Референца на API
2.1 API конвенции
Овој документ ги опишува конвенциите и претпоставките што се заеднички за интерфејсите за апликациски програми (API) на ESP-IDF. ESP-IDF обезбедува неколку видови програмски интерфејси:
· C функции, структури, enum-ови, дефиниции на типови и макроа на претпроцесор декларирани во јавно заглавие files на ESPIDF компоненти. Различни страници во делот за API референца од програмскиот водич содржат описи на овие функции, структури и типови.
· Изградете системски функции, предефинирани променливи и опции. Овие се документирани во упатството за изградување на систем. · Опциите на Kconfig можат да се користат во кодот и во изградувањето на системот (CMakeLists.txt) fileс. · Алатките на домаќинот и нивните параметри на командната линија се исто така дел од интерфејсот ESP-IDF. ESP-IDF се состои од компоненти напишани специјално за ESP-IDF, како и за библиотеки од трети страни. Во некои случаи, во библиотеката на третата страна се додава обвивка специфична за ESP-IDF, обезбедувајќи интерфејс кој е или поедноставен или подобро интегриран со останатите ESP-IDF објекти. Во други случаи, оригиналниот API на библиотеката на третата страна им се презентира на развивачите на апликации. Следните делови објаснуваат некои од аспектите на ESP-IDF API-јата и нивната употреба.
2.1.1 Ракување со грешки
Повеќето ESP-IDF API-ја враќаат кодови за грешки дефинирани со типот esp_err_t. Видете го делот за справување со грешки за повеќе информации за пристапите за справување со грешки. Референцата за код за грешка содржи список на кодови за грешки вратени од компонентите на ESP-IDF.
2.1.2 Конфигурациски структури
Важно: Правилната иницијализација на конфигурациските структури е важен дел за компатибилност на апликацијата со идните верзии на ESP-IDF.
Повеќето функции за иницијализација или конфигурација во ESP-IDF земаат како аргумент покажувач кон конфигурациска структура. На пример,ampле:
45
Поглавје 2. Референца за API
const esp_timer_create_args_t my_timer_args = {.callback = &my_timer_callback, .arg = callback_arg, .name = "my_timer"
}; esp_timer_handle_t my_timer; esp_err_t err = esp_timer_create(&my_timer_args, &my_timer);
Функциите за иницијализација никогаш не го зачувуваат покажувачот кон конфигурациската структура, па затоа е безбедно да се алоцира структурата на стекот.
Апликацијата мора да ги иницијализира сите полиња од структурата. Следново е неточно:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Неточно! Полињата .arg и .name не се иницијализирани */ esp_timer_create(&my_timer_args, &my_timer);
Повеќето ESP-IDF exampЛековите користат иницијализатори назначени од C99 за иницијализација на структурата, бидејќи тие обезбедуваат концизен начин за поставување подмножество од полиња и нулта иницијализирање на преостанатите полиња:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Точно, полињата .arg и .name се иницијализирани со нула */
};
C++ јазикот не ја поддржува синтаксата на назначените иницијализатори сè до C++20, но GCC компајлерот делумно ја поддржува како додаток. Кога користите ESP-IDF API-ја во C++ код, може да размислите за користење на следниов образец:
esp_timer_create_args_t my_timer_args = {}; /* Сите полиња се иницијализирани со нула */ my_timer_args.callback = &my_timer_callback;
Стандардни иницијализатори
За некои конфигурациски структури, ESP-IDF обезбедува макроа за поставување на стандардни вредности на полињата:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG се проширува до назначен иницијализатор.
Сега сите полиња се поставени на стандардните вредности. Секое поле сè уште може да се измени: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Препорачливо е да се користат стандардни макроа за иницијализација секогаш кога се обезбедени за одредена конфигурациска структура.
2.1.3 Приватни API-ја
Одреден заглавие files во ESP-IDF содржат API-ја наменети да се користат само во изворниот код на ESP-IDF, а не од апликациите. Таквиот заглавие files често содржат private или esp_private во нивното име или патека. Одредени компоненти, како што е hal, содржат само приватни API-ја. Приватните API-ја може да се отстранат или променат на некомпатибилен начин помеѓу помали или закрпи изданија.
2.1.4 Компоненти во exampле проекти
ESP-IDF exampлеата содржат различни проекти што демонстрираат употреба на ESP-IDF API-ја. Со цел да се намали дуплирањето на кодот во ексampНа пример, неколку вообичаени помагачи се дефинирани во компонентите што ги користат повеќе ексampлес.
Еспресив системи
46 Испрати повратни информации за документот
Објавување v5.0.9
Поглавје 2. Референца за API
Ова ги вклучува компонентите лоцирани
Документи / ресурси
![]() |
Espressif Systems ESP32 Dev Kitc развојна плочка [pdf] Упатство за корисникот ESP32 Dev Kitc Одбор за развој, ESP32, Dev Kitc Одбор за развој, Kitc Одбор за развој, Одбор за развој, Одбор |
