Razvojna plošča ESP32 Dev Kitc
Informacije o izdelku
Specifikacije
- Izdelek: ESP32
- Vodnik za programiranje: ESP-IDF
- Različica izdaje: v5.0.9
- Proizvajalec: Espressif Systems
- Datum izdaje: 16. maj 2025
Navodila za uporabo izdelka
1. Začnite
Preden začnete z ESP32, se seznanite z
naslednje:
1.1 Uvod
Spoznajte osnovne funkcije in zmogljivosti
ESP32.
1.2 Kaj potrebujete
Prepričajte se, da imate potrebno strojno in programsko opremo:
- Strojna oprema: Preverite seznam potrebne strojne opreme
komponente. - Programska oprema: Namestite potrebno programsko opremo
komponente.
1.3 Namestitev
Za namestitev IDE in nastavitev sledite tem korakom
okolje:
- IDE: Namestite priporočeno IDE za
programiranje ESP32. - Ročna namestitev: Ročno nastavite
okolje, če je potrebno.
1.4 Zgradite svoj prvi projekt
Ustvarite in zgradite svoj začetni projekt z uporabo ESP32.
1.5 Odstranite ESP-IDF
Po potrebi se naučite, kako odstraniti ESP-IDF iz vašega
sistem.
2. Referenca API-ja
Za podrobne informacije glejte dokumentacijo API-ja
protokoli aplikacij, obravnavanje napak in konfiguracija
strukture.
Pogosto zastavljena vprašanja (FAQ)
V: Kako lahko odpravim pogoste težave z ESP32?
A: Glejte razdelek o odpravljanju težav v priročniku za programiranje
ali obiščite proizvajalca webmesto za podporne vire.
V: Ali lahko uporabljam ESP-IDF z drugimi mikrokrmilniki?
A: ESP-IDF je zasnovan posebej za ESP32, vendar boste morda ugotovili,
združljivost z drugimi mikrokrmilniki Espressif.
ESP32
Vodnik za programiranje ESP-IDF
Izdaja v5.0.9 Espressif Systems 16. maj 2025
Kazalo
Kazalo
i
1 Začnite
3
1.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Kaj potrebujete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Strojna oprema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Programska oprema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Namestitev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1 IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2 Ročna namestitev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Zgradite svoj prvi projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.5 Odstranitev ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2 Referenca API-ja
45
2.1 Konvencije API-ja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.1 Obravnavanje napak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.2 Konfiguracijske strukture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.3 Zasebni API-ji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.4 Komponente v exampprojekti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.5 Stabilnost API-ja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2 Protokoli uporabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.1 Vrata ASIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.2.5 Odjemalec ESP HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.2.6 Lokalno upravljanje ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.2.7 Serijska podrejena povezava ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.2.8 Paket potrdil ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.2.9 Strežnik HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.2.10 Strežnik HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.2.11 Odmev ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
2.2.12 Storitev mDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.13 Vgrajeni TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.14 Omrežna plast IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3 Bluetooth API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.1 Splošna povezava Bluetooth® . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.2 Bluetooth® z nizko porabo energije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.3.3 Bluetooth® Classic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
2.3.4 Krmilnik in HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
2.3.6 Gostiteljski API-ji, ki temeljijo na NimBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
2.4 Referenca kod napak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
2.5 Omrežni API-ji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.2 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
2.5.3 Navoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
i
2.5.4 ESP-NETIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 IP-omrežna plast. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Aplikacijska plast. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 API za periferne naprave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Gonilnik analogno-digitalnega pretvornika (ADC) v načinu Oneshot. . . . . . . . . . . . . . . . . 977 2.6.2 Gonilnik analogno-digitalnega pretvornika (ADC) v neprekinjenem načinu. . . . . . . . . . . . . . . 986 2.6.3 Gonilnik za kalibracijo analogno-digitalnega pretvornika (ADC). . . . . . . . . . . . . . . . . . . 993 2.6.4 Drevo ure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Digitalno-analogni pretvornik (DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO in RTC GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Časovnik za splošno uporabo (GPTimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Medsebojno integrirano vezje (I2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Zvok med integriranimi vezji (I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD-zaslon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Krmiljenje LED-diod (LEDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Modulator širine impulzov za krmiljenje motorja (MCPWM) . . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Števec impulzov (PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Daljinsko upravljani oddajnik-sprejemnik (RMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 Zahteve za dvige SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 Gonilnik gostitelja SDMMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 Gonilnik gostitelja SD SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 Gonilnik podrejene enote kartice SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Sigma-Delta modulacija (SDM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 Glavni gonilnik SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 Podrejeni gonilnik SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (Varnostni element) . . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Senzor dotika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Dvožični avtomobilski vmesnik (TWAI) . . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Univerzalni asinhroni sprejemnik/oddajnik (UART) . . . . . . . . . . . . . . . . . . 1317 2.7 Konfiguracija projekta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Uvod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Meni za konfiguracijo projekta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Uporaba sdkconfig.defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Pravila oblikovanja Kconfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Združljivost možnosti Kconfig s prejšnjimi različicami. . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Referenca možnosti konfiguracije. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 API za oskrbovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Protokolna komunikacija. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Poenoteno zagotavljanje storitev. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Zagotavljanje brezžičnega omrežja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 API za shranjevanje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileSistemska podpora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 Proizvodna uporabnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 Knjižnica za nehlapno shranjevanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 Pripomoček za generiranje particij NVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 Gonilnik SD/SDIO/MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 SPI Flash API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 SPIFFI Filesistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Virtualni filesistemska komponenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 API za izravnavo obrabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 Sistemski API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 Oblika slike aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 Sledenje na ravni aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 Klic funkcije z zunanjim skladom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 Revizija čipa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 Konzola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 Upravitelj eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Kode napak in pomožne funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii
2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 Knjižnica zank dogodkov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (nadview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 FreeRTOS (ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 FreeRTOS (dodatne funkcije) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 Dodelitev pomnilnika v kopici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 Odpravljanje napak v pomnilniku v kopici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 Časovnik visoke ločljivosti (časovnik ESP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 Notranji in nestabilni API-ji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 Medprocesorski klic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 Dodelitev prekinitev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Knjižnica za beleženje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 Razni sistemski API-ji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 Posodobitve po zraku (OTA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 Nadzor delovanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 Upravljanje porabe energije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 Podpora za niti POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 Generiranje naključnih števil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 Načini mirovanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 Zmogljivosti SoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 Sistemski čas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 API za dodeljevanje himem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 Programiranje koprocesorja ULP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 Nadzorni psi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161
3 Referenca za strojno opremo
2167
3.1 Primerjava serij čipov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167
3.1.1 Povezani dokumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170
4 vodniki API-jev
2171
4.1 Knjižnica za sledenje na ravni aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.1 Konecview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.2 Načini delovanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.3 Možnosti konfiguracije in odvisnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172
4.1.4 Kako uporabljati to knjižnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173
4.2 Potek zagona aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181
4.2.1 Prvi stagzagonski nalagalnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.2 sekunde stagzagonski nalagalnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.3 Zagon aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183
4.3 Bluetooth® Classic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.3.1 Konecview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.4 Bluetooth® z nizko porabo energije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.1 Konecview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.2 Začetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191
4.4.3 Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240
4.5 Zagonski nalagalnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284
4.5.1 Združljivost zagonskega nalagalnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.2 Raven dnevnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.3 Ponastavitev na tovarniške nastavitve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.4 Zagon iz testne vdelane programske opreme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.5 Povračilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.6 Nadzorni pes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.7 Velikost zagonskega nalagalnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.8 Hiter zagon iz globokega spanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.9 Zagonski nalagalnik po meri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.6 Zgradite sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.1 Konecview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.2 Uporaba sistema za gradnjo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289
iii
4.6.3 PrampProjekt le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 Projekt CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Komponenta CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 Konfiguracija komponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 Definicije predprocesorja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 Zahteve komponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Prevladujoči deli projekta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 Komponente, namenjene samo konfiguraciji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 Odpravljanje napak CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 Zg.ampKomponenta le CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 Privzete nastavitve sdkconfig po meri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 Argumenti Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 Zgradba zagonskega nalagalnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 Pisanje čistih komponent CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 Uporaba projektov CMake drugih ponudnikov s komponentami . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.18 Uporaba vnaprej izdelanih knjižnic s komponentami . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 Uporaba ESP-IDF v projektih CMake po meri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 API sistema za gradnjo CMake ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File Globiranje in inkrementalne gradnje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 Gradnja metapodatkov sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 Gradnja notranjih delov sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.24 Selitev iz sistema ESP-IDF GNU Make . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Izpis jedra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 Konecview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 Konfiguracije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 Shranjevanje izpisa jedra v bliskovni pomnilnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.4 Izpis izpisa jedra na UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 Funkcije ROM v povratnih sledovih . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 Izpis spremenljivk na zahtevo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 Zagon espscoredump.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 Prebujanje iz globokega spanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 Pravila za prebujanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Implementacija škrbine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 Nalaganje kode v pomnilnik RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 Nalaganje podatkov v pomnilnik RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 Preverjanje CRC za prebujene kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Zg.ample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 Obravnavanje napak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 Prekoview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.2 Kode napak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 Pretvorba kod napak v sporočila o napakah . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.4 Makro ESP_ERROR_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 Makro ESP_ERROR_CHECK_WITHOUT_ABORT . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 Makro ESP_RETURN_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 Makro ESP_GOTO_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 Makro ESP_RETURN_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 Makro ESP_GOTO_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 PREVERITE MAKRE Primeramples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 Vzorci obravnave napak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 Izjeme C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 Več kotview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 Koncepti ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 4.10.4 Gradnja omrežja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 Upravljanje omrežja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 Prenos podatkov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Preklapljanje kanalov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv
4.10.8 Zmogljivost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 Nadaljnje opombe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 Obravnava dogodkov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Dogodki Wi-Fi, Ethernet in IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 Dogodki zamreženja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 Dogodki Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 Usodne napake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 Več kotview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Obvladovalec panike. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Izpis registra in povratno sled. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 GDB-jev zaključek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 Časovna omejitev nadzornega sistema RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Napake guruja pri meditaciji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Druge usodne napake. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Šifriranje bliskovnega pomnilnika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Uvod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Ustrezne e-varovalke. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Postopek šifriranja bliskovnega pomnilnika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Konfiguracija šifriranja bliskovnega pomnilnika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Možne napake. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 Stanje šifriranja bliskovnega pomnilnika ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Branje in pisanje podatkov v šifriranem bliskovnem pomnilniku. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Posodabljanje šifriranega bliskovnega pomnilnika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Onemogočanje šifriranja bliskovnega pomnilnika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Ključne točke o šifriranju bliskovnega pomnilnika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Omejitve šifriranja bliskovnega pomnilnika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Šifriranje bliskovnega pomnilnika in varen zagon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Napredne funkcije. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Tehnične podrobnosti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Abstrakcija strojne opreme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Arhitektura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 Nizkonapetostna plast (LL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (plast abstrakcije strojne opreme) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Prekinitve na visoki ravni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Nivoji prekinitev. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Opombe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Odpravljanje napak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 Kako deluje? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 Izbira JTAG Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 Nastavitev OpenOCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 Konfiguriranje cilja ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 Zagon razhroščevalnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Odpravljanje napakamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 Gradnja OpenOCD iz izvorne kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 Nasveti in posebnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 Povezani dokumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 Ustvarjanje skriptov povezovalnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 Konecview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 Hitri začetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.3 Notranjost ustvarjanja skriptov povezovalnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 Podprti API-ji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 API za vtičnice BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 Netconn API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 lwIP Naloga FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 Podpora za IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 Spremembe po meri esp-lwip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v
4.18.7 Optimizacija delovanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 Vrste pomnilnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (podatkovni RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (pomnilnik z ukazi) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (koda, ki se izvaja iz bliskovnega pomnilnika) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (podatki shranjeni v bliskovnem pomnilniku) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 Počasen pomnilnik RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 HITR pomnilnik RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 Zahteva za zmožnost DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 Medpomnilnik DMA v skladu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 Načini sklada OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 Kako napisati aplikacijo OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 Mejni usmerjevalnik OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Tabele particij . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 Prekoview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 Vgrajene tabele particij . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 Ustvarjanje tabel po meri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.4 Ustvarjanje binarne tabele particij . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 Preverjanje velikosti particij . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 Utripanje tabele particij . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 Orodje za particije (partition.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 Zmogljivost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 Kako optimizirati zmogljivost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 Vodila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451 4.23 Kalibracija RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.1 Delna kalibracija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 Polna kalibracija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 Brez kalibracije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 Podatki za inicializacijo PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 Referenca API-ja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 Varni zagon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 Ozadje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 Varen zagonski postopekview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 Tipke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 Velikost zagonskega nalagalnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 Velikost zagonskega nalagalnika . . . . . . . . . 2474 4.24.5 Kako omogočiti varen zagon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 Nalagalnik programske opreme, ki ga je mogoče ponovno namestiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 Ustvarjanje podpisnega ključa varnega zagona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 Oddaljeno podpisovanje slik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 Najboljše prakse varnega zagona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 Tehnične podrobnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 Varen zagon in šifriranje bliskovne pomnilnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Preverjanje podpisanih aplikacij brez varnega zagona s strojno opremo . . . . . . . . . . . . . . . . . . . 2478 4.24.13 Napredne funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 Varni zagon V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 Ozadje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 Naprednotages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 Postopek varnega zagona V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 Format podpisnega bloka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.5 Varno oblazinjenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 Preverjanje podpisnega bloka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 Preverjanje slike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Velikost zagonskega nalagalnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 Uporaba eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 Kako omogočiti varen zagon V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 Omejitve po omogočenju varnega zagona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 Ustvarjanje podpisnega ključa varnega zagona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi
4.25.13 Oddaljeno podpisovanje slik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 Najboljše prakse varnega zagona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 Tehnične podrobnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 Varen zagon in šifriranje bliskovne pomnilnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Preverjanje podpisanih aplikacij brez varnega zagona s strojno opremo . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Preverjanje podpisanih aplikacij brez varnega zagona s strojno opremo . . . . . . . . . . . . . . . . . . . 2484 4.25.18 Napredne funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 Podpora za zunanji RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 Strojna oprema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Konfiguriranje zunanjega RAM-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 Omejitve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 Inicializacija ni uspela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 Revizije čipa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27 Lokalno shranjevanje niti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.1 Več kotview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 Izvorni API FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 API Pthread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 Standard C11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28 Orodja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.1 Sprednji del IDF – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 Slika Dockerja za IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 Namestitveni program IDF za Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 Upravitelj komponent IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 Urejanje zvoka IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 Orodja za prenos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 Testiranje enot v ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 Običajni testni primeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 Testni primeri z več napravami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 Več napravtage Testni primeri. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Testi za različne tarče. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Aplikacija za testiranje enot stavbe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Izvajanje enotnih testov. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Časovna koda s časovnikom, kompenziranim s predpomnilnikom. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Posmehuje se. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Testiranje enot v Linuxu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Testiranje vgrajene programske opreme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Testi enot IDF na gostitelju Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Gonilnik za Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 Seznam funkcij Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Kako napisati aplikacijo za Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 Koda napake ESP32 Wi-Fi API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Inicializacija parametrov ESP32 Wi-Fi API. . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 Model programiranja ESP32 za Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 Opis dogodka ESP32 Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Splošni scenarij postaje Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 Splošni scenarij dostopne točke Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 Skeniranje omrežij Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 Scenarij povezovanja postaje Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 Postaja ESP32 Wi-Fi se povezuje, ko je najdenih več dostopnih točk. . . . . . . . . . . . . 2543 4.31.12 Ponovna vzpostavitev povezave z omrežjem Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Časovna omejitev signala Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 Konfiguracija omrežja ESP32 Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy Connect™ (DPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Upravljanje brezžičnega omrežja. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Merjenje radijskih virov. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Hiter prehod BSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 ESP32 Wi-Fi Način varčevanja z energijo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 Prepustnost omrežja ESP32 Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
4.31.21 Pošiljanje paketov Wi-Fi 80211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Način vohunjenja Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 Več anten Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 Informacije o stanju kanala Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Informacije o stanju kanala Wi-Fi Konfiguracija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Fragment Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 Vpisnik WPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 Uporaba medpomnilnika Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Kako izboljšati delovanje omrežja Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Konfiguracija menija Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 Odpravljanje težav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 Varnost omrežja Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 Varnostne funkcije omrežja Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.2 Zaščiteni okvirji za upravljanje (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-Personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 RF soobstoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 Prekoview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Podprti scenarij sobivanja za ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 Mehanizem in politika sobivanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 Kako uporabljati funkcijo sobivanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 Reproducibilne gradnje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 Razlogi za nereproducibilne gradnje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Omogočanje reproducibilnih gradenj v ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 Kako dosežemo reproducibilne gradnje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 Ponovljive gradnje in odpravljanje napak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 Dejavniki, ki še vedno vplivajo na ponovljive gradnje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 Uporabniški priročnik za način nizke porabe energije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578
5 vodnikov za migracijo
2579
5.1 Vodnik za selitev ESP-IDF 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
5.1.1 Selitev iz različice 4.4 v 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
6 Knjižnice in ogrodja
2611
6.1 Okviri v oblaku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Aliyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.6 Joylink IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.7 Tencent IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.8 Tencentyun internet stvari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.9 Baidu internet stvari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2 Okviri izrazov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.1 Ogrodje za razvoj zvoka Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.3 Knjižnica Espressif DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.4 Razvojni okvir ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.5 ESP-WHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.6 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.7 Rešitev ESP-IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.8 Protokoli ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
viii
6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614
7 Vodnik po prispevkih
2615
7.1 Kako prispevati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.2 Preden prispevate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.3 Postopek zahteve za vlečenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.4 Pravni del . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5 Povezani dokumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.1 Vodnik po slogu za razvojni okvir Espressif IoT . . . . . . . . . . . . . . . . . . . . 2616
7.5.2 Namestitev funkcije Hook pred potrjevanjem za projekt ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . 2623
7.5.3 Dokumentiranje kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624
7.5.4 Ustvarjanje Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629
7.5.5 Predloga dokumentacije API-ja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630
7.5.6 Pogodba s sodelavci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632
7.5.7 Vodnik po glavi avtorskih pravic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634
7.5.8 Testi ESP-IDF z vodnikom Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635
8 Različice ESP-IDF
2645
8.1 Izdaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.2 S katero različico naj začnem? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.3 Shema različic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.4 Podporna obdobja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646
8.5 Preverjanje trenutne različice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647
8.6 Delovni potek Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7 Posodabljanje ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7.1 Posodobitev na stabilno izdajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.2 Posodobitev na predizdajno različico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.3 Posodobitev na glavno vejo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.4 Posodobitev na vejo izdaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650
9 Viri
2651
9.1 PlatformaIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.1 Kaj je PlatformIO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.2 Namestitev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.3 Konfiguracija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.4 Vadnice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.5 Projekt Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.6 Naslednji koraki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.2 Koristne povezave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
10 Avtorske pravice in licence
2653
10.1 Avtorske pravice za programsko opremo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.1 Komponente vdelane programske opreme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.2 Dokumentacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.2 Avtorske pravice izvorne kode ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.3 Licenca Xtensa libhal MIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.4 Licenca TinyBasic Plus MIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.5 Licenca TJpgDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
11 O tem
2657
12 Preklapljanje med jeziki
2659
Kazalo
2661
Kazalo
2661
ix
x
Kazalo
To je dokumentacija za razvojni okvir Espressif IoT (esp-idf). ESP-IDF je uradni razvojni okvir za sisteme na čipu serije ESP32, ESP32-S in ESP32-C. Ta dokument opisuje uporabo ESP-IDF s sistemom na čipu ESP32.
Začnite
API Reference
Vodniki API-jev
Espressif sistemi
1 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Kazalo
Espressif sistemi
2 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
1. poglavje
Začnite
Ta dokument je namenjen temu, da vam pomaga pri nastavitvi okolja za razvoj programske opreme za strojno opremo, ki temelji na čipu ESP32 podjetja Espressif. Po tem preprost exampPokazal vam bo, kako uporabljati ESP-IDF (Espressif IoT Development Framework) za konfiguracijo menijev, nato pa za gradnjo in programiranje vdelane programske opreme na ploščo ESP32.
Opomba: To je dokumentacija za stabilno različico v5.0.9 programa ESP-IDF. Na voljo so tudi druge različice programa ESP-IDF.
1.1 Uvod
ESP32 je sistem na čipu, ki združuje naslednje funkcije: · Wi-Fi (pas 2.4 GHz) · Bluetooth · Dvojna visokozmogljiva 32-bitna jedra procesorja Xtensa® LX6 · Soprocesor z izjemno nizko porabo energije · Več perifernih naprav
ESP32, ki ga poganja 40 nm tehnologija, zagotavlja robustno, visoko integrirano platformo, ki pomaga izpolnjevati nenehne zahteve po učinkoviti rabi energije, kompaktni zasnovi, varnosti, visoki zmogljivosti in zanesljivosti. Espressif ponuja osnovne strojne in programske vire, ki pomagajo razvijalcem aplikacij uresničiti njihove ideje z uporabo strojne opreme serije ESP32. Okvir za razvoj programske opreme podjetja Espressif je namenjen razvoju aplikacij interneta stvari (IoT) z Wi-Fi, Bluetooth, upravljanjem porabe energije in številnimi drugimi sistemskimi funkcijami.
1.2 Kaj potrebujete
1.2.1 Strojna oprema
· Plošča ESP32. · Kabel USB – USB A / mikro USB B. · Računalnik z operacijskim sistemom Windows, Linux ali macOS.
Opomba: Trenutno nekatere razvojne plošče uporabljajo priključke USB tipa C. Prepričajte se, da imate pravilen kabel za priključitev plošče!
Če imate eno od spodaj navedenih uradnih razvojnih plošč ESP32, lahko kliknete povezavo, če želite izvedeti več o strojni opremi.
3
Poglavje 1. Začetek
ESP32-DevKitS(-R)
Ta uporabniški priročnik vsebuje informacije o ESP32-DevKitS(-R), bliskovni plošči, ki temelji na ESP32 in jo proizvaja Espressif. ESP32-DevKitS(-R) je kombinacija dveh imen plošč: ESP32-DevKitS in ESP32-DevKitS-R. S pomeni vzmeti, R pa WROVER.
ESP32-DevKitS
ESP32-DevKitS-R
Dokument je sestavljen iz naslednjih glavnih razdelkov: · Uvod: Zagotavlja pregledview navodila za namestitev ESP32-DevKitS(-R) in strojne/programske opreme za začetek. · Referenca strojne opreme: Zagotavlja podrobnejše informacije o strojni opremi ESP32-DevKitS(-R)ns. · Sorodni dokumenti: Vsebuje povezave do sorodne dokumentacije.
Uvod V tem razdelku je opisano, kako začeti z uporabo ESP32-DevKitS(-R). Začne se z nekaj uvodnimi razdelki o ESP32-DevKitS(-R), nato pa razdelek Kako namestiti programsko opremo na ploščo vsebuje navodila za namestitev modula na ESP32-DevKitS(-R), njegovo pripravo in nalaganje programske opreme nanj.
konecview ESP32-DevKitS(-R) je Espressifnsova programska plošča, zasnovana posebej za ESP32. Uporablja se lahko za programiranje modula ESP32 brez spajkanja modula na napajalnik in signalne linije. Z nameščenim modulom se lahko ESP32-DevKitS(-R) uporablja tudi kot mini razvojna plošča, podobno kot ESP32-DevKitC.
Plošče ESP32-DevKitS in ESP32-DevKitS-R se razlikujejo le po razporeditvi vzmetnih zatičev, da ustrezajo naslednjim modulom ESP32.
· ESP32-DevKompleti: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (PCB in IPEX) ESP32-WROVER-B (PCB in IPEX) ESP32-WROVER-E ESP32-WROVER-IE
Za informacije o zgornjih modulih glejte Moduli serije ESP32.
Opis komponent
Espressif sistemi
4 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Slika 1: ESP32-DevKitS – sprednja stran
Espressif sistemi
Slika 2: ESP32-DevKitS-R – sprednja stran 5
Pošljite povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Vzmetni zatiči ključnih komponent 2.54 mm ženski konektorji
Most USB-UART LDO Priključek mikro-USB/vrata mikro-USB Gumb EN Gumb za zagon
LED za vklop
Opis Modul namestite s klikom. Nožice se bodo prilegale v zobate luknje modula. Te ženske priključke so priključene na nožice modula, nameščenega na tej plošči. Za opis ženskih priključkov glejte Bloki priključkov. Enodelni most USB-UART omogoča hitrosti prenosa do 3 Mbps.
Nizek izpad napetosti od 5 V do 3.3 Vtagregulator (LDO).
Vmesnik USB. Napajalnik za ploščo in komunikacijski vmesnik med računalnikom in ploščo.
Gumb za ponastavitev.
Gumb za prenos. Če držite pritisnjeno tipko Boot in nato pritisnete tipko EN, se zažene način prenosa vdelane programske opreme prek serijskih vrat.
Vklopi se, ko je na ploščo priključen USB ali napajalnik.
Kako bliskovno programirati ploščo Preden vklopite ESP32-DevKitS(-R), se prepričajte, da je v dobrem stanju in brez očitnih znakov poškodb.
Potrebna strojna oprema · Modul ESP32 po vaši izbiri · Kabel USB 2.0 (Standard-A do Micro-B) · Računalnik z operacijskim sistemom Windows, Linux ali macOS
Nastavitev strojne opreme Prosimo, namestite modul po vaši izbiri na vaš ESP32-DevKitS(-R) v skladu z naslednjimi koraki:
· Modul previdno namestite na ploščo ESP32-DevKitS(-R). Prepričajte se, da so zobate luknje na modulu poravnane z vzmetnimi zatiči na plošči.
· Modul potisnite v ploščo, dokler ne zaskoči. · Preverite, ali so vsi vzmetni zatiči vstavljeni v zobate luknje. Če so nekateri vzmetni zatiči napačno poravnani,
s pinceto jih vstavite v zaobljene luknje.
Namestitev programske opreme
Prednostna metoda Razvojni okvir ESP-IDF ponuja prednostni način programiranja binarnih datotek na ESP32-DevKitS(-R). Nadaljujte z Začetek, kjer vam bo razdelek Namestitev hitro pomagal nastaviti razvojno okolje in nato programirati aplikacijo npr.ampna vaš ESP32-DevKitS(-R).
Alternativna metoda Uporabniki sistema Windows lahko binarne datoteke flashajo z orodjem Flash Download Tool. Preprosto ga prenesite, razpakirajte in sledite navodilom v mapi doc.
Opomba: 1. Za programiranje binarne datoteke fileESP32 mora biti nastavljen na način prenosa vdelane programske opreme. To lahko storite bodisi samodejno z orodjem za bliskanje bodisi tako, da pridržite gumb Boot in tapnete gumb EN. 2. Po bliskanju binarne datoteke fileOrodje za prenos bliskovnega pogona (Flash Download Tool) znova zažene modul ESP32 in privzeto zažene programsko opremo, ki ste jo naložili.
Dimenzije plošče Vsebina in embalaža
Espressif sistemi
6 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek Slika 3: Dimenzije plošče ESP32-DevKitS – zadnja stran
Espressif sistemi
Slika 4: Dimenzije plošče ESP32-DevKitS-R – zadnja stran 7
Pošljite povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Naročila v maloprodaji Če naročite nekaj kosovampVsak ESP32-DevKitS(-R) je dobavljen v individualni embalaži v antistatični vrečki ali poljubni embalaži, odvisno od prodajalca. Za naročila v maloprodaji obiščite https://www.espressif.com/en/contact-us/get-samples.
Veleprodajna naročila Če naročite v razsutem stanju, so plošče dobavljene v velikih kartonskih škatlah. Za veleprodajna naročila obiščite https://www.espressif.com/en/contact-us/sales-questions.
Referenca za strojno opremo
Blokovni diagram Spodnji blokovni diagram prikazuje komponente ESP32-DevKitS(-R) in njihove medsebojne povezave.
Slika 5: ESP32-DevKitS(-R) (kliknite za povečavo)
Možnosti napajanja Obstajajo trije medsebojno izključujoči se načini napajanja plošče: · Vrata Micro USB, privzeto napajanje · Priključki 5V in GND · Priključki 3V3 in GND
Priporočljivo je uporabiti prvo možnost: vrata micro USB.
Espressif sistemi
.
Oznaka signala
L1 3V3 VDD 3V3
L2 EN CHIP_PU
L3 VP SENZOR_VP
L4 VN SENZOR_VN
L5 34
GPIO34
L6 35
GPIO35
L7 32
GPIO32
L8 33
GPIO33
nadaljuje se na naslednji strani
8 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Tabela 1 se nadaljuje s prejšnje strani
.
Oznaka signala
L9 25
GPIO25
L10 26
GPIO26
L11 27
GPIO27
L12 14
GPIO14
L13 12
GPIO12
L14 OZEMLJITEV OZEMLJITEV
L15 13
GPIO13
L16 D2 SD_PODATAK2
L17 D3 SD_PODATAK3
L18 UKAZ SD_UKAZ
L19 5V
Zunanji 5V
R1 OZEMLJITEV OZEMLJITEV
R2 23
GPIO23
R3 22
GPIO22
R4 TX U0TXD
R5 RX U0RXD
R6 21
GPIO21
R7 OZEMLJITEV OZEMLJITEV
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_PODATAK1
R18 D0 SD_PODATAK0
R19 CLK SD_CLK
Glavne enote Za sliko glavnih enot glejte Opis komponent.
Sorodni dokumenti
· Shema ESP32-DevKitS(-R) (PDF) · Podatkovni list ESP32 (PDF) · Podatkovni list ESP32-WROOM-32 (PDF) · Podatkovni list ESP32-WROOM-32D in ESP32-WROOM-32U (PDF) · Podatkovni list ESP32-SOLO-1 (PDF) · Podatkovni list ESP32-WROVER (PDF) · Podatkovni list ESP32-WROVER-B (PDF) · Izbirnik izdelkov ESP
ESP32-DevKitM-1
Ta uporabniški priročnik vam bo pomagal pri začetku uporabe ESP32-DevKitM-1 in vam bo nudil tudi podrobnejše informacije.
ESP32-DevKitM-1 je razvojna plošča, ki temelji na ESP32-MINI-1(1U), proizvajalca Espressif. Večina vhodno/izhodnih pinov je za lažje povezovanje izrezanih na priključke na obeh straneh. Uporabniki lahko periferne naprave priključijo s kratkostičnimi žicami ali pa ESP32-DevKitM-1 namestijo na testno ploščo.
Espressif sistemi
9 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
ESP32-DevKitM-1 – spredaj
ESP32-DevKitM-1 – izometrični
Dokument je sestavljen iz naslednjih glavnih razdelkov: · Uvod: Zagotavlja pregledview navodil za namestitev ESP32-DevKitM-1 in strojne/programske opreme za začetek. · Referenca strojne opreme: Zagotavlja podrobnejše informacije o strojni opremi ESP32-DevKitM-1ns. · Sorodni dokumenti: Vsebuje povezave do sorodne dokumentacije.
Uvod V tem razdelku je opisano, kako začeti z uporabo ESP32-DevKitM-1. Začne se z nekaj uvodnimi razdelki o ESP32-DevKitM-1, nato pa razdelek Začetek razvoja aplikacije vsebuje navodila za začetno nastavitev strojne opreme in nato za namestitev vdelane programske opreme na ESP32-DevKitM-1.
konecview To je majhna in priročna razvojna plošča, ki ima:
· Modul ESP32-MINI-1 ali ESP32-MINI-1U · Programski vmesnik USB-serijski, ki zagotavlja tudi napajanje plošče · priključki · gumbi za ponastavitev in aktivacijo načina prenosa vdelane programske opreme · nekaj drugih komponent
Vsebina in embalaža
Naročila v maloprodaji Če naročite nekaj kosovampVsak ESP32-DevKitM-1 je pakiran v individualni embalaži v antistatični vrečki ali poljubni embalaži, odvisno od vašega prodajalca.
Za naročila v maloprodaji obiščite https://www.espressif.com/en/contact-us/get-samples.
Veleprodajna naročila Če naročite v razsutem stanju, so plošče dobavljene v velikih kartonskih škatlah. Za veleprodajna naročila obiščite https://www.espressif.com/en/contact-us/sales-questions.
Opis komponent Naslednja slika in spodnja tabela opisujeta ključne komponente, vmesnike in krmilnike plošče ESP32-DevKitM-1. Ploščo z modulom ESP32-MINI-1 vzamemo kot primerample v naslednjih razdelkih.
Espressif sistemi
10 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Slika 6: ESP32-DevKitM-1 – sprednja stran
Ključna komponenta Vgrajeni modul
Gumb za zagon LDO od 5 V do 3.3 V
Gumb za ponastavitev Vrata mikro USB
Most USB-UART 3.3 V LED za vklop
V/I priključek
Opis
Modul ESP32-MINI-1 ali modul ESP32-MINI-1U. ESP32-MINI-1 ima vgrajeno anteno na tiskanem vezju. ESP32-MINI-1U ima zunanji antenski konektor. Oba modula imata 4 MB bliskovnega pomnilnika v ohišju. Za podrobnosti glejte podatkovni list ESP32-MINI-1 in ESP32-MINI-1U.
Regulator moči pretvori 5 V v 3.3 V.
Gumb za prenos. Če držite pritisnjen gumb Boot in nato pritisnete gumb Reset, se zažene način prenosa vdelane programske opreme prek serijskih vrat.
Gumb za ponastavitev
USB vmesnik. Napajalnik za ploščo ter komunikacijski vmesnik med računalnikom in čipom ESP32.
En sam USB-UART premostitveni čip zagotavlja hitrost prenosa do 3 Mbps.
Vklopi se, ko je USB priključen na ploščo. Za podrobnosti glejte sheme v sorodnih dokumentih. Vsi razpoložljivi GPIO pini (razen SPI vodila za bliskovni pomnilnik) so priključeni na priključke na plošči. Uporabniki lahko programirajo čip ESP32 za omogočanje več funkcij.
Začnite z razvojem aplikacije Preden vklopite ESP32-DevKitM-1, se prepričajte, da je v dobrem stanju in brez očitnih znakov poškodb.
Potrebna strojna oprema · ESP32-DevKitM-1 · Kabel USB 2.0 (Standard-A do Micro-B) · Računalnik z operacijskim sistemom Windows, Linux ali macOS
Namestitev programske opreme Nadaljujte z Začetek, kjer vam bo razdelek Namestitev hitro pomagal nastaviti razvojno okolje in nato namestiti aplikacijo npr.ampna vaš ESP32-DevKitM-1.
Espressif sistemi
11 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Pozor: Plošče ESP32-DevKitM-1, izdelane pred 2. decembrom 2021, imajo nameščen enojedrni modul. Če želite preveriti, kateri modul imate, preverite informacije o označevanju modulov v PCN-2021-021. Če ima vaša plošča nameščen enojedrni modul, pred namestitvijo aplikacij v meniju menuconfig omogočite enojedrni način (CONFIG_FREERTOS_UNICORE).
Blokovni diagram strojne opreme Spodnji blokovni diagram prikazuje komponente ESP32-DevKitM-1 in njihove medsebojne povezave.
Slika 7: ESP32-DevKitM-1
Izbira vira napajanja Obstajajo trije medsebojno izključujoči se načini napajanja plošče: · Vrata Micro USB, privzeti napajalnik · Priključka 5V in GND · Priključka 3V3 in GND
Opozorilo: · Napajanje mora biti zagotovljeno z eno in samo eno od zgornjih možnosti, sicer se lahko poškodujeta plošča in/ali vir napajanja. · Priporočljivo je napajanje prek vrat micro USB.
Opisi nožic Spodnja tabela prikazuje imena in funkcije nožic na obeh straneh plošče. Za konfiguracije perifernih nožic glejte podatkovni list ESP32.
št.
Ime
Vrsta
1
GND
P
2
3V3
P
Funkcija Ozemljitev Napajanje 3.3 V
nadaljuje se na naslednji strani
Espressif sistemi
12 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Tabela 2 se nadaljuje s prejšnje strani
št.
Ime
Vrsta
funkcija
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
RST
I
Ponastaviti; Visoka: omogoči; Nizka: izklopi
8
I34
I
GPIO34, ADC1_CH6, RTC_GPIO4
9
I35
I
GPIO35, ADC1_CH7, RTC_GPIO5
10
IO32
I/O
GPIO32, XTAL_32K_P (vhodni signal kristalnega oscilatorja 32.768 kHz),
ADC1_CH4, TOUCH9, RTC_GPIO9
11
IO33
I/O
GPIO33, XTAL_32K_N (izhod kristalnega oscilatorja 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 napajanje
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_EN
31
TXD0
I/O
GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
32
RXD0
I/O
GPIO3, U0RXD, CLK_OUT2
Podrobnosti o različici strojne opreme Prejšnje različice niso na voljo.
Sorodni dokumenti
· Podatkovni list ESP32-MINI-1 in ESP32-MINI-1U (PDF) · Shema ESP32-DevKitM-1 (PDF) · Razporeditev tiskanega vezja ESP32-DevKitM-1 (PDF) · Razporeditev ESP32-DevKitM-1 (DXF) – Lahko view z Autodeskom Viewna spletu · Podatkovni list ESP32 (PDF) · Izbirnik izdelkov ESP
Za ostalo projektno dokumentacijo za ploščo nas kontaktirajte na sales@espressif.com.
Espressif sistemi
13 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Programska oprema 1.2.2
Za začetek uporabe ESP-IDF na ESP32 namestite naslednjo programsko opremo: · Toolchain za prevajanje kode za ESP32 · Orodja za gradnjo – CMake in Ninja za gradnjo celotne aplikacije za ESP32 · ESP-IDF, ki v bistvu vsebuje API (knjižnice programske opreme in izvorno kodo) za ESP32 in skripte za delovanje Toolchaina
1.3 Namestitev
Za namestitev vse potrebne programske opreme ponujamo nekaj različnih načinov za lažjo izvedbo te naloge. Izberite eno od razpoložljivih možnosti.
1.3.1 Razvojno okolje
Opomba: Toplo priporočamo namestitev ESP-IDF prek vašega najljubšega IDE.
· Vtičnik Eclipse · Razširitev VSCode
1.3.2 Ročna namestitev
Za ročni postopek izberite glede na vaš operacijski sistem.
Espressif sistemi
14 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Standardna nastavitev orodja Toolchain za Windows
Uvod Za ESP-IDF je potrebna namestitev nekaterih predpogojnih orodij, s katerimi lahko sestavite vdelano programsko opremo za podprte čipe. Predpogojna orodja vključujejo Python, Git, navzkrižne prevajalnike, orodja za gradnjo CMake in Ninja. Za ta prvi korak bomo uporabili ukazni poziv, po namestitvi ESP-IDF pa lahko namesto tega uporabite vtičnik Eclipse ali drugo grafično integrirano razvojno okolje s podporo za CMake. Opomba: Omejitve: – Namestitvena pot za ESP-IDF in orodja ESP-IDF ne sme biti daljša od 90 znakov. Predolge namestitvene poti lahko povzročijo neuspešno gradnjo. – Namestitvena pot za Python ali ESP-IDF ne sme vsebovati presledkov ali oklepajev. – Namestitvena pot za Python ali ESP-IDF ne sme vsebovati posebnih znakov (ne-ASCII), razen če je operacijski sistem konfiguriran s podporo za Unicode UTF-8. Skrbnik sistema lahko podporo omogoči prek nadzorne plošče – Spremeni obliko datuma, časa ali številk – zavihek Skrbništvo – Spremeni jezikovne nastavitve sistema – označi možnost Beta: Uporabi Unicode UTF-8 za podporo jezikov po vsem svetu – V redu in znova zaženite računalnik.
Namestitveni program za orodja ESP-IDF Najlažji način za namestitev predpogojev za ESP-IDFns je prenos enega od namestitvenih programov za orodja ESP-IDF.
Prenos namestitvenega programa Windows
Kakšna je uporaba spletnega in nespletnega namestitvenega programa? Spletni namestitveni program je zelo majhen in omogoča namestitev vseh razpoložljivih izdaj ESP-IDF. Namestitveni program bo med namestitvijo prenesel le potrebne odvisnosti, vključno z Gitom za Windows. Namestitveni program shrani prenesene datoteke. filev imeniku predpomnilnika %userprofile% espressif
Namestitveni program brez povezave ne zahteva omrežne povezave. Namestitveni program vsebuje vse potrebne odvisnosti, vključno z Gitom za Windows.
Komponente namestitve Namestitveni program namesti naslednje komponente:
· Vgrajeni Python · Medprevajalniki · OpenOCD · Orodja za gradnjo CMake in Ninja · ESP-IDF
Namestitveni program omogoča tudi ponovno uporabo obstoječega imenika z ESP-IDF. Priporočeni imenik je %userprofile%Desktopesp-idf, kjer je %userprofile% je vaš domači imenik.
Espressif sistemi
15 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Zagon okolja ESP-IDF Na koncu namestitvenega postopka lahko preverite možnost Zaženi okolje ESP-IDF PowerShell ali Zaženi ukazni poziv ESP-IDF (cmd.exe). Namestitveni program bo v izbranem pozivu zagnal okolje ESP-IDF. Zaženite okolje ESP-IDF PowerShell:
Slika 8: Dokončanje čarovnika za nastavitev orodij ESP-IDF z zagonom okolja PowerShell za ESP-IDF
Zaženite ukazni poziv ESP-IDF (cmd.exe):
Uporaba ukaznega poziva Za preostale korake za začetek bomo uporabili ukazni poziv sistema Windows. Namestitveni program za orodja ESP-IDF ustvari tudi bližnjico v meniju Start za zagon ukaznega poziva ESP-IDF. Ta bližnjica zažene ukazni poziv (cmd.exe) in zažene skript export.bat za nastavitev okoljskih spremenljivk (PATH, IDF_PATH in druge). V tem ukaznem pozivu so na voljo vsa nameščena orodja. Upoštevajte, da je ta bližnjica specifična za imenik ESP-IDF, izbran v namestitvenem programu za orodja ESP-IDF. Če imate v računalniku več imenikov ESP-IDF (na primeramp(npr. za delo z različnimi različicami ESP-IDF), imate na voljo dve možnosti za njihovo uporabo:
1. Ustvarite kopijo bližnjice, ki jo je ustvaril namestitveni program za orodja ESP-IDF, in spremenite delovni imenik nove bližnjice v imenik ESP-IDF, ki ga želite uporabiti.
2. Lahko pa zaženete cmd.exe, nato pa se premaknete v imenik ESP-IDF, ki ga želite uporabiti, in zaženete export.bat. Upoštevajte, da za razliko od prejšnje možnosti ta način zahteva, da sta Python in Git prisotna v PATH. Če se prikažejo napake, povezane z nenajdenim Pythonom ali Gitom, uporabite prvo možnost.
Prvi koraki pri ESP-IDF Ker so izpolnjene vse zahteve, vas bo naslednja tema vodila skozi postopek začetka vašega prvega projekta.
Espressif sistemi
16 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek Slika 9: ESP-IDF PowerShell
Slika 10: Zaključek čarovnika za namestitev orodij ESP-IDF z zagonom ukazne vrstice ESP-IDF (cmd.exe)
Espressif sistemi
17 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Slika 11: Ukazni poziv ESP-IDF
Espressif sistemi
18 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Ta priročnik vam bo pomagal pri prvih korakih uporabe ESP-IDF. Sledite temu priročniku, da začnete nov projekt na ESP32 ter zgradite, naložite in spremljate izhod naprave. Opomba: Če še niste namestili ESP-IDF, pojdite na Namestitev in sledite navodilom, da dobite vso programsko opremo, potrebno za uporabo tega priročnika.
Začnite projekt Zdaj ste pripravljeni pripraviti svojo aplikacijo za ESP32. Lahko začnete s projektom getstarted/hello_world iz npr.amples imenik v ESP-IDF.
Pomembno: Sistem gradnje ESP-IDF ne podpira presledkov v poteh do ESP-IDF ali do projektov.
Kopirajte projekt get-started/hello_world v imenik ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhello_world pozdravljeni_svet
Opomba: Obstaja vrsta npr.ample projekti v examples imenik v ESP-IDF. Vsak projekt lahko kopirate na enak način, kot je predstavljen zgoraj, in ga zaženete. Možna je tudi izgradnja exampdatoteke na mestu, ne da bi jih prej kopirali.
Priključite svojo napravo Zdaj priključite ploščo ESP32 na računalnik in preverite, pod katerimi serijskimi vrati je plošča vidna. Imena serijskih vrat se v sistemu Windows začnejo s COM. Če niste prepričani, kako preveriti ime serijskih vrat, glejte Vzpostavitev serijske povezave z ESP32 za podrobnosti.
Opomba: ime vrat naj bo pri roki, saj ga boste potrebovali v naslednjih korakih.
Konfigurirajte svoj projekt Pomaknite se do imenika hello_world, nastavite ESP32 kot cilj in zaženite pripomoček za konfiguracijo projekta menuconfig.
Windows cd %userprofile%esphello_world idf.py set-target esp32 idf.py menuconfig
Po odprtju novega projekta morate najprej nastaviti cilj z ukazom idf.py set-target esp32. Upoštevajte, da bodo obstoječe gradnje in konfiguracije v projektu, če obstajajo, v tem postopku izbrisane in inicializirane. Cilj lahko shranite v okoljsko spremenljivko, da ta korak sploh preskočite. Za dodatne informacije glejte Izbira ciljnega čipa: set-target. Če so bili prejšnji koraki opravljeni pravilno, se prikaže naslednji meni: Ta meni uporabljate za nastavitev spremenljivk, specifičnih za projekt, npr. imena in gesla omrežja Wi-Fi, hitrosti procesorja itd. Nastavitev projekta z ukazom menuconfig se lahko preskoči za ohello_wordp, ker ta npr.ample se izvaja s privzeto konfiguracijo.
Pozor: Če uporabljate ploščo ESP32-DevKitC z modulom ESP32-SOLO-1 ali ploščo ESP32-DevKitM-1 z modulom ESP32-MIN1-1(1U), pred programiranjem v meniju menuconfig omogočite enojni način (CONFIG_FREERTOS_UNICORE).amples.
Espressif sistemi
19 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Slika 12: Konfiguracija projekta – Začetno okno
Opomba: Barve menija se lahko v vašem terminalu razlikujejo. Videz lahko spremenite z možnostjo –style. Za več informacij zaženite idf.py menuconfig –help.
Če uporabljate eno od podprtih razvojnih plošč, lahko pospešite svoj razvoj z uporabo paketa za podporo plošč. Za več informacij glejte Dodatne nasvete.
Zgradite projekt Projekt zgradite tako, da zaženete:
idf.py build
Ta ukaz bo prevedel aplikacijo in vse komponente ESP-IDF, nato bo ustvaril zagonski nalagalnik, tabelo particij in binarne datoteke aplikacije.
$ idf.py build Izvajanje cmake v imeniku /path/to/hello_world/build Izvajanje “cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Opozori na neinicializirane vrednosti. — Najdena datoteka Git: /usr/bin/git (najdena različica “2.17.0”) — Gradnja prazne komponente aws_iot zaradi konfiguracije — Imena komponent: … — Poti komponent: …
… (več vrstic izhoda sistema za gradnjo)
[527/527] Generiranje datoteke hello_world.bin esptool.py v2.3.1
Gradnja projekta je končana. Za programiranje flash zaženite ta ukaz: ../../../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 ali zaženite 'idf.py -p PORT flash'
Če ni napak, se bo gradnja končala z generiranjem binarne vdelane programske opreme .bin files.
Espressif sistemi
20 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Program Flash na napravo Program Flash na svojo ploščo ESP32 prenesite v programsko opremo ESP32 tako, da zaženete: idf.py -p PORT [-b BAUD] flash
PORT zamenjajte z imenom serijskih vrat vaše matične plošče ESP32. Hitrost prenosa podatkov bliskovnega pogona lahko spremenite tudi tako, da BAUD zamenjate z želeno hitrostjo prenosa podatkov. Privzeta hitrost prenosa podatkov je 460800. Za več informacij o argumentih idf.py glejte idf.py.
Opomba: Možnost flash samodejno gradi in naloži projekt, zato zagon ukaza idf.py build ni potreben.
Ste med programiranjem naleteli na težave? Če zaženete dani ukaz in vidite napake, kot je »Failed to connectp« (Ni uspelo vzpostaviti povezave), je za to lahko več razlogov. Eden od razlogov so lahko težave, na katere naleti esptool.py, pripomoček, ki ga pokliče sistem za gradnjo za ponastavitev čipa, interakcijo z zagonskim nalagalnikom ROM-a in programiranje vdelane programske opreme. Preprosta rešitev, ki jo lahko poskusite, je ročna ponastavitev, opisana spodaj, in če to ne pomaga, lahko najdete več podrobnosti o morebitnih težavah v odpravljanju težav.
esptool.py samodejno ponastavi ESP32 z uveljavljanjem krmilnih linij DTR in RTS pretvornika USB v serijski vmesnik, npr. FTDI ali CP210x (za več informacij glejte Vzpostavitev serijske povezave z ESP32). Krmilne linije DTR in RTS so nato povezane z priključkoma GPIO0 in CHIP_PU (EN) ESP32, s čimer se spremeni glasnost.tagRavni DTR in RTS bodo zagnale ESP32 v način prenosa vdelane programske opreme. Kot npr.ampTorej, preverite shemo za razvojno ploščo ESP32 DevKitC.
Na splošno ne bi smeli imeti težav z uradnimi razvojnimi ploščami esp-idf. Vendar pa esptool.py ne more samodejno ponastaviti vaše strojne opreme v naslednjih primerih:
· Vaša strojna oprema nima linij DTR in RTS, povezanih z GPIO0 in CHIP_PU · Linije DTR in RTS so konfigurirane drugače · Takšnih serijskih krmilnih linij sploh ni
Odvisno od vrste strojne opreme, ki jo imate, je morda mogoče ročno preklopiti ploščo ESP32 v način prenosa vdelane programske opreme (ponastavitev).
· Za razvojne plošče, ki jih proizvaja Espressif, so te informacije na voljo v ustreznih priročnikih za začetek uporabe ali uporabniških priročnikih. Na primerampZa ročno ponastavitev razvojne plošče ESP-IDF držite pritisnjen gumb Boot (GPIO0) in pritisnite gumb EN (CHIP_PU).
· Za druge vrste strojne opreme poskusite spustiti GPIO0.
Normalno delovanje Med utripanjem boste videli izhodni dnevnik, podoben naslednjemu:
… 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 Serijska vrata /dev/ttyUSB0 Povezovanje…….._ Čip je ESP32D0WDQ6 (revizija 0) Značilnosti: WiFi, BT, dvojedrni procesor, shema kodiranja Brez Kristal je 40MHz MAC: 24:0a:c4:05:b9:14 Nalaganje stuba… Stub se izvaja… Stub se izvaja… Spreminjanje hitrosti prenosa na 460800 Spremenjeno.
(nadaljevanje na naslednji strani)
Espressif sistemi
21 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
(nadaljevanje s prejšnje strani) Konfiguracija velikosti pomnilnika flash… Stisnjenih 3072 bajtov na 103… Pisanje pri 0x00008000… (100 %) Zapisano 3072 bajtov (103 stisnjenih) pri 0x00008000 v 0.0 sekundah (efektivno 5962.8 kbit/s)… Zgoščena vrednost podatkov preverjena. Stisnjenih 26096 bajtov na 15408… Pisanje pri 0x00001000… (100 %) Zapisano 26096 bajtov (15408 stisnjenih) pri 0x00001000 v 0.4 sekundah (efektivno 546.7 kbit/s)… Zgoščena vrednost podatkov preverjena. Stisnjenih 147104 bajtov na 77364… Pisanje pri 0x00010000… (20 %) Pisanje pri 0x00014000… (40 %) Pisanje pri 0x00018000… (60 %) Pisanje pri 0x0001c000… (80 %) Pisanje pri 0x00020000… (100 %) Zapisano 147104 bajtov (77364 stisnjenih) pri 0x00010000 v 1.9 sekunde (efektivno 615,5 kbit/s)… Zgoščena vrednost podatkov preverjena.
Zapuščam ... Trdna ponastavitev prek RTS pin ... Končano
Če do konca postopka bliskovnega programiranja ni težav, se bo plošča znova zagnala in zagnala aplikacijo theohello_worldp. Če želite namesto zagona idf.py uporabiti Eclipse ali VS Code IDE, si oglejte Eclipse Plugin, VSCode Extension.
Spremljanje izhoda Če želite preveriti, ali se ohello_worldpis dejansko izvaja, vnesite idf.py -p PORT monitor (ne pozabite zamenjati PORT z imenom vaših serijskih vrat).
Ta ukaz zažene aplikacijo IDF Monitor:
$ idf.py -p monitor Izvajanje idf_monitor v imeniku […]/esp/hello_world/build Izvajanje “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf”… — idf_monitor vklopljen 115200 —– Izhod: Ctrl+] | Meni: Ctrl+T | Pomoč: Ctrl+T, ki mu sledi Ctrl+H –ets 8. junij 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8. junij 2016 00:22:57 …
Ko se dnevniki zagona in diagnostike pomaknejo navzgor, bi morala aplikacija natisniti napis oHello world!.
... Pozdravljen, svet! Ponovni zagon čez 10 sekund ... To je čip esp32 z dvema jedroma CPU-ja, WiFi/BT/BLE, silicijevim procesorjem revizije 1, 2 MB zunanjega bliskovnega pomnilnika. Najmanjša velikost prostega pomnilnika: 298968 bajtov. Ponovni zagon čez 9 sekund ... Ponovni zagon čez 8 sekund ... Ponovni zagon čez 7 sekund ...
Za izhod IDF monitor uporabite bližnjico Ctrl+].
Espressif sistemi
22 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Če nadzor IDF odpove kmalu po nalaganju ali če namesto zgornjih sporočil vidite naključne napake, podobne tistim, ki so navedene spodaj, vaša plošča verjetno uporablja 26 MHz kristal. Večina razvojnih plošč uporablja 40 MHz, zato ESP-IDF to frekvenco uporablja kot privzeto vrednost.
Če imate takšno težavo, naredite naslednje: 1. Zaprite monitor. 2. Vrnite se v menuconfig. 3. Pojdite v Component config > Hardware Settings > Main XTAL Config > Main XTAL frequency in nato spremenite CONFIG_XTAL_FREQ_SEL na 26 MHz. 4. Nato znova sestavite in naložite aplikacijo.
V trenutni različici ESP-IDF so glavne frekvence XTAL, ki jih podpira ESP32, naslednje:
· 26 MHz · 40 MHz
Opomba: Gradnjo, programiranje in spremljanje lahko združite v en korak tako, da zaženete: idf.py -p PORT flash monitor
Glejte tudi: · IDF Monitor za priročne bližnjice in več podrobnosti o uporabi IDF monitorja. · idf.py za celoten seznam ukazov in možnosti idf.py.
To je vse, kar potrebujete za začetek uporabe ESP32! Zdaj ste pripravljeni poskusiti še kakšnega drugega ...ampdatoteke ali pa se lotite razvoja lastnih aplikacij.
Pomembno: Nekateri bivšiampDatoteke ne podpirajo ESP32, ker zahtevana strojna oprema ni vključena v ESP32, zato je ni mogoče podpreti. Če gradite exampProsim, preverite datoteko README file za tabelo Podprti cilji. Če je ta prisotna, vključno s ciljem ESP32, ali tabela sploh ne obstaja, npr.ampDelal bo na ESP32.
Dodatni nasveti
Težave z dovoljenji /dev/ttyUSB0 Pri nekaterih distribucijah Linuxa se lahko pri umetnem zagonu ESP32 prikaže sporočilo o napaki »Neuspešno odpiranje vrat /dev/ttyUSB0«. To lahko rešite tako, da trenutnega uporabnika dodate v skupino za klicanje.
Združljivost s Pythonom ESP-IDF podpira Python 3.7 ali novejši. Priporočljivo je, da nadgradite operacijski sistem na novejšo različico, ki izpolnjuje to zahtevo. Druge možnosti vključujejo namestitev Pythona iz izvorne kode ali uporabo sistema za upravljanje različic Pythona, kot je pyenv.
Začnite s paketom za podporo plošče Za pospešitev izdelave prototipov na nekaterih razvojnih ploščah lahko uporabite pakete za podporo plošče (BSP), ki inicializacijo določene plošče olajšajo z nekaj klici funkcij.
Espressif sistemi
23 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
BSP običajno podpira vse strojne komponente, ki so na voljo na razvojni plošči. Poleg definicije razporeditve pinov in funkcij inicializacije je BSP dobavljen z gonilniki za zunanje komponente, kot so senzorji, zasloni, zvočni kodeki itd. BSP-ji so distribuirani prek upravitelja komponent IDF, zato jih je mogoče najti v registru komponent IDF. Tukaj je npr.ampLektor na temo, kako dodati ESP-WROVER-KIT BSP v svoj projekt: idf.py add-dependency esp_wrover_kit
Več exampPodatke o uporabi BSP najdete v BSP exampmapa les.
Sorodni dokumenti Za napredne uporabnike, ki želijo prilagoditi postopek namestitve: · Posodobitev orodij ESP-IDF v sistemu Windows · Vzpostavitev serijske povezave z ESP32 · Vtičnik Eclipse · Razširitev VSCode · Monitor IDF
Posodabljanje orodij ESP-IDF v sistemu Windows
Namestitev orodij ESP-IDF s skriptom V ukaznem pozivu sistema Windows se pomaknite v imenik, kjer je nameščen ESPIDF. Nato zaženite:
namestitev.bat
Za Powershell preklopite v imenik, kjer je nameščen ESP-IDF. Nato zaženite:
namestite.ps1
S tem boste prenesli in namestili orodja, potrebna za uporabo ESP-IDF. Če je določena različica orodja že nameščena, ne bo izvedeno nobeno dejanje. Orodja se prenesejo in namestijo v imenik, določen med postopkom namestitve orodij ESP-IDF. Privzeto je to C:\Usersusername.espressif.
Dodajanje orodij ESP-IDF v PATH z uporabo izvoznega skripta Namestitveni program orodij ESP-IDF ustvari bližnjico v meniju Start za ukazni poziv ESP-IDF. Ta bližnjica odpre okno ukaznega poziva, kjer so že vsa orodja.
na voljo. V nekaterih primerih boste morda želeli delati z ESP-IDF v oknu ukaznega poziva, ki se ni zagnalo s to bližnjico. V tem primeru sledite spodnjim navodilom, da v PATH dodate orodja ESP-IDF. V ukaznem pozivu, kjer želite uporabiti ESP-IDF, se premaknite v imenik, kjer je nameščen ESP-IDF, in nato zaženite export.bat:
cd %userprofile%espesp-idf izvoz.bat
Lahko pa v Powershellu, kjer morate uporabiti ESP-IDF, preklopite v imenik, kjer je nameščen ESP-IDF, in nato zaženite export.ps1:
cd ~/esp/esp-idf izvoz.ps1
Ko je to storjeno, bodo orodja na voljo v tem ukaznem pozivu.
Vzpostavitev serijske povezave z ESP32 Ta razdelek vsebuje navodila za vzpostavitev serijske povezave med ESP32 in računalnikom.
Espressif sistemi
24 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Priključitev ESP32 na računalnik Priključite ploščo ESP32 na računalnik s kablom USB. Če se gonilnik naprave ne namesti samodejno, poiščite čip pretvornika USB v serijski vmesnik na vaši plošči ESP32 (ali zunanjem pretvorniškem ključku), poiščite gonilnike na internetu in jih namestite. Spodaj je seznam čipov pretvornika USB v serijski vmesnik, nameščenih na večini plošč ESP32, ki jih proizvaja Espressif, skupaj s povezavami do gonilnikov:
· CP210x: Gonilniki VCP za most CP210x USB-UART · FTDI: Gonilniki za virtualna COM vrata FTDI Za specifični pretvornik USB-serijski vmesnik preverite uporabniški priročnik plošče. Zgornji gonilniki so namenjeni predvsem referenci. V normalnih okoliščinah bi morali biti gonilniki priloženi operacijskemu sistemu in se samodejno namestiti ob priključitvi plošče na računalnik.
Preverjanje vrat v sistemu Windows Preverite seznam prepoznanih vrat COM v upravitelju naprav sistema Windows. Odklopite ESP32 in ga ponovno priključite, da preverite, katera vrata izginejo s seznama in se nato znova prikažejo. Spodnje slike prikazujejo serijska vrata za ESP32 DevKitC in ESP32 WROVER KIT.
Slika 13: Most USB-UART za ESP32-DevKitC v upravitelju naprav sistema Windows
Preverjanje vrat v sistemih Linux in macOS Če želite preveriti ime naprave za serijska vrata vaše plošče ESP32 (ali zunanjega pretvorniškega ključka), ta ukaz zaženite dvakrat, najprej z izklopljeno ploščo/ključkom, nato pa z priključeno. Vrata, ki se prikažejo drugič, so tista, ki jih potrebujete: Linux
ls /dev/tty*
macOS
Espressif sistemi
25 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Slika 14: Dva serijska USB vhoda ESP-WROVER-KIT v upravitelju naprav sistema Windows
Espressif sistemi
26 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
ls /dev/cu.* Opomba: uporabniki macOS: če ne vidite serijskih vrat, preverite, ali imate nameščene gonilnike USB/serijske povezave. Za povezave do gonilnikov glejte razdelek Priključitev ESP32 na računalnik. Za macOS High Sierra (10.13) boste morda morali izrecno dovoliti nalaganje gonilnikov. Odprite Sistemske nastavitve -> Varnost in zasebnost -> Splošno in preverite, ali je tukaj prikazano sporočilo o sistemski programski opremi razvijalca lp, kjer je ime razvijalca Silicon Labs ali FTDI.
Dodajanje uporabnika v skupino dialout v Linuxu Trenutno prijavljeni uporabnik mora imeti dostop za branje in pisanje serijskih vrat prek USB-ja. V večini distribucij Linuxa to storite tako, da uporabnika dodate v skupino dialout z naslednjim ukazom:
sudo usermod -a -G dialout $USER
v Arch Linuxu se to naredi z dodajanjem uporabnika v skupino uucp z naslednjim ukazom:
sudo usermod -a -G uucp $USER
Prepričajte se, da se znova prijavite, da omogočite dovoljenja za branje in pisanje za serijska vrata.
Preverjanje serijske povezave Sedaj preverite, ali serijska povezava deluje. To lahko storite s programom za serijski terminal tako, da preverite, ali se po ponastavitvi ESP32 na terminalu prikaže kakšen izhod. Privzeta hitrost prenosa konzole na ESP32 je 115200.
Windows in Linux V tem exampUporabili bomo odjemalca PuTTY SSH, ki je na voljo tako za Windows kot Linux. Uporabite lahko tudi druge serijske programe in nastavite komunikacijske parametre, kot je prikazano spodaj. Zaženite terminal in nastavite identificirana serijska vrata. Hitrost prenosa = 115200 (po potrebi spremenite to na privzeto hitrost prenosa uporabljenega čipa), podatkovni biti = 8, stop biti = 1 in pariteta = N. Spodaj so navedeni primeri.ampPosnetki zaslona nastavitve vrat in parametrov prenosa (na kratko opisanih kot 115200-8-1-N) v sistemih Windows in Linux. Ne pozabite izbrati popolnoma istih serijskih vrat, ki ste jih določili v zgornjih korakih. Nato odprite serijska vrata v terminalu in preverite, ali je ESP32 izpisal kakšen dnevnik. Vsebina dnevnika bo odvisna od aplikacije, naložene v ESP32, glejte primer ...ampIzhod.
Opomba: Po preverjanju delovanja komunikacije zaprite serijski terminal. Če pustite sejo terminala odprto, serijska vrata ne bodo dostopna za kasnejše nalaganje vdelane programske opreme.
macOS Da bi vam prihranili težave z nameščanjem programa za serijski terminal, macOS ponuja ukaz screen. · Kot je razloženo v razdelku Preverjanje vrat v Linuxu in macOS, zaženite:
ls /dev/cu.* · Videti bi morali podoben izpis:
/dev/cu.Bluetooth-Incoming-Port /dev/cu.SLAB_USBtoUART USBtoUART7
/dev/cu.SLAB_
· Izhod se bo razlikoval glede na vrsto in število plošč, priključenih na vaš računalnik. Nato izberite ime naprave za vašo ploščo in zaženite (po potrebi spremenite o115200 na privzeto hitrost prenosa uporabljenega čipa):
zaslon /dev/cu.ime_device 115200 Zamenjajte ime_device z imenom, ki ga najdete pri zagonu ukaza ls /dev/cu.*.
Espressif sistemi
27 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Slika 15: Nastavitev serijske komunikacije v PuTTY v sistemu Windows
Espressif sistemi
28 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Slika 16: Nastavitev serijske komunikacije v PuTTY v Linuxu
Espressif sistemi
29 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
· Iščete dnevnik, ki se prikaže na zaslonu. Vsebina dnevnika bo odvisna od aplikacije, naložene v ESP32, glejte primerampIzhod. Za izhod iz zaslonske seje pritisnite Ctrl-A + .
Opomba: Ko preverite, ali komunikacija deluje, ne pozabite zapustiti seje zaslona. Če tega ne storite in samo zaprete okno terminala, serijska vrata ne bodo dostopna za kasnejše nalaganje vdelane programske opreme.
ExampIzhod An exampDnevnik je prikazan spodaj. Če ne vidite ničesar, ponastavite ploščo. ets 8. junij 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8. junij 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 zagonski nalagalnik I (45) zagon: čas prevajanja 18:48:10
…
Če vidite berljiv izpis dnevnika, to pomeni, da serijska povezava deluje in ste pripravljeni na nadaljevanje namestitve in končnega nalaganja aplikacije v ESP32.
Opomba: Pri nekaterih konfiguracijah ožičenja serijskih vrat je treba serijska pina RTS in DTR onemogočiti v terminalskem programu, preden se ESP32 zažene in ustvari serijski izhod. To je odvisno od same strojne opreme, večina razvojnih plošč (vključno z vsemi ploščami Espressif) te težave nima. Težava se pojavi, če sta RTS in DTR neposredno povezana z pinima EN in GPIO0. Za več podrobnosti glejte dokumentacijo esptool.
Če ste prišli sem iz 5. koraka. Prvi koraki na ESP-IDF pri nameščanju programske opreme za razvoj ESP32, lahko nadaljujete s 5. korakom. Prvi koraki na ESP-IDF.
IDF Monitor IDF Monitor je predvsem serijski terminalski program, ki posreduje serijske podatke na serijska vrata ciljne naprave in iz njih. Ponuja tudi nekatere funkcije, specifične za IDF. IDF Monitor lahko zaženete iz projekta IDF z zagonom idf.py monitor.
Bližnjice na tipkovnici Za enostavno interakcijo z IDF Monitorjem uporabite bližnjice na tipkovnici, navedene v tabeli.
Espressif sistemi
30 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Bližnjica na tipkovnici Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (ali A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (ali I)
· Ctrl+H (ali H)
· Ctrl+X (ali X)
Ctrl+C
Akcija
Opis
Izhod iz programa Tipka za izhod iz menija Pošlji sam znak menija na oddaljeni strežnik
Pošlji sam izhodni znak oddaljenemu strežniku
Ponastavi cilj v zagonski nalagalnik, da prek linije RTS začasno ustavi aplikacijo
Ponastavi ciljno ploščo prek RTS-a
Zgradite in naložite projekt
Samo sestavite in naložite aplikacijo
Ustavitev/nadaljevanje tiskanja dnevnika na zaslon
Izpis dnevnika zaustavitve/nadaljevanja shranjen v file
Čas ustavitve/nadaljevanjaamps
tiskanje
Prikažite vse bližnjice na tipkovnici
Pritisnite in nato sledite eni od spodnjih tipk.
Ponastavi ciljno ploščo v zagonski nalagalnik prek linije RTS (če je priključena), tako da plošča ne izvaja ničesar. Uporabno, ko morate počakati na zagon druge naprave. Ponastavi ciljno ploščo in ponovno zažene aplikacijo prek linije RTS (če je priključena).
Začasno ustavi idf_monitor za zagon cilja projekta flash, nato pa nadaljuje idf_monitor. Vsak spremenjen vir filese ponovno prevedejo in nato ponovno naložijo v program. Ciljna aplikacija encrypted-flash se zažene, če je bil idf_monitor zagnan z argumentom -E. Začasno ustavi idf_monitor, da se zažene ciljna aplikacija app-flash, nato pa nadaljuje z idf_monitor. Podobno kot ciljna aplikacija flash, vendar se zgradi in ponovno naloži le glavna aplikacija. Ciljna aplikacija encrypted-app-flash se zažene, če je bil idf_monitor zagnan z argumentom -E. Med aktivacijo zavrže vse dohodne serijske podatke. Omogoča hitro zaustavitev in pregled izpisa dnevnika brez zapiranja monitorja. Ustvari file v imeniku projekta in izhod se zapiše tja file dokler tega ne onemogočite z isto bližnjico na tipkovnici (ali dokler se IDF Monitor ne zapre). IDF Monitor lahko izpiše časovniamp na začetku vsake vrstice. Najdaljši časamp format lahko spremeni –timestamp-format argument ukazne vrstice.
Zapustite program
Prekinitev izvajanja aplikacije
Začasno ustavi nadzor IDF in zažene razhroščevalnik projekta GDB za odpravljanje napak v aplikaciji med izvajanjem. To zahteva omogočeno možnost :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME.
Vse pritisnjene tipke, razen Ctrl-] in Ctrl-T, bodo poslane prek serijskega vrata.
Značilnosti, specifične za IDF
Samodejno dekodiranje naslovov Kadar koli ESP-IDF izpiše šestnajstiški kodni naslov oblike 0x4_______, IDF Monitor uporabi addr2line_ za iskanje lokacije v izvorni kodi in iskanje imena funkcije.
Če se aplikacija ESP-IDF sesuje in povzroči paniko, se ustvari izpis registra in povratna sled, kot je ta:
Espressif sistemi
31 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Na jedru 0 se je pojavila napaka meditacije guruja tipa StoreProhibited. Izjema je bila
neobdelano.
Izpis registra:
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 OPRAVIČILO:
0x0000001d
IZPOSOJA: 0x00000000 LBEG: 0x4000c46c POSOJILO: 0x4000c477 ŠTEVILKA:
0x00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90
IDF Monitor dodaja več podrobnosti na izpis:
Na jedru 0 se je pojavila napaka meditacije guruja tipa StoreProhibited. Izjema je bila
neobdelano.
Izpis registra:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
0x400f360d: naredi_nekaj_za_sesutje_na_/home/gus/esp/32/idf/examples/začetek/
hello_world/main/./hello_world_main.c:57
(vgrajeno z) inner_dont_crash na /home/gus/esp/32/idf/examples/začetek/pozdravljeni_
svet/glavna/./pozdravljeni_svet_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 OPRAVIČILO:
0x0000001d
IZPOSOJA: 0x00000000 LBEG: 0x4000c46c POSOJILO: 0x4000c477 ŠTEVILKA:
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 (vgrajeno z) inner_dont_crash na /home/gus/esp/32/idf/examples/get-started/hello_ world/main/./hello_world_main.c:52 0x400dbf56: še vedno_ne_sesuje na /home/gus/esp/32/idf/examples/get-started/hello_ world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash na /home/gus/esp/32/idf/examples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main na /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: glavna_naloga na /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254
Za dekodiranje vsakega naslova IDF Monitor v ozadju zažene naslednji ukaz: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS
Opomba: Spremenljivko okolja ESP_MONITOR_DECODE nastavite na 0 ali pokličite idf_monitor.py z določeno ukazno vrstico.
Espressif sistemi
32 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
možnost: idf_monitor.py –disable-address-decoding za onemogočanje dekodiranja naslovov.
Ponastavitev cilja ob vzpostavitvi povezave IDF Monitor privzeto ponastavi cilj, ko se z njim poveže. Ponastavitev ciljnega čipa se izvede prek serijskih linij DTR in RTS. Če želite preprečiti samodejno ponastavitev cilja s strani IDF Monitorja ob vzpostavitvi povezave, pokličite IDF Monitor z možnostjo –no-reset (npr. idf_monitor.py –no-reset).
Opomba: Možnost –no-reset uporabi enako delovanje tudi pri povezovanju IDF Monitorja z določenimi vrati (npr. idf.py monitor –no-reset -p [PORT]).
Zagon GDB z GDBStub GDBStub je uporabna funkcija za odpravljanje napak med izvajanjem, ki se izvaja na cilju in se poveže z gostiteljem prek serijskih vrat za prejemanje ukazov za odpravljanje napak. GDBStub podpira ukaze, kot so branje pomnilnika in spremenljivk, pregledovanje okvirjev sklada klicev itd. Čeprav je GDBStub manj vsestranski kot JTAG odpravljanje napak, ne zahteva nobene posebne strojne opreme (kot je JTAG na most USB), saj komunikacija poteka v celoti prek serijskih vrat. Cilj je mogoče konfigurirati tako, da se GDBStub izvaja v ozadju tako, da se med izvajanjem nastavi CONFIG_ESP_SYSTEM_PANIC na GDBStub. GDBStub se bo izvajal v ozadju, dokler se prek serijskih vrat ne pošlje sporočilo Ctrl+C, ki povzroči, da GDBStub prekine (tj. ustavi izvajanje) programa, kar GDBStubu omogoči obvladovanje ukazov za odpravljanje napak. Poleg tega je mogoče upravljalnik panike konfigurirati tako, da se GDBStub zažene ob sesutju tako, da se CONFIG_ESP_SYSTEM_PANIC nastavi na GDBStub ob paniki. Ko pride do sesutja, bo GDBStub prek serijskih vrat izpisal poseben vzorec niza, ki označuje, da se izvaja. V obeh primerih (tj. pošiljanje sporočila Ctrl+C ali prejem posebnega vzorca niza) bo IDF Monitor samodejno zagnal GDB, da bo uporabnik lahko pošiljal ukaze za odpravljanje napak. Po izhodu iz GDB se cilj ponastavi prek serijske linije RTS. Če ta linija ni povezana, lahko uporabniki ponastavijo svoj cilj (s pritiskom na gumb za ponastavitev na plošči).
Opomba: V ozadju IDF Monitor zažene naslednji ukaz za zagon GDB:
xtensa-esp32-elf-gdb -ex “nastavi serijski baud BAUD” -ex “ciljni oddaljeni VRAT” -ex prekinitev build/PROJECT.elf :idf_target:`Pozdravljeni IME čipa`
Filtriranje izhoda Nadzor IDF lahko pokličete kot idf.py monitor –print-filter=”xyz”, kjer je –print-filter parameter za filtriranje izhoda. Privzeta vrednost je prazen niz, kar pomeni, da se izpiše vse.
Omejitve glede tega, kaj naj se natisne, je mogoče določiti kot niztag>: predmeti, kjertag> je tag vrvica in je znak iz množice {N, E, W, I, D, V, *}, ki se nanaša na raven za beleženje.
Na primerample, PRINT_FILTER="tag1:W” se ujema in izpisuje samo izhode, zapisane z ESP_LOGW(“tag1”, …) ali na nižji ravni podrobnosti, npr. ESP_LOGE(“tag1″, …). Brez navedbe ali pa uporaba znaka * privzeto nastavi raven podrobnosti.
Opomba: Za onemogočanje nepotrebnih izhodov pri prevajanju prek knjižnice za beleženje uporabite primarno beleženje. Filtriranje izhodov z monitorjem IDF je sekundarna rešitev, ki je lahko uporabna za prilagajanje možnosti filtriranja brez ponovnega prevajanja aplikacije.
Vaša aplikacija tags ne sme vsebovati presledkov, zvezdic * ali dvopičja: da je združljivo s funkcijo filtriranja izhoda.
Če zadnji vrstici izhoda v vaši aplikaciji ne sledi znak za premik vrstice, se lahko filtriranje izhoda zmede, tj. monitor začne izpisovati vrstico in kasneje ugotovi, da vrstice ne bi smelo biti zapisano. To je znana težava, ki se ji lahko izognemo tako, da vedno dodamo znak za premik vrstice (še posebej, če takoj za njo ne sledi noben izhod).
Espressif sistemi
33 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Exampseznam pravil filtriranja:
· * se lahko uporabi za ujemanje s katerim koli tagsVendar pa niz PRINT_FILTER=”*:I tag1:E” glede na tag1 izpiše samo napake, ker pravilo za tag1 ima višjo prioriteto pred pravilom za *.
· Privzeto (prazno) pravilo je enakovredno *:V, ker se ujema z vsakim tag na ravni Verbose ali nižji pomeni ujemanje vsega.
· »*:N« ne prepreči le izhodov funkcij za beleženje, temveč tudi izpise, ki jih naredi printf itd. Da bi se temu izognili, uporabite *:E ali višjo raven podrobnosti.
· Pravila “tag1:V”, “tag1:v«, »tag1:”, “tag1:*« in »tag1” sta enakovredni. · Pravilo “tag1:Z tag1:E« je enakovredno »tag1:E”, ker vsak nadaljnji pojav istega tag
ime prepiše prejšnje. · Pravilo “tag1: jaz tagsamo tiskanje 2:W” tag1 na ravni podrobnosti informacij ali nižje in tag2 pri opozorilu
raven besedila ali nižja. · Pravilo “tag1: jaz tag2:Z tag3:N” je v bistvu enakovreden prejšnjemu, ker tag3:N določa
to tag3 se ne sme natisniti. · tag3:N v pravilu “tag1: jaz tag2:Z tag3:N *:V” je bolj smiselno, ker brez tag3:N
tagNatisnjenih je bilo mogoče 3 sporočil; napake za tag1 in tag2 bo izpisan z določeno (ali nižjo) stopnjo podrobnosti, vse ostalo pa bo izpisano privzeto.
Bolj zapleten primer filtriranjaampNaslednji delček dnevnika je bil pridobljen brez možnosti filtriranja:
load:0x40078000,len:13564 entry 0x40078d4c E (31) esp_image: slika pri 0x30000 ima neveljaven magični bajt W (31) esp_image: slika pri 0x30000 ima neveljaven način SPI 255 E (39) boot: Tovarniška particija aplikacij ni zagonska I (568) cpu_start: Pro cpu zagnan. I (569) heap_init: Inicializacija. RAM na voljo za dinamično dodelitev: I (603) cpu_start: Pro cpu zagnan D (309) light_driver: [light_init, 74]:status: 1, način: 2 D (318) vfs: esp_vfs_register_fd_range je uspešen za območje <54; 64) in VFS ID 1 I (328) wifi: naloga gonilnika wifi: 3ffdbf84, prio:23, sklad:4096, jedro=0
Zajeti izhod za možnosti filtriranja PRINT_FILTER="wifi esp_image:E light_driver:I" je podan spodaj:
E (31) esp_image: slika na 0x30000 ima neveljaven magični bajt I (328) wifi: naloga gonilnika wifi: 3ffdbf84, prio:23, sklad:4096, jedro=0
Možnosti »PRINT_FILTER="light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V" prikažejo naslednji izpis:
load:0x40078000,len:13564 entry 0x40078d4c I (569) heap_init: Inicializacija. RAM na voljo za dinamično dodelitev: D (309) light_driver: [light_init, 74]:status: 1, mode: 2
Znane težave z monitorjem IDF
Težave, opažene v sistemu Windows
· Puščične tipke, kot tudi nekatere druge tipke, ne delujejo v GDB zaradi omejitev konzole Windows. · Občasno se lahko ob izhodu oidf.pypexit zatakne do 30 sekund, preden se IDF Monitor nadaljuje. · Ko se ogdbpis izvaja, se lahko za kratek čas zatakne, preden začne komunicirati z GDBStub.
Espressif sistemi
34 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek standardne nastavitve orodne verige za Linux in macOS
Namestitev korak za korakom To je podroben načrt, ki vas bo vodil skozi postopek namestitve.
Nastavitev razvojnega okolja To so koraki za nastavitev ESP-IDF za vaš ESP32. · 1. korak: Namestitev predpogojev · 2. korak: Pridobitev ESP-IDF · 3. korak: Namestitev orodij · 4. korak: Nastavitev spremenljivk okolja · 5. korak: Prvi koraki na ESP-IDF
1. korak. Predpogoji za namestitev Če želite uporabljati ESP-IDF z ESP32, morate namestiti nekaj programskih paketov, ki temeljijo na vašem operacijskem sistemu. Ta navodila za namestitev vam bodo pomagala pri namestitvi vsega v sistemih Linux in macOS.
Za uporabnike Linuxa Za prevajanje z uporabo ESP-IDF boste potrebovali naslednje pakete. Ukaz, ki ga je treba izvesti, je odvisen od tega, katero distribucijo Linuxa uporabljate:
· Ubuntu in 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 in 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 je še vedno podprt, vendar je za boljšo uporabniško izkušnjo priporočljiva različica CentOS 8. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Opomba: · Za uporabo z ESP-IDF je potrebna različica CMake 3.16 ali novejša. Za namestitev ustrezne različice zaženite ukaz otools/idf_tools.py install cmake, če je vaša različica operacijskega sistema nima. · Če na zgornjem seznamu ne vidite svoje distribucije Linuxa, preverite njeno dokumentacijo, da ugotovite, kateri ukaz uporabiti za namestitev paketa.
Za uporabnike macOS bo ESP-IDF uporabljal različico Pythona, ki je privzeto nameščena v sistemu macOS. · Namestitev CMake in Ninja build: Če imate HomeBrew, lahko zaženete: brew install cmake ninja dfu-util Če imate MacPorts, lahko zaženete: sudo port install cmake ninja dfu-util Sicer pa si oglejte domači strani CMake in Ninja za prenose namestitvenih programov za macOS.
Espressif sistemi
35 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
· Za hitrejšo gradnjo je zelo priporočljivo namestiti tudi ccache. Če imate HomeBrew, lahko to storite z ukazom brew install ccache ali sudo port install ccache na MacPortih.
Opomba: Če se med katerim koli korakom prikaže takšna napaka: xcrun: napaka: neveljavna aktivna pot razvijalca (/Library/Developer/CommandLineTools), manjka xcrun na: /Library/Developer/CommandLineTools/usr/bin/xcrun
Nato boste morali za nadaljevanje namestiti orodja ukazne vrstice XCode. Namestite jih lahko z zagonom ukaza xcode-select –install.
Uporabniki Apple M1 Če uporabljate platformo Apple M1 in vidite napako, kot je ta: OPOZORILO: imenik za orodje xtensa-esp32-elf različice esp-2021r2-patch3-8.4.0 je prisoten, vendar orodja ni bilo mogoče najti NAPAKA: orodje xtensa-esp32-elf nima nameščenih različic. Za namestitev zaženite 'install.sh'.
ali: zsh: slab tip procesorja v izvedljivi datoteki: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Nato boste morali namestiti Apple Rosetta 2 z zagonom /usr/sbin/softwareupdate –install-rosetta –agree-to-license
Namestitev Pythona 3 Na podlagi opomb ob izdaji macOS Catalina 10.15 uporaba Pythona 2.7 ni priporočljiva in Python 2.7 ne bo privzeto vključen v prihodnje različice macOS. Preverite, kateri Python trenutno imate: python –version
Če je izhod podoben Pythonu 2.7.17, je vaš privzeti interpreter Python 2.7. Če je, preverite tudi, ali je Python 3 že nameščen v vašem računalniku: python3 –version
Če zgornji ukaz vrne napako, to pomeni, da Python 3 ni nameščen. Spodaj je prikazan zgornjiview korakov za namestitev Pythona 3.
· Namestitev s programom HomeBrew lahko izvedete na naslednji način: brew install python3
· Če imate MacPorts, lahko zaženete: sudo port install python38
2. korak. Pridobite ESP-IDF Za izdelavo aplikacij za ESP32 potrebujete programske knjižnice, ki jih Espressif ponuja v repozitoriju ESP-IDF. Če želite pridobiti ESP-IDF, se pomaknite do namestitvenega imenika in klonirajte repozitorij z ukazom git clone, pri čemer sledite spodnjim navodilom, specifičnim za vaš operacijski sistem. Odprite Terminal in zaženite naslednje ukaze:
Espressif sistemi
36 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –rekurzivno https://github.com/espressif/esp-idf.git
ESP-IDF bo prenesen v ~/esp/esp-idf. Oglejte si različice ESP-IDF za informacije o tem, katero različico ESP-IDF uporabiti v dani situaciji.
Korak 3. Nastavitev orodij Poleg ESP-IDF morate namestiti tudi orodja, ki jih uporablja ESP-IDF, kot so prevajalnik, razhroščevalnik, paketi Python itd., za projekte, ki podpirajo ESP32. cd ~/esp/esp-idf ./install.sh esp32
ali z ukazom Fish shell cd ~/esp/esp-idf ./install.fish esp32
Zgornji ukazi nameščajo orodja samo za ESP32. Če nameravate razvijati projekte za več čipov, jih morate vse našteti in zagnati npr.ample: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
ali z ukazom Fish shell cd ~/esp/esp-idf ./install.fish esp32,esp32s2
Za namestitev orodij za vse podprte ciljne sisteme zaženite naslednji ukaz: cd ~/esp/esp-idf ./install.sh all
ali z ukazom Fish shell cd ~/esp/esp-idf ./install.fish all
Opomba: Za uporabnike macOS, če se med katerim koli korakom prikaže takšna napaka:urlnapaka pri odpiranju [SSL: CERTIFICATE_VERIFY_FAILED] preverjanje potrdila ni uspelo: ni mogoče pridobiti lokalnega potrdila izdajatelja (_ssl.c:xxx)
Za namestitev potrdil lahko v mapi Python v računalniku zaženete ukaz Install Certificates.command. Za podrobnosti glejte Napaka pri prenosu med nameščanjem orodij ESP-IDF.
alternativa File Prenosi Namestitveni program orodij prenese številne fileje priloženo izdajam GitHub. Če je dostop do GitHub-a počasen, je mogoče nastaviti okoljsko spremenljivko, ki bo za prenose sredstev GitHub-a dala prednost strežniku za prenos Espressifns.
Opomba: Ta nastavitev nadzoruje samo posamezna orodja, prenesena iz izdaj GitHub, ne spreminja URLse uporablja za dostop do vseh Git repozitorijev.
Če želite pri nameščanju orodij dati prednost strežniku za prenos Espressif, pri zagonu datoteke install.sh uporabite naslednje zaporedje ukazov:
Espressif sistemi
37 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
cd ~/esp/esp-idf izvoz IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Prilagajanje namestitvene poti orodij Skripti, predstavljeni v tem koraku, namestijo orodja za prevajanje, ki jih zahteva ESP-IDF, znotraj domačega imenika uporabnika: $HOME/.espressif v Linuxu. Če želite orodja namestiti v drug imenik, pred zagonom namestitvenih skriptov nastavite okoljsko spremenljivko IDF_TOOLS_PATH. Prepričajte se, da ima vaš uporabniški račun zadostna dovoljenja za branje in pisanje te poti. Če spreminjate IDF_TOOLS_PATH, se prepričajte, da je nastavljena na isto vrednost vsakič, ko se izvedeta namestitveni skript (install.bat, install.ps1 ali install.sh) in izvozni skript (export.bat, export.ps1 ali export.sh).
4. korak. Nastavitev okoljskih spremenljivk Nameščena orodja še niso dodana okoljski spremenljivki PATH. Da bi bila orodja uporabna iz ukazne vrstice, je treba nastaviti nekatere okoljske spremenljivke. ESP-IDF ponuja drug skript, ki to stori. V terminalu, kjer boste uporabljali ESP-IDF, zaženite:
. $HOME/esp/esp-idf/export.sh
ali za ribe (podprto šele od različice 3.0.0 dalje):
$HOME/esp/esp-idf/export.fish
Bodite pozorni na presledek med začetno piko in potjo! Če nameravate esp-idf pogosto uporabljati, lahko ustvarite vzdevek za izvajanje export.sh:
1. Kopirajte in prilepite naslednji ukaz v svoj shellns profile (.profile, .bashrc, .zprofileitd.)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Osvežite konfiguracijo s ponovnim zagonom terminalske seje ali z zagonom ukaza source [pot do profile],
nprample, izvor ~/.bashrc. Zdaj lahko zaženete get_idf za nastavitev ali osvežitev okolja esp-idf v kateri koli terminalski seji. Tehnično lahko dodate export.sh v svoj shellns profile neposredno; vendar to ni priporočljivo. S tem se aktivira virtualno okolje IDF v vsaki terminalski seji (vključno s tistimi, kjer IDF ni potreben), kar izniči namen virtualnega okolja in verjetno vpliva na drugo programsko opremo.
5. korak. Prvi koraki na ESP-IDF Ker so izpolnjene vse zahteve, vas bo naslednja tema vodila skozi postopek začetka vašega prvega projekta. Ta vodnik vam bo pomagal pri prvih korakih uporabe ESP-IDF. Sledite temu vodniku, da začnete nov projekt na ESP32 ter zgradite, naložite in spremljate izhod naprave.
Opomba: Če še niste namestili programa ESP-IDF, pojdite na Namestitev in sledite navodilom, da dobite vso programsko opremo, potrebno za uporabo tega priročnika.
Začnite projekt Zdaj ste pripravljeni pripraviti svojo aplikacijo za ESP32. Lahko začnete s projektom getstarted/hello_world iz npr.amples imenik v ESP-IDF.
Pomembno: Sistem gradnje ESP-IDF ne podpira presledkov v poteh do ESP-IDF ali do projektov.
Kopirajte projekt get-started/hello_world v imenik ~/esp:
Espressif sistemi
38 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
Opomba: Obstaja vrsta npr.ample projekti v examples imenik v ESP-IDF. Vsak projekt lahko kopirate na enak način, kot je predstavljen zgoraj, in ga zaženete. Možna je tudi izgradnja exampdatoteke na mestu, ne da bi jih prej kopirali.
Priključite svojo napravo Zdaj priključite ploščo ESP32 na računalnik in preverite, pod katerimi serijskimi vrati je plošča vidna. Serijska vrata imajo naslednje vzorce poimenovanja:
· Linux: začenši z /dev/tty · macOS: začenši z /dev/cu. Če niste prepričani, kako preveriti ime serijskih vrat, si oglejte članek Vzpostavitev serijske povezave z ESP32 za podrobnosti.
Opomba: ime vrat naj bo pri roki, saj ga boste potrebovali v naslednjih korakih.
Konfigurirajte svoj projekt Pomaknite se v imenik hello_world, nastavite ESP32 kot cilj in zaženite pripomoček za konfiguracijo projekta menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
Po odprtju novega projekta morate najprej nastaviti cilj z ukazom idf.py set-target esp32. Upoštevajte, da bodo obstoječe gradnje in konfiguracije v projektu, če obstajajo, v tem postopku izbrisane in inicializirane. Cilj lahko shranite v okoljsko spremenljivko, da ta korak sploh preskočite. Za dodatne informacije glejte Izbira ciljnega čipa: set-target. Če so bili prejšnji koraki opravljeni pravilno, se prikaže naslednji meni:
Slika 17: Konfiguracija projekta – domače okno Ta meni uporabljate za nastavitev spremenljivk, specifičnih za projekt, npr. imena in gesla omrežja Wi-Fi, hitrosti procesorja itd. Nastavitev projekta z menuconfig lahko preskočite za hello_worldp, ker ta npr.ampteče z
Espressif sistemi
39 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
privzeta konfiguracija.
Pozor: Če uporabljate ploščo ESP32-DevKitC z modulom ESP32-SOLO-1 ali ploščo ESP32-DevKitM-1 z modulom ESP32-MIN1-1(1U), pred programiranjem v meniju menuconfig omogočite enojni način (CONFIG_FREERTOS_UNICORE).amples.
Opomba: Barve menija se lahko v vašem terminalu razlikujejo. Videz lahko spremenite z možnostjo –style. Za več informacij zaženite idf.py menuconfig –help.
Če uporabljate eno od podprtih razvojnih plošč, lahko pospešite svoj razvoj z uporabo paketa za podporo plošč. Za več informacij glejte Dodatne nasvete.
Zgradite projekt Projekt zgradite tako, da zaženete:
idf.py build
Ta ukaz bo prevedel aplikacijo in vse komponente ESP-IDF, nato bo ustvaril zagonski nalagalnik, tabelo particij in binarne datoteke aplikacije.
$ idf.py build Izvajanje cmake v imeniku /path/to/hello_world/build Izvajanje “cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Opozori na neinicializirane vrednosti. — Najdena datoteka Git: /usr/bin/git (najdena različica “2.17.0”) — Gradnja prazne komponente aws_iot zaradi konfiguracije — Imena komponent: … — Poti komponent: …
… (več vrstic izhoda sistema za gradnjo)
[527/527] Generiranje datoteke hello_world.bin esptool.py v2.3.1
Gradnja projekta je končana. Za programiranje flash zaženite ta ukaz: ../../../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 ali zaženite 'idf.py -p PORT flash'
Če ni napak, se bo gradnja končala z generiranjem binarne vdelane programske opreme .bin files.
Programska oprema za bliskovni pogon Na ploščo ESP32 prenesite binarne datoteke, ki ste jih pravkar zgradili (bootloader.bin, partition-table.bin in hello_world.bin), tako da zaženete:
idf.py -p PORT [-b BAUD] utripa
PORT zamenjajte z imenom serijskih vrat vaše matične plošče ESP32. Hitrost prenosa podatkov bliskovnega pogona lahko spremenite tudi tako, da BAUD zamenjate z želeno hitrostjo prenosa podatkov. Privzeta hitrost prenosa podatkov je 460800. Za več informacij o argumentih idf.py glejte idf.py.
Opomba: Možnost flash samodejno gradi in naloži projekt, zato zagon ukaza idf.py build ni potreben.
Espressif sistemi
40 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Ste med programiranjem naleteli na težave? Če zaženete dani ukaz in vidite napake, kot je »Failed to connectp« (Ni uspelo vzpostaviti povezave), je za to lahko več razlogov. Eden od razlogov so lahko težave, na katere naleti esptool.py, pripomoček, ki ga pokliče sistem za gradnjo za ponastavitev čipa, interakcijo z zagonskim nalagalnikom ROM-a in programiranje vdelane programske opreme. Preprosta rešitev, ki jo lahko poskusite, je ročna ponastavitev, opisana spodaj, in če to ne pomaga, lahko najdete več podrobnosti o morebitnih težavah v odpravljanju težav.
esptool.py samodejno ponastavi ESP32 z uveljavljanjem krmilnih linij DTR in RTS pretvornika USB v serijski vmesnik, npr. FTDI ali CP210x (za več informacij glejte Vzpostavitev serijske povezave z ESP32). Krmilne linije DTR in RTS so nato povezane z priključkoma GPIO0 in CHIP_PU (EN) ESP32, s čimer se spremeni glasnost.tagRavni DTR in RTS bodo zagnale ESP32 v način prenosa vdelane programske opreme. Kot npr.ampTorej, preverite shemo za razvojno ploščo ESP32 DevKitC.
Na splošno ne bi smeli imeti težav z uradnimi razvojnimi ploščami esp-idf. Vendar pa esptool.py ne more samodejno ponastaviti vaše strojne opreme v naslednjih primerih:
· Vaša strojna oprema nima linij DTR in RTS, povezanih z GPIO0 in CHIP_PU · Linije DTR in RTS so konfigurirane drugače · Takšnih serijskih krmilnih linij sploh ni
Odvisno od vrste strojne opreme, ki jo imate, je morda mogoče ročno preklopiti ploščo ESP32 v način prenosa vdelane programske opreme (ponastavitev).
· Za razvojne plošče, ki jih proizvaja Espressif, so te informacije na voljo v ustreznih priročnikih za začetek uporabe ali uporabniških priročnikih. Na primerampZa ročno ponastavitev razvojne plošče ESP-IDF držite pritisnjen gumb Boot (GPIO0) in pritisnite gumb EN (CHIP_PU).
· Za druge vrste strojne opreme poskusite spustiti GPIO0.
Normalno delovanje Med utripanjem boste videli izhodni dnevnik, podoben naslednjemu:
… 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 Serijska vrata /dev/ttyUSB0 Povezovanje…….._ Čip je ESP32D0WDQ6 (revizija 0) Značilnosti: WiFi, BT, dvojedrni procesor, shema kodiranja Brez Kristal je 40MHz MAC: 24:0a:c4:05:b9:14 Nalaganje stuba… Stub se izvaja… Stub se izvaja… Spreminjanje hitrosti prenosa na 460800 Spremenjeno. Konfiguriranje velikosti pomnilnika flash ... Stisnjenih 3072 bajtov na 103 ... Pisanje pri 0x00008000 ... (100 %) Zapisano 3072 bajtov (103 stisnjenih) pri 0x00008000 v 0.0 sekundah (efektivno 5962.8 kbit/s) ... Zgoščena vrednost podatkov preverjena. Stisnjenih 26096 bajtov na 15408 ... Pisanje pri 0x00001000 ... (100 %) Zapisano 26096 bajtov (15408 stisnjenih) pri 0x00001000 v 0.4 sekundah (efektivno 546.7 kbit/s) ... Zgoščena vrednost podatkov preverjena. Stisnjenih 147104 bajtov na 77364… Pisanje pri 0x00010000… (20 %) Pisanje pri 0x00014000… (40 %) Pisanje pri 0x00018000… (60 %) Pisanje pri 0x0001c000… (80 %)
(nadaljevanje na naslednji strani)
Espressif sistemi
41 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
(nadaljevanje s prejšnje strani) Pisanje pri 0x00020000… (100 %) Zapisano 147104 bajtov (77364 stisnjenih) pri 0x00010000 v 1.9 sekunde (efektivno 615,5 kbit/s)… Zgoščena vrednost podatkov preverjena.
Zapuščam ... Trdna ponastavitev prek RTS pin ... Končano
Če do konca postopka bliskovnega programiranja ni težav, se bo plošča znova zagnala in zagnala aplikacijo theohello_worldp. Če želite namesto zagona idf.py uporabiti Eclipse ali VS Code IDE, si oglejte Eclipse Plugin, VSCode Extension.
Spremljanje izhoda Če želite preveriti, ali se ohello_worldpis dejansko izvaja, vnesite idf.py -p PORT monitor (ne pozabite zamenjati PORT z imenom vaših serijskih vrat). Ta ukaz zažene aplikacijo IDF Monitor:
$ idf.py -p monitor Izvajanje idf_monitor v imeniku […]/esp/hello_world/build Izvajanje “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf”… — idf_monitor vklopljen 115200 —– Izhod: Ctrl+] | Meni: Ctrl+T | Pomoč: Ctrl+T, ki mu sledi Ctrl+H –ets 8. junij 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8. junij 2016 00:22:57 …
Ko se dnevniki zagona in diagnostike pomaknejo navzgor, bi morala aplikacija natisniti napis oHello world!.
... Pozdravljen, svet! Ponovni zagon čez 10 sekund ... To je čip esp32 z dvema jedroma CPU-ja, WiFi/BT/BLE, silicijevim procesorjem revizije 1, 2 MB zunanjega bliskovnega pomnilnika. Najmanjša velikost prostega pomnilnika: 298968 bajtov. Ponovni zagon čez 9 sekund ... Ponovni zagon čez 8 sekund ... Ponovni zagon čez 7 sekund ...
Za izhod iz IDF monitorja uporabite bližnjico Ctrl+]. Če IDF monitor kmalu po nalaganju odpove ali če namesto zgornjih sporočil vidite naključne napake, podobne tistim, ki so navedene spodaj, vaša plošča verjetno uporablja 26 MHz kristal. Večina razvojnih plošč uporablja 40 MHz, zato ESP-IDF to frekvenco uporablja kot privzeto vrednost.
Če imate takšno težavo, storite naslednje:
1. Zaprite monitor. 2. Vrnite se v meni konfiguracije. 3. Pojdite v Konfiguracija komponent > Nastavitve strojne opreme > Glavna konfiguracija XTAL > Glavna XTAL
frekvenco, nato spremenite CONFIG_XTAL_FREQ_SEL na 26 MHz. 4. Po tem znova sestavite in naložite aplikacijo.
Espressif sistemi
42 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
V trenutni različici ESP-IDF so glavne frekvence XTAL, ki jih podpira ESP32, naslednje:
· 26 MHz · 40 MHz
Opomba: Gradnjo, programiranje in spremljanje lahko združite v en korak tako, da zaženete: idf.py -p PORT flash monitor
Glejte tudi: · IDF Monitor za priročne bližnjice in več podrobnosti o uporabi IDF monitorja. · idf.py za celoten seznam ukazov in možnosti idf.py.
To je vse, kar potrebujete za začetek uporabe ESP32! Zdaj ste pripravljeni poskusiti še kakšnega drugega ...ampdatoteke ali pa se lotite razvoja lastnih aplikacij.
Pomembno: Nekateri bivšiampDatoteke ne podpirajo ESP32, ker zahtevana strojna oprema ni vključena v ESP32, zato je ni mogoče podpreti. Če gradite exampProsim, preverite datoteko README file za tabelo Podprti cilji. Če je ta prisotna, vključno s ciljem ESP32, ali tabela sploh ne obstaja, npr.ampDelal bo na ESP32.
Dodatni nasveti
Težave z dovoljenji /dev/ttyUSB0 Pri nekaterih distribucijah Linuxa se lahko pri umetnem zagonu ESP32 prikaže sporočilo o napaki »Neuspešno odpiranje vrat /dev/ttyUSB0«. To lahko rešite tako, da trenutnega uporabnika dodate v skupino za klicanje.
Združljivost s Pythonom ESP-IDF podpira Python 3.7 ali novejši. Priporočljivo je, da nadgradite operacijski sistem na novejšo različico, ki izpolnjuje to zahtevo. Druge možnosti vključujejo namestitev Pythona iz izvorne kode ali uporabo sistema za upravljanje različic Pythona, kot je pyenv.
Začnite s paketom podpore za ploščo (Board Support Package) Za pospešitev izdelave prototipov na nekaterih razvojnih ploščah lahko uporabite pakete podpore za plošče (Board Support Packages - BSP), ki inicializacijo določene plošče olajšajo z nekaj klici funkcij. BSP običajno podpira vse strojne komponente, ki so na voljo na razvojni plošči. Poleg definicije razporeditve pinov in funkcij inicializacije je BSP dobavljen z gonilniki za zunanje komponente, kot so senzorji, zasloni, zvočni kodeki itd. BSP-ji se distribuirajo prek upravitelja komponent IDF, zato jih je mogoče najti v registru komponent IDF. Tukaj je npr.ampLektor na temo, kako dodati ESP-WROVER-KIT BSP v svoj projekt: idf.py add-dependency esp_wrover_kit
Več exampPodatke o uporabi BSP najdete v BSP exampmapa les.
Nasvet: Posodabljanje ESP-IDF Priporočljivo je občasno posodabljati ESP-IDF, saj novejše različice odpravljajo napake in/ali zagotavljajo nove funkcije. Upoštevajte, da ima vsaka večja in manjša izdaja ESP-IDF povezano obdobje podpore, in ko se ena izdaja bliža koncu življenjske dobe (EOL), vse uporabnike spodbujamo, da nadgradijo svoje projekte na novejše izdaje ESP-IDF. Za več informacij o obdobjih podpore glejte Različice ESP-IDF.
Espressif sistemi
43 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 1. Začetek
Najenostavnejši način za posodobitev je, da izbrišete obstoječo mapo esp-idf in jo znova klonirate, kot da bi izvedli začetno namestitev, opisano v 2. koraku. Pridobite ESP-IDF. Druga rešitev je, da posodobite le tisto, kar se je spremenilo. Postopek posodobitve je odvisen od različice ESP-IDF, ki jo uporabljate. Po posodobitvi ESP-IDF znova zaženite namestitveni skript, če nova različica ESP-IDF zahteva drugačne različice orodij. Glejte navodila v 3. koraku. Namestite orodja. Ko so nova orodja nameščena, posodobite okolje s skriptom za izvoz. Glejte navodila v 4. koraku. Nastavite spremenljivke okolja.
Sorodni dokumenti · Vzpostavitev serijske povezave z ESP32 · Vtičnik Eclipse · Razširitev VSCode · Monitor IDF
1.4 Zgradite svoj prvi projekt
Če že imate nameščen ESP-IDF in ne uporabljate IDE, lahko svoj prvi projekt sestavite iz ukazne vrstice po navodilih Zaženi projekt v sistemu Windows ali Zaženi projekt v sistemih Linux in macOS.
1.5 Odstranite ESP-IDF
Če želite odstraniti ESP-IDF, sledite navodilom za odstranitev ESP-IDF.
Espressif sistemi
44 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
2. poglavje
API Reference
2.1 Konvencije API-ja
Ta dokument opisuje konvencije in predpostavke, skupne vmesnikom za programiranje aplikacij (API) ESP-IDF. ESP-IDF ponuja več vrst programskih vmesnikov:
· Funkcije, strukture, naštevanja, definicije tipov in makri predprocesorja, deklarirani v javni glavi filekomponent ESPIDF. Opise teh funkcij, struktur in tipov vsebujejo različne strani v razdelku Referenca API v programskem priročniku.
· Funkcije sistema za gradnjo, vnaprej določene spremenljivke in možnosti. Te so dokumentirane v priročniku za sistem za gradnjo. · Možnosti Kconfig se lahko uporabljajo v kodi in v sistemu za gradnjo (CMakeLists.txt) files. · Orodja za gostitelje in njihovi parametri ukazne vrstice so prav tako del vmesnika ESP-IDF. ESP-IDF je sestavljen iz komponent, napisanih posebej za ESP-IDF, kot tudi iz knjižnic drugih proizvajalcev. V nekaterih primerih je knjižnici drugega proizvajalca dodan ovoj, specifičen za ESP-IDF, ki zagotavlja vmesnik, ki je bodisi enostavnejši bodisi bolje integriran s preostalimi funkcijami ESP-IDF. V drugih primerih je razvijalcem aplikacij predstavljen izvirni API knjižnice drugega proizvajalca. Naslednji razdelki pojasnjujejo nekatere vidike API-jev ESP-IDF in njihovo uporabo.
2.1.1 Obvladovanje napak
Večina API-jev ESP-IDF vrne kode napak, definirane s tipom esp_err_t. Za več informacij o pristopih k obravnavanju napak glejte razdelek Obravnavanje napak. Referenca kod napak vsebuje seznam kod napak, ki jih vrnejo komponente ESP-IDF.
2.1.2 Konfiguracijske strukture
Pomembno: Pravilna inicializacija konfiguracijskih struktur je pomemben del združljivosti aplikacije s prihodnjimi različicami ESP-IDF.
Večina inicializacijskih ali konfiguracijskih funkcij v ESP-IDF kot argument sprejme kazalec na konfiguracijsko strukturo. Na primerample:
45
Poglavje 2. Referenca API-ja
const esp_timer_create_args_t my_timer_args = { .callback = &callback_my_timer, .arg = callback_args, .name = “my_timer”
}; esp_timer_handle_t moj_časovnik; esp_err_t err = esp_timer_create(&argumenti_mojega_časovnika, &moj_časovnik);
Inicializacijske funkcije nikoli ne shranijo kazalca na konfiguracijsko strukturo, zato je varno dodeliti strukturo na skladu.
Aplikacija mora inicializirati vsa polja strukture. Naslednje je napačno:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Napačno! Polji .arg in .name nista inicializirani */ esp_timer_create(&my_timer_args, &my_timer);
Večina bivših ESP-IDFampZa inicializacijo struktur uporabljajo inicializatorje, določene s C99, saj zagotavljajo jedrnat način nastavitve podmnožice polj in inicializacije preostalih polj z ničlo:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Pravilno, polji .arg in .name sta inicializirani z ničlo */
};
Jezik C++ ne podpira sintakse določenih inicializatorjev vse do C++20, vendar jo prevajalnik GCC delno podpira kot razširitev. Pri uporabi API-jev ESP-IDF v kodi C++ lahko razmislite o uporabi naslednjega vzorca:
esp_timer_create_args_t my_timer_args = {}; /* Vsa polja so inicializirana z ničlo */ my_timer_args.callback = &my_timer_callback;
Privzeti inicializatorji
Za nekatere konfiguracijske strukture ESP-IDF ponuja makre za nastavitev privzetih vrednosti polj:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG se razširi v določen inicializator.
Sedaj so vsa polja nastavljena na privzete vrednosti. Vsako polje je še vedno mogoče spremeniti: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Priporočljivo je uporabiti privzete makre inicializatorja, kadar koli so na voljo za določeno konfiguracijsko strukturo.
2.1.3 Zasebni API-ji
Določena glava filev ESP-IDF vsebujejo API-je, namenjene uporabi samo v izvorni kodi ESP-IDF in ne v aplikacijah. Takšna glava fileKomponente pogosto vsebujejo private ali esp_private v svojem imenu ali poti. Nekatere komponente, kot je hal, vsebujejo samo zasebne API-je. Zasebni API-ji se lahko med manjšimi izdajami ali izdajami popravkov odstranijo ali spremenijo na nezdružljiv način.
2.1.4 Komponente v example projekti
ESP-IDF exampDatoteke vsebujejo različne projekte, ki prikazujejo uporabo API-jev ESP-IDF. Da bi zmanjšali podvajanje kode v exampV komponentah je definiranih nekaj pogostih pomočnikov, ki jih uporablja več examples.
Espressif sistemi
46 Pošlji povratne informacije o dokumentu
Izdaja v5.0.9
Poglavje 2. Referenca API-ja
To vključuje komponente, ki se nahajajo
Dokumenti / Viri
![]() |
Razvojna plošča Espressif Systems ESP32 Dev Kitc [pdf] Uporabniški priročnik Razvojna plošča ESP32 Dev Kitc, ESP32, Razvojna razvojna plošča Kitc, Razvojna plošča Kitc, Razvojna plošča, Plošča |