Placa de desenvolvemento ESP32 Dev Kitc

Información do produto

Especificacións

  • Produto: ESP32
  • Guía de programación: ESP-IDF
  • Versión de lanzamento: v5.0.9
  • Fabricante: Espressif Systems
  • Data de lanzamento: 16 de maio de 2025

Instrucións de uso do produto

1. Comeza

Antes de comezar co ESP32, familiarícese co
seguinte:

1.1 Introdución

Coñece as funcionalidades e capacidades básicas do
ESP32.

1.2 O que necesitas

Asegúrate de ter o hardware e o software necesarios:

  • Hardware: Consulta a lista de hardware necesario
    compoñentes.
  • Software: Instala o software necesario
    compoñentes.

1.3 Instalación

Siga estes pasos para instalar o IDE e configurar o
ambiente:

  • IDE: Instala o IDE recomendado para
    programación do ESP32.
  • Instalación manual: Configurar manualmente o
    ambiente se é necesario.

1.4 Crea o teu primeiro proxecto

Crea e constrúe o teu proxecto inicial usando o ESP32.

1.5 Desinstalar ESP-IDF

Se é necesario, aprenda a desinstalar o ESP-IDF do seu
sistema.

2. Referencia da API

Consulta a documentación da API para obter información detallada sobre
protocolos de aplicación, xestión de erros e configuración
estruturas.

Preguntas frecuentes (FAQ)

P: Como podo solucionar problemas comúns co ESP32?

R: Consulte a sección de resolución de problemas da guía de programación
ou visitar o fabricante websitio para recursos de apoio.

P: Podo usar ESP-IDF con outros microcontroladores?

R: O ESP-IDF está deseñado especificamente para ESP32, pero pode que atopes
Compatibilidade con outros microcontroladores Espressif.

ESP 32
Guía de programación ESP-IDF
Lanzamento v5.0.9 Sistemas Espressif 16 de maio de 2025

Índice

Índice

i

1 Comeza

3

1.1 Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 O que necesitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3 Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.1 IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.2 Instalación manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.4 Crea o teu primeiro proxecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1.5 Desinstalar ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2 Referencia da API

45

2.1 Convencións da API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.1 Xestión de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.2 Estruturas de configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.3 API privadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.4 Compoñentes en exampos proxectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.5 Estabilidade da API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.2 Protocolos de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.1 Porto ASIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.2.5 Cliente HTTP ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

2.2.6 Control local ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2.2.7 Ligazón escrava serie ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

2.2.8 Paquete de certificados ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

2.2.9 Servidor HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

2.2.10 Servidor HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

2.2.11 Eco ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

2.2.12 Servizo mDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.13 TLS de Mbed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.14 Capa de rede IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3 API de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.1 Bluetooth® Común . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.2 Bluetooth® de baixo consumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

2.3.3 Bluetooth® clásico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

2.3.4 Controlador e HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

2.3.6 API de host baseadas en NimBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767

2.4 Referencia dos códigos de erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769

2.5 API de rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.2 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899

2.5.3 Fío . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936

i

2.5.4 ESP-NETIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 Capa de rede IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Capa de aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 API de periféricos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Controlador de modo único do conversor analóxico-dixital (ADC). . . . . . . . . . . . . . . . . 977 2.6.2 Controlador de modo continuo do conversor analóxico-dixital (ADC). . . . . . . . . . . . . . . 986 2.6.3 Controlador de calibración do conversor analóxico-dixital (ADC). . . . . . . . . . . . . . . . . . . 993 2.6.4 Árbore de reloxos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Conversor dixital-analóxico (DAC). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO e RTC GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Temporizador de propósito xeral (GPTimer). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Circuíto interintegrado (I2C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Son entre CI (I2S). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Control de LED (LEDC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Modulador de ancho de pulso de control do motor (MCPWM). . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Contador de pulsos (PCNT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Transceptor de control remoto (RMT). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 Requisitos de pull-up de SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 Controlador de host SDMMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 Controlador de host SPI SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 Controlador escravo da tarxeta SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Modulación sigma-delta (SDM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 Controlador mestre SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 Controlador escravo SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (Elemento seguro) . . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Sensor táctil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Interface automotriz de dous fíos (TWAI). . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Receptor/transmisor asíncrono universal (UART). . . . . . . . . . . . . . . . . . 1317 2.7 Configuración do proxecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Menú de configuración do proxecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Usando sdkconfig.defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Regras de formatado de Kconfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Compatibilidade con versións anteriores das opcións de Kconfig. . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Referencia das opcións de configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 API de aprovisionamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Comunicación por protocolo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Aprovisionamento unificado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Aprovisionamento de Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 API de almacenamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileSoporte do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 Utilidade de fabricación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 Biblioteca de almacenamento non volátil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 Utilidade Xerador de Particións NVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 Controlador SD/SDIO/MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 API Flash SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 SPIFFS Filesistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Virtual filecompoñente do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 API de nivelación de desgaste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 API do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 Formato de imaxe da aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 Rastrexo a nivel de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 Chamada a función con pila externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 Revisión do chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 Consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 Xestor de eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Códigos de erro e funcións auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii

2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 Biblioteca de bucles de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (máis deview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 FreeRTOS (ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 FreeRTOS (Características adicionais) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 Asignación de memoria dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 Depuración de memoria dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 Temporizador de alta resolución (temporizador ESP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 API internas e inestables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 Chamada entre procesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 Asignación de interrupcións . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Biblioteca de rexistro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 API do sistema diversas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 Actualizacións por radio (OTA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 Monitor de rendemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 Xestión de enerxía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 Compatibilidade con fíos POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 Xeración de números aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 Modos de suspensión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 Capacidades do SoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 Hora do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 A API de asignación de Himem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 Programación do coprocesador ULP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 Vixilantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161

3 Referencia de hardware

2167

3.1 Comparación de series de chips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167

3.1.1 Documentos relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170

4 Guías da API

2171

4.1 Biblioteca de rastrexo a nivel de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.1 Enribaview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.2 Modos de funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.3 Opcións de configuración e dependencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172

4.1.4 Como usar esta biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173

4.2 Fluxo de inicio da aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181

4.2.1 Primeiro stage cargador de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.2 segundo stage cargador de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.3 Inicio da aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183

4.3 Bluetooth® Clásico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.3.1 Enribaview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.4 Bluetooth® de baixo consumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.1 Enribaview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.2 Comezar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191

4.4.3 Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240

4.5 Cargador de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284

4.5.1 Compatibilidade do cargador de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.2 Nivel de rexistro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.3 Restablecemento de fábrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.4 Arranque desde o firmware de proba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.5 Reversión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.6 Organismo de vixilancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.7 Tamaño do cargador de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.8 Arranque rápido desde o modo de repouso profundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.9 Cargador de arranque personalizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.6 Sistema de compilación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.1 Enribaview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.2 Usando o sistema de compilación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289

iii

4.6.3 Exampo Proxecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 Proxecto CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Compoñentes CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 Configuración de compoñentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 Definicións do preprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 Requisitos dos compoñentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Anulación de partes do proxecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 Compoñentes só de configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 Depuración de CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 ExampCompoñente CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 Valores predeterminados de sdkconfig personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 Argumentos de Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 Compilación do cargador de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 Escrición de compoñentes CMake puros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 Uso de proxectos CMake de terceiros con compoñentes . . . . . . . . . . . . . . . . . . . . . 2306 4.6.18 Uso de bibliotecas precompiladas con compoñentes . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 Uso de ESP-IDF en proxectos de CMake personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 API do sistema de compilación de CMake de ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File Compilacións globais e incrementais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 Metadatos do sistema de compilación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 Partes internas do sistema de compilación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.24 Migración desde ESP-IDF GNU Make System . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Volcado do núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 Sobreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 Configuracións . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 Gardar o volcado do núcleo na memoria flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.4 Imprimir o volcado do núcleo a UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 Funcións ROM en trazas inversas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 Volcado de variables baixo demanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 Executando espcoredump.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 Esquemas de activación de sono profundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 Regras para os esquemas de activación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Implementación dun stub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 Carga de código na memoria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 Carga de datos na memoria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 CRC Comprobación de fragmentos de activación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 Xestión de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 Máis deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.2 Códigos de erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 Conversión de códigos de erro en mensaxes de erro . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.4 Macro ESP_ERROR_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 Macro ESP_ERROR_CHECK_WITHOUT_ABORT . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 Macro ESP_RETURN_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 Macro ESP_GOTO_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 Macro ESP_RETURN_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 Macro ESP_GOTO_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 COMPROBAR MACROS Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 Patróns de xestión de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 Excepcións de C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 Máis deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 Conceptos de ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 4.10.4 Construción dunha rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 Xestión dunha rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 Transmisión de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Cambio de canles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv

4.10.8 Rendemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 Notas adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 Xestión de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Eventos Wi-Fi, Ethernet e IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 Eventos de malla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 Eventos Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 Erros fatais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 Máis deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Xestor de pánico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Volcado de rexistro e trazado inverso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 Ficha de GDB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 Tempo límite do vixilante RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Erros na meditación do gurú. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Outros erros fatais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Cifrado de Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Fusibles electrónicos relevantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Proceso de cifrado flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Configuración do cifrado de Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Posibles fallos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 Estado do cifrado flash de ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Lectura e escritura de datos en memoria Flash cifrada. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Actualización de Flash cifrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Desactivación do cifrado de Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Puntos clave sobre o cifrado flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Limitacións do cifrado flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Cifrado flash e arranque seguro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Funcións avanzadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Detalles técnicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Abstracción de hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Arquitectura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 Capa LL (de baixo nivel). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (Capa de abstracción de hardware). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Interrupcións de alto nivel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Níveis de interrupción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Notas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.1 Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 Como funciona? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 Seleccionando JTAG Adaptador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 Configuración de OpenOCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 Configuración do destino ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 Iniciando o depurador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Depuración de exemplosamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 Compilando OpenOCD a partir das fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 Consellos e peculiaridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 Documentos relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 Xeración de scripts de linkers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 Máis deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 Inicio rápido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.3 Funcións internas da xeración de scripts de linkers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 API compatibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 API de sockets BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 API de Netconn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 Tarefa lwIP FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 Compatibilidade con IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 Modificacións personalizadas de esp-lwip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v

4.18.7 Optimización do rendemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 Tipos de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (RAM de datos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (RAM de instrucións) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (código executado desde flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (datos almacenados en flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 Memoria RTC lenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 Memoria RTC RÁPIDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 Requisito de compatibilidade con DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 Búfer DMA na pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 Modos da pila OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 Como escribir unha aplicación OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 O enrutador de fronteira OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Táboas de particións . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 Máis deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 Táboas de particións integradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 Creación de táboas personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.4 Xeración da táboa de particións binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 Comprobacións do tamaño da partición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 Actualización da táboa de particións . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 Ferramenta de partición (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 Rendemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 Como optimizar o rendemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 Guías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451 4.23 Calibración de RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.1 Calibración parcial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 Calibración completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 Sen calibración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 Datos de inicialización de PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 Referencia da API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 Arranque seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 Proceso de arranque seguro sobreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 Tamaño do cargador de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.5 Como activar o arranque seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 Cargador de arranque de software reinstalable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 Xeración da clave de sinatura de arranque seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 Sinatura remota de imaxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 Prácticas recomendadas para o arranque seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 Detalles técnicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 Arranque seguro e cifrado de flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Verificación da aplicación asinada sen arranque seguro por hardware . . . . . . . . . . . . . . . . . . 2478 4.24.13 Funcións avanzadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 Arranque seguro V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 Avanzadotages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 Proceso de arranque seguro V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 Formato do bloque de sinatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.5 Recheo seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 Verificación dun bloque de sinatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 Verificación dunha imaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Tamaño do cargador de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 Uso de eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 Como activar o arranque seguro V2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 Restricións despois de activar o arranque seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 Xeración da clave de sinatura de arranque seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi

4.25.13 Sinatura remota de imaxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 Prácticas recomendadas para o arranque seguro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 Detalles técnicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 Arranque seguro e cifrado de flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Verificación da aplicación asinada sen arranque seguro por hardware . . . . . . . . . . . . . . . . . . 2484 4.25.18 Funcións avanzadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 Compatibilidade con RAM externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Configuración da RAM externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 Restricións . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 Fallo ao inicializar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 Revisións de chips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27 Almacenamento local de fíos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.1 Máis deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 API nativa de FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 API de Pthread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 C11 Estándar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.1 Interfaz de IDF: idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 Imaxe de Docker de IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 Instalador de Windows de IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 Xestor de compoñentes de IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 Ferramentas descargables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 Probas unitarias en ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 Casos de proba normais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 Casos de proba multidispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 Multi-stage Casos de proba. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Probas para diferentes obxectivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Creación da aplicación de probas unitarias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Execución de probas unitarias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Código de temporización con temporizador compensado en caché. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Simulacros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Probas unitarias en Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Probas de software integrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Probas unitarias de IDF nun host Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlador Wi-Fi 2520 4.31. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 Lista de características Wi-Fi do ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Como escribir unha aplicación wifi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 Código de erro da API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Inicialización dos parámetros da API Wi-Fi de ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 Modelo de programación Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 Descrición do evento Wi-Fi de ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Escenario xeral da estación Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 Escenario xeral do punto de acceso Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 Escaneado Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 Escenario de conexión da estación Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 Conectar a estación Wi-Fi ESP32 cando se atopan varios puntos de acceso. . . . . . . . . . . . . 2543 4.31.12 Reconexión Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Tempo límite da baliza Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 Configuración Wi-Fi do ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy Connect™ (DPP). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Xestión de redes sen fíos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Medición de recursos radioeléctricos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Transición rápida de BSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 Modo de aforro de enerxía do Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 Rendemento Wi-Fi de ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii

4.31.21 Envío de paquetes Wi-Fi 80211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Modo rastreador Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 Antenas múltiples Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 Información do estado da canle Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Información do estado da canle Wi-Fi Configurar . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.27 QoS wifi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 Wi-Fi AMSDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 Fragmento de Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 Usuario inscrito en WPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 Uso do búfer de Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Como mellorar o rendemento da Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Configuración do menú Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 Resolución de problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 Seguridade wifi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 Funcións de seguridade wifi do ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.2 Tramas de xestión protexidas (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi empresarial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-Persoal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced Open™ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 Coexistencia de RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 Máis deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Escenario de coexistencia compatible para ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 Mecanismo e política de coexistencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 Como usar a funcionalidade de coexistencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 Compilacións reproducibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 Razóns para as compilacións non reproducibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Activación de compilacións reproducibles en ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 Como se conseguen as compilacións reproducibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 Compilacións reproducibles e depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 Factores que aínda afectan as compilacións reproducibles . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 Guía do usuario do modo de baixo consumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578

5 Guías de Migración

2579

5.1 Guía de migración de ESP-IDF 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

5.1.1 Migración de 4.4 a 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

6 Bibliotecas e Frameworks

2611

6.1 Marcos da nube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.1 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.3 Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.4 Núcleo da IoT de Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.5 Aliyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.6 Joylink IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.7 Tencent IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.8 Tencentyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.9 Baidu IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2 Marcos de deseño expresivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.1 Marco de desenvolvemento de audio de Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.3 Biblioteca DSP de Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.4 Marco de desenvolvemento ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.5 ESP-OMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.6 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.7 Solución ESP-IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.8 Protocolos ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

viii

6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614

Guía de 7 contribucións

2615

7.1 Como contribuír . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.2 Antes de contribuír . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.3 Proceso de solicitude de extracción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.4 Parte xurídica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5 Documentos relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5.1 Guía de estilo do marco de desenvolvemento de IoT de Espressif . . . . . . . . . . . . . . . . . . . . . 2616

7.5.2 Instalar o Hook de pre-commit para o proxecto ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . 2623

7.5.3 Documentación do código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624

7.5.4 Creando Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629

7.5.5 Modelo de documentación da API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630

7.5.6 Acordo de colaborador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632

7.5.7 Guía de cabeceira de dereitos de autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634

7.5.8 Probas ESP-IDF coa guía Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635

8 Versións ESP-IDF

2645

8.1 Versións . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.2 Con que versión debería comezar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.3 Esquema de versións . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.4 Períodos de soporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646

8.5 Comprobación da versión actual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647

8.6 Fluxo de traballo de Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7 Actualización de ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7.1 Actualización á versión estable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.2 Actualización a unha versión preliminar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.3 Actualización á rama mestra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.4 Actualización a unha rama de publicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650

9 Recursos

2651

9.1 Plataforma de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.1 Que é PlatformIO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.2 Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.3 Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.4 Titoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.5 Proxecto Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.6 Próximos pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.2 Ligazóns útiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

10 Dereitos de autor e licenzas

2653

10.1 Dereitos de autor do software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.1 Compoñentes do firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.2 Documentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.2 Dereitos de autor do código fonte da ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.3 Licenza MIT Xtensa libhal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.4 Licenza MIT TinyBasic Plus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.5 Licenza TJpgDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

11 Acerca de

2657

12 Cambiar entre idiomas

2659

Índice

2661

Índice

2661

ix

x

Índice
Esta é a documentación para o marco de desenvolvemento de Espressif IoT (esp-idf). ESP-IDF é o marco de desenvolvemento oficial para os SoC das series ESP32, ESP32-S e ESP32-C. Este documento describe o uso de ESP-IDF co SoC ESP32.

Comeza

Referencia da API

Guías da API

Sistemas Espressif

1 Enviar comentario sobre o documento

Versión v5.0.9

Índice

Sistemas Espressif

2 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1
Comeza
Este documento ten como obxectivo axudarche a configurar o entorno de desenvolvemento de software para o hardware baseado no chip ESP32 de Espressif. Despois diso, un exemplo sinxelo...ampMostrarémosche como usar ESP-IDF (Espressif IoT Development Framework) para a configuración de menús e, a continuación, para compilar e instalar firmware nunha placa ESP32.
Nota: Esta é a documentación para a versión estable v5.0.9 de ESP-IDF. Tamén hai dispoñibles outras versións de ESP-IDF.
1.1 Introdución
O ESP32 é un sistema nun chip que integra as seguintes características: · Wi-Fi (banda de 2.4 GHz) · Bluetooth · Núcleos de CPU Xtensa® LX6 de 32 bits de alto rendemento duplos · Coprocesador de consumo ultrabaixo · Múltiples periféricos
Con tecnoloxía de 40 nm, ESP32 proporciona unha plataforma robusta e altamente integrada que axuda a satisfacer as continuas demandas de uso eficiente da enerxía, deseño compacto, seguridade, alto rendemento e fiabilidade. Espressif proporciona recursos básicos de hardware e software para axudar aos desenvolvedores de aplicacións a realizar as súas ideas usando o hardware da serie ESP32. O marco de desenvolvemento de software de Espressif está destinado ao desenvolvemento de aplicacións da Internet das Cousas (IoT) con Wi-Fi, Bluetooth, xestión de enerxía e outras funcións do sistema.
1.2 O que necesitas
1.2.1 Hardware
· Unha placa ESP32. · Cable USB: USB A / micro USB B. · Ordenador con Windows, Linux ou macOS.
Nota: Actualmente, algunhas das placas de desenvolvemento usan conectores USB tipo C. Asegúrate de ter o cable correcto para conectar a túa placa!
Se tes algunha das placas de desenvolvemento oficiais de ESP32 que aparecen na lista seguinte, podes premer na ligazón para obter máis información sobre o hardware.
3

Capítulo 1. Comezar
Kit de desenvolvemento ESP32(-R)
Esta guía do usuario ofrece información sobre ESP32-DevKitS(-R), unha placa flash baseada en ESP32 producida por Espressif. ESP32-DevKitS(-R) é unha combinación de dous nomes de placa: ESP32-DevKitS e ESP32-DevKitS-R. S significa resortes e R significa WROVER.

Kits de desenvolvemento ESP32

ESP32-DevKitS-R

O documento consta das seguintes seccións principais: · Introdución: Ofrece unha información xeralview de ESP32-DevKitS(-R) e instrucións de configuración de hardware/software para comezar. · Referencia de hardware: Ofrece información máis detallada sobre o hardware de ESP32-DevKitS(-R)ns. · Documentos relacionados: Ofrece ligazóns a documentación relacionada.

Primeiros pasos Nesta sección descríbese como comezar a usar ESP32-DevKitS(-R). Comeza con algunhas seccións introdutorias sobre ESP32-DevKitS(-R) e, a continuación, a sección Como flashear unha placa ofrece instrucións sobre como montar un módulo en ESP32-DevKitS(-R), preparalo e flashear o firmware nel.

Acabadoview ESP32-DevKitS(-R) é unha placa de flasheo de Espressifns deseñada especificamente para ESP32. Pódese usar para flashear un módulo ESP32 sen soldalo á fonte de alimentación e ás liñas de sinal. Cun módulo montado, ESP32-DevKitS(-R) tamén se pode usar como unha mini placa de desenvolvemento como ESP32-DevKitC.
As placas ESP32-DevKitS e ESP32-DevKitS-R só varían na disposición dos pinos de resorte para axustarse aos seguintes módulos ESP32.
· Kits de desenvolvemento de ESP32: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (PCB e IPEX) ESP32-WROVER-B (PCB e IPEX) ESP32-WROVER-E ESP32-WROVER-IE
Para obter información sobre os módulos anteriores, consulte Módulos da serie ESP32.

Descrición dos compoñentes

Sistemas Espressif

4 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Fig. 1: ESP32-DevKits – parte dianteira

Sistemas Espressif

Fig. 2: ESP32-DevKitS-R – parte dianteira 5
Enviar comentarios sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Conectores femia de 2.54 mm para pasadores de resorte de compoñentes clave
Ponte USB a UART Conector LDO micro-USB/Porto micro-USB Botón EN Botón de arranque
LED de acendido

Descrición Encaixe o módulo con un clic. Os pines encaixarán nos orificios almenados do módulo. Estas cabeceiras femia están conectadas aos pines do módulo montado nesta placa. Para obter unha descrición das cabeceiras femia, consulte Bloques de cabeceira. A ponte USB a UART dun só chip proporciona taxas de transferencia de ata 3 Mbps.
Volumen de baixa caída de 5 V a 3.3 Vtagregulador de electróns (LDO).
Interface USB. Fonte de alimentación para a placa, así como a interface de comunicación entre un ordenador e a placa.
Botón de reinicio.
Botón de descarga. Mantendo premido o botón de arranque e, a continuación, premendo EN, inicia o modo de descarga de firmware para descargar o firmware a través do porto serie.
Acéndese cando o USB ou a fonte de alimentación está conectado á placa.

Como flashear unha placa Antes de acender o seu ESP32-DevKitS(-R), asegúrese de que estea en bo estado e sen sinais evidentes de danos.
Hardware necesario · Un módulo ESP32 da túa elección · Cable USB 2.0 (estándar A a Micro B) · Ordenador con Windows, Linux ou macOS
Configuración do hardware Monte un módulo da súa elección no seu ESP32-DevKitS(-R) segundo os seguintes pasos:
· Coloca con coidado o módulo na placa ESP32-DevKitS(-R). Asegúrate de que os orificios almenados do módulo estean aliñados cos pasadores de resorte da placa.
· Prema o módulo contra a placa ata que faga clic. · Comprobe se todos os pasadores de resorte están inseridos nos orificios almenados. Se hai algúns pasadores de resorte desalinhados,
colócaos en buratos almenados con pinzas.
Configuración do software
Método preferido O marco de desenvolvemento ESP-IDF proporciona un xeito preferido de instalar ficheiros binarios en ESP32-DevKitS(-R). Continúa a Comezar, onde a sección Instalación axudarache rapidamente a configurar o entorno de desenvolvemento e, a seguir, a instalar un exemplo de aplicación.ample no teu ESP32-DevKitS(-R).
Método alternativo Como alternativa, os usuarios de Windows poden flashear os binarios usando a ferramenta de descarga de Flash. Simplemente descárgaa, descomprimea e segue as instrucións que se atopan dentro do cartafol doc.
Nota: 1. Para flashear o binario files, o ESP32 debería estar configurado no modo de descarga de firmware. Isto pódese facer coa ferramenta de flasheo automaticamente ou mantendo premido o botón de arranque e tocando o botón EN. 2. Despois de flashear o binario files, a ferramenta de descarga Flash reinicia o módulo ESP32 e inicia a aplicación flasheada por defecto.

Dimensións da placa Contido e embalaxe

Sistemas Espressif

6 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Primeiros pasos Fig. 3: Dimensións da placa ESP32-DevKitS – parte traseira

Sistemas Espressif

Fig. 4: Dimensións da placa ESP32-DevKitS-R – parte traseira 7
Enviar comentarios sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Pedidos ao por menor Se encargas uns cantosamples, cada ESP32-DevKitS(-R) vén nun paquete individual, xa sexa nunha bolsa antiestática ou en calquera embalaxe dependendo do vendedor. Para pedidos ao por menor, visite https://www.espressif.com/en/contact-us/get-samples.
Pedidos ao por maior Se fas pedidos ao por maior, as táboas veñen en caixas de cartón grandes. Para pedidos ao por maior, visita https://www.espressif.com/en/contact-us/sales-questions.
Referencia de hardware
Diagrama de bloques Un diagrama de bloques a continuación mostra os compoñentes de ESP32-DevKitS(-R) e as súas interconexións.

Fig. 5: ESP32-DevKitS(-R) (prema para ampliar)
Opcións de fonte de alimentación Hai tres xeitos mutuamente exclusivos de fornecer enerxía á placa: · Porto micro USB, fonte de alimentación predeterminada · Pines de cabeceira de 5 V e GND · Pines de cabeceira de 3 V e GND
Recoméndase usar a primeira opción: o porto micro USB.

Sistemas Espressif

.

Sinal de etiqueta

L1 3V3 VDD 3V3

L2 EN CHIP_PU

SENSOR_VP L3 VP

SENSOR VN L4_VN

L5 34

GPIO 34

L6 35

GPIO 35

L7 32

GPIO 32

L8 33

GPIO 33

continúa na seguinte páxina

8 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

A táboa 1 continúa da páxina anterior

.

Sinal de etiqueta

L9 25

GPIO 25

L10 26

GPIO 26

L11 27

GPIO 27

L12 14

GPIO 14

L13 12

GPIO 12

L14 GND GND

L15 13

GPIO 13

L16 D2 SD_DATOS2

L17 D3 SD_DATOS3

L18 CMD SD_CMD

L19 5V

5V externo

R1 GND GND

R2 23

GPIO 23

R3 22

GPIO 22

R4 TX U0TXD

R5 RX U0RXD

R6 21

GPIO 21

R7 GND GND

R8 19

GPIO 19

R9 18

GPIO 18

R10 5

GPIO 5

R11 17

GPIO 17

R12 16

GPIO 16

R13 4

GPIO 4

R14 0

GPIO 0

R15 2

GPIO 2

R16 15

GPIO 15

R17 D1 SD_DATOS1

R18 D0 SD_DATOS0

R19 CLK SD_CLK

Bloques de cabeceira Para ver a imaxe dos bloques de cabeceira, consulte a Descrición dos compoñentes.

Documentos relacionados
· Esquemas de ESP32-DevKitS(-R) (PDF) · Folla de datos de ESP32 (PDF) · Folla de datos de ESP32-WROOM-32 (PDF) · Folla de datos de ESP32-WROOM-32D e ESP32-WROOM-32U (PDF) · Folla de datos de ESP32-SOLO-1 (PDF) · Folla de datos de ESP32-WROVER (PDF) · Folla de datos de ESP32-WROVER-B (PDF) · Selector de produtos ESP

ESP32-DevKitM-1

Esta guía do usuario axudarache a comezar a usar ESP32-DevKitM-1 e tamén che proporcionará información máis detallada.
ESP32-DevKitM-1 é unha placa de desenvolvemento baseada en ESP32-MINI-1(1U) producida por Espressif. A maioría dos pines de E/S están separados nos conectores de pines a ambos os dous lados para facilitar a interface. Os usuarios poden conectar periféricos con cables de puente ou montar ESP32-DevKitM-1 nunha placa de probas.

Sistemas Espressif

9 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

ESP32-DevKitM-1 - frontal

ESP32-DevKitM-1 – isométrico

O documento consta das seguintes seccións principais: · Primeiros pasos: Ofrece unha información xeralview do ESP32-DevKitM-1 e as instrucións de configuración do hardware/software para comezar. · Referencia do hardware: Ofrece información máis detallada sobre o hardware do ESP32-DevKitM-1ns. · Documentos relacionados: Ofrece ligazóns a documentación relacionada.

Primeiros pasos Nesta sección descríbese como comezar a usar ESP32-DevKitM-1. Comeza con algunhas seccións introdutorias sobre o ESP32-DevKitM-1 e, a continuación, a sección Inicio de desenvolvemento de aplicacións ofrece instrucións sobre como realizar a configuración inicial do hardware e, a continuación, como instalar o firmware no ESP32-DevKitM-1.

Acabadoview Esta é unha placa de desenvolvemento pequena e cómoda que presenta:
· Módulo ESP32-MINI-1 ou ESP32-MINI-1U · Interface de programación USB a serie que tamén proporciona alimentación para a placa · Conectores de pines · Botóns para reiniciar e activar o modo de descarga de firmware · Algúns outros compoñentes

Contidos e embalaxe

Pedidos ao por menor Se encargas uns cantosamples, cada ESP32-DevKitM-1 vén nunha embalaxe individual, xa sexa nunha bolsa antiestática ou en calquera embalaxe dependendo do seu vendedor.
Para pedidos ao por menor, visite https://www.espressif.com/en/contact-us/get-samples.

Pedidos ao por maior Se fas pedidos ao por maior, as táboas veñen en caixas de cartón grandes. Para pedidos ao por maior, visita https://www.espressif.com/en/contact-us/sales-questions.

Descrición dos compoñentes A seguinte figura e a táboa de embaixo describen os compoñentes, interfaces e controis clave da placa ESP32-DevKitM-1. Tomamos a placa cun módulo ESP32-MINI-1 como exemplo.ample nas seguintes seccións.

Sistemas Espressif

10 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Fig. 6: ESP32-DevKitM-1 – parte dianteira

Módulo integrado de compoñentes clave
Botón de arranque LDO de 5 V a 3.3 V
Botón de reinicio Porto micro-USB
Ponte USB a UART de 3.3 V. LED de acendido.
Conector E/S

Descrición
Módulo ESP32-MINI-1 ou módulo ESP32-MINI-1U. O ESP32-MINI-1 inclúe unha antena integrada na placa de circuíto impreso. O ESP32-MINI-1U inclúe un conector de antena externo. Os dous módulos teñen unha memoria flash de 4 MB no chip. Para obter máis detalles, consulte a folla de datos de ESP32-MINI-1 e ESP32-MINI-1U.
O regulador de potencia converte 5 V a 3.3 V.
Botón de descarga. Mantendo premido o botón Arrancar e, a continuación, premendo Reiniciar, inicia o modo de descarga de firmware para descargar o firmware a través do porto serie.
Botón de reinicio
Interface USB. Fonte de alimentación para a placa, así como a interface de comunicación entre un ordenador e o chip ESP32.
Un único chip bridge USB-UART ofrece velocidades de transferencia de ata 3 Mbps.
Acéndese cando o USB está conectado á placa. Para obter máis detalles, consulta os esquemas en Documentos relacionados. Todos os pines GPIO dispoñibles (agás o bus SPI para flash) están divididos nos connectores de pines da placa. Os usuarios poden programar o chip ESP32 para activar varias funcións.

Comezar o desenvolvemento da aplicación Antes de acender o ESP32-DevKitM-1, asegúrese de que estea en bo estado e sen sinais evidentes de danos.
Hardware necesario · ESP32-DevKitM-1 · Cable USB 2.0 (estándar A a Micro-B) · Ordenador con Windows, Linux ou macOS
Configuración do software Continúa con Primeiros pasos, onde a sección Instalación axudarache rapidamente a configurar o entorno de desenvolvemento e, a seguir, a instalar un exemplo de aplicación.ample no seu ESP32-DevKitM-1.

Sistemas Espressif

11 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Atención: As placas ESP32-DevKitM-1 fabricadas antes do 2 de decembro de 2021 teñen un módulo dun só núcleo instalado. Para verificar que módulo tes, consulta a información de marcado do módulo en PCN-2021-021. Se a túa placa ten un módulo dun só núcleo instalado, activa o modo dun só núcleo (CONFIG_FREERTOS_UNICORE) en menuconfig antes de flashear as túas aplicacións.
Diagrama de bloques de referencia do hardware Un diagrama de bloques a continuación mostra os compoñentes do ESP32-DevKitM-1 e as súas interconexións.

Figura 7: ESP32-DevKitM-1
Selección da fonte de alimentación Hai tres xeitos mutuamente exclusivos de fornecer enerxía á placa: · Porto micro USB, fonte de alimentación predeterminada · Pines de cabeceira de 5 V e GND · Pines de cabeceira de 3 V e GND
Aviso: · A fonte de alimentación debe subministrarse mediante unha e só unha das opcións anteriores; se non, a placa e/ou a fonte de alimentación poden resultar danadas. · Recoméndase a fonte de alimentación mediante un porto micro USB.

Descricións dos pines A táboa seguinte mostra o nome e a función dos pines en ambos os dous lados da placa. Para as configuracións dos pines periféricos, consulte a folla de datos do ESP32.

Non.

Nome

Tipo

1

GND

P

2

3V3

P

Función Terra Fonte de alimentación de 3.3 V

continúa na seguinte páxina

Sistemas Espressif

12 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

A táboa 2 continúa da páxina anterior

Non.

Nome

Tipo

Función

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

Restablecer; Alto: activar; Baixo: apaga

8

I34

I

GPIO34, ADC1_CH6, RTC_GPIO4

9

I35

I

GPIO35, ADC1_CH7, RTC_GPIO5

10

IO32

E/S

GPIO32, XTAL_32K_P (entrada de oscilador de cristal de 32.768 kHz),

ADC1_CH4, TOUCH9, RTC_GPIO9

11

IO33

E/S

GPIO33, XTAL_32K_N (saída de oscilador de cristal de 32.768 kHz),

ADC1_CH5, TOUCH8, RTC_GPIO8

12

IO25

E/S

GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0

13

IO26

E/S

GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1

14

IO27

E/S

GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV

15

IO14

E/S

GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,

HS2_CLK, SD_CLK, EMAC_TXD2

16

5V

P

Alimentación de 5 V

17

IO12

E/S

GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,

HS2_DATA2, SD_DATA2, EMAC_TXD3

18

IO13

E/S

GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,

HS2_DATA3, SD_DATA3, EMAC_RX_ER

19

IO15

E/S

GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,

HS2_CMD, SD_CMD, EMAC_RXD3

20

IO2

E/S

GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,

HS2_DATA0, SD_DATA0

21

IO0

E/S

GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,

EMAC_TX_CLK

22

IO4

E/S

GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,

HS2_DATA1, SD_DATA1, EMAC_TX_ER

23

IO9

E/S

GPIO9, HS1_DATA2, U1RXD, SD_DATA2

24

IO10

E/S

GPIO10, HS1_DATA3, U1TXD, SD_DATA3

25

IO5

E/S

GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK

26

IO18

E/S

GPIO18, HS1_DATA7, VSPICLK

27

IO23

E/S

GPIO23, HS1_STROBE, VSPID

28

IO19

E/S

GPIO19, VSPIQ, U0CTS, EMAC_TXD0

29

IO22

E/S

GPIO22, VSPIWP, U0RTS, EMAC_TXD1

30

IO21

E/S

GPIO21, VSPIHD, EMAC_TX_EN

31

TXD0

E/S

GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2

32

RXD0

E/S

GPIO3, U0RXD, CLK_OUT2

Detalles da revisión do hardware Non hai versións anteriores dispoñibles.
Documentos relacionados
· Folla de datos de ESP32-MINI-1 e ESP32-MINI-1U (PDF) · Esquema de ESP32-DevKitM-1 (PDF) · Maquetación da placa de circuíto impreso de ESP32-DevKitM-1 (PDF) · Maquetación de ESP32-DevKitM-1 (DXF): podes view con Autodesk Viewen liña · Ficha técnica de ESP32 (PDF) · Selector de produtos ESP
Para obter outra documentación de deseño para a placa, póñase en contacto connosco en sales@espressif.com.

Sistemas Espressif

13 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Software 1.2.2
Para comezar a usar ESP-IDF en ESP32, instala o seguinte software: · Toolchain para compilar código para ESP32 · Ferramentas de creación: CMake e Ninja para crear unha aplicación completa para ESP32 · ESP-IDF que esencialmente contén a API (bibliotecas de software e código fonte) para ESP32 e scripts para operar a Toolchain

1.3 Instalación
Para instalar todo o software necesario, ofrecemos diferentes xeitos de facilitar esta tarefa. Escolla unha das opcións dispoñibles.
1.3.1 IDE

Nota: Recomendámoslle encarecidamente que instale o ESP-IDF a través do seu IDE favorito.
· Complemento de Eclipse · Extensión VSCode

1.3.2 Instalación manual
Para o procedemento manual, seleccione segundo o seu sistema operativo.

Sistemas Espressif

14 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Configuración estándar de Toolchain para Windows
Introdución ESP-IDF require a instalación dalgunhas ferramentas previas para poder compilar firmware para os chips compatibles. As ferramentas previas inclúen Python, Git, compiladores cruzados, ferramentas de compilación CMake e Ninja. Para estes primeiros pasos, imos usar a liña de comandos, pero despois de instalar ESP-IDF, podes usar o complemento Eclipse ou outro IDE gráfico con compatibilidade con CMake. Nota: Limitacións: – A ruta de instalación de ESP-IDF e as ferramentas de ESP-IDF non debe ter máis de 90 caracteres. As rutas de instalación demasiado longas poden provocar un erro de compilación. – A ruta de instalación de Python ou ESP-IDF non debe conter espazos en branco nin parénteses. – A ruta de instalación de Python ou ESP-IDF non debe conter caracteres especiais (non ASCII) a menos que o sistema operativo estea configurado con compatibilidade con Unicode UTF-8. O administrador do sistema pode activar a compatibilidade a través do Panel de control – Cambiar os formatos de data, hora ou número – Pestana Administrador – Cambiar a configuración rexional do sistema – marcar a opción oBeta: Usar Unicode UTF-8 para a compatibilidade con idiomas en todo o mundo – Aceptar e reiniciar o computador.
Instalador de ferramentas de ESP-IDF A forma máis sinxela de instalar os requisitos previos de ESP-IDFns é descargar un dos instaladores de ferramentas de ESP-IDF.

Descarga do instalador de Windows
Cal é o caso de uso do instalador en liña e fóra de liña? O instalador en liña é moi pequeno e permite a instalación de todas as versións dispoñibles de ESP-IDF. O instalador só descargará as dependencias necesarias, incluído Git para Windows, durante o proceso de instalación. O instalador almacena os ficheiros descargados files no directorio da caché %userprofile%. expresivo
O instalador sen conexión non require ningunha conexión de rede. O instalador contén todas as dependencias necesarias, incluído Git para Windows.
Compoñentes da instalación O instalador desprega os seguintes compoñentes:
· Python integrado · Compiladores cruzados · OpenOCD · Ferramentas de compilación CMake e Ninja · ESP-IDF
O instalador tamén permite reutilizar o directorio existente con ESP-IDF. O directorio recomendado é %userprofile%Desktopesp-idf onde %userprofile% é o teu directorio persoal.

Sistemas Espressif

15 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Iniciando o entorno ESP-IDF Ao final do proceso de instalación, pode marcar a opción Executar o entorno ESP-IDF PowerShell ou Executar a liña de comandos de ESP-IDF (cmd.exe). O instalador iniciará o entorno ESP-IDF na liña de comandos seleccionada. Executar o entorno ESP-IDF PowerShell:

Fig. 8: Completando o asistente de configuración de ferramentas ESP-IDF con Executar o ambiente ESP-IDF PowerShell
Executar a liña de comandos de ESP-IDF (cmd.exe):
Usando a liña de comandos Para os pasos restantes de Introdución, imos usar a liña de comandos de Windows. O instalador de ferramentas de ESP-IDF tamén crea un atallo no menú Inicio para iniciar a liña de comandos de ESP-IDF. Este atallo inicia a liña de comandos (cmd.exe) e executa o script export.bat para configurar as variables de ambiente (PATH, IDF_PATH e outras). Dentro desta liña de comandos, están dispoñibles todas as ferramentas instaladas. Ten en conta que este atallo é específico do directorio ESP-IDF seleccionado no instalador de ferramentas de ESP-IDF. Se tes varios directorios ESP-IDF no computador (por exemplo,ampé dicir, para traballar con diferentes versións de ESP-IDF), tes dúas opcións para usalos:
1. Crea unha copia do atallo creado polo instalador de ferramentas de ESP-IDF e cambia o directorio de traballo do novo atallo ao directorio de ESP-IDF que queres usar.
2. Como alternativa, executa cmd.exe, despois cambia ao directorio ESP-IDF que queres usar e executa export.bat. Ten en conta que, a diferenza da opción anterior, este método require que Python e Git estean presentes en PATH. Se recibes erros relacionados coa falta de localización de Python ou Git, usa a primeira opción.
Primeiros pasos en ESP-IDF Agora, dado que se cumpren todos os requisitos, o seguinte tema guiarache sobre como comezar o teu primeiro proxecto.

Sistemas Espressif

16 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Primeiros pasos Fig. 9: PowerShell de ESP-IDF

Fig. 10: Completar o asistente de configuración de ferramentas ESP-IDF con Executar a liña de comandos de ESP-IDF (cmd.exe)

Sistemas Espressif

17 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Fig. 11: Indicador de comandos de ESP-IDF

Sistemas Espressif

18 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Esta guía axudarache nos primeiros pasos usando ESP-IDF. Segue esta guía para iniciar un novo proxecto no ESP32 e compilar, flashear e monitorizar a saída do dispositivo. Nota: Se aínda non instalaches ESP-IDF, vai a Instalación e segue as instrucións para obter todo o software necesario para usar esta guía.

Comezar un proxecto Agora xa estás listo para preparar a túa aplicación para ESP32. Podes comezar co proxecto getstarted/hello_world desde exampdirectorio les en ESP-IDF.
Importante: O sistema de compilación ESP-IDF non admite espazos nas rutas a ESP-IDF nin aos proxectos.
Copia o proxecto get-started/hello_world ao directorio ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%exampiniciadoola_mundoola_mundo
Nota: Hai unha variedade de exemplosample proxectos no examples directorio en ESP-IDF. Pode copiar calquera proxecto do mesmo xeito que se presentou anteriormente e executalo. Tamén é posible construír examples no seu lugar sen copialos primeiro.

Conecta o teu dispositivo Agora conecta a túa placa ESP32 ao ordenador e comproba en que porto serie está visible a placa. Os nomes dos portos serie comezan por COM en Windows. Se non estás seguro de como comprobar o nome do porto serie, consulta Establecer conexión serie con ESP32 para obter máis detalles.
Nota: Mantén o nome do porto a man xa que o necesitarás nos seguintes pasos.

Configura o teu proxecto Navega ata o directorio hello_world, define ESP32 como destino e executa a utilidade de configuración do proxecto menuconfig.
CD de Windows %userprofile%esphello_world idf.py definir-o-obxectivo esp32 idf.py configuración do menú
Despois de abrir un novo proxecto, primeiro debes configurar o destino con idf.py set-target esp32. Ten en conta que as compilacións e configuracións existentes no proxecto, se as houber, borraranse e inicializaranse neste proceso. O destino pode gardarse na variable de ambiente para omitir este paso. Consulta Seleccionar o chip de destino: set-target para obter máis información. Se os pasos anteriores se realizaron correctamente, aparecerá o seguinte menú: Estás a usar este menú para configurar variables específicas do proxecto, por exemplo, nome e contrasinal da rede Wi-Fi, velocidade do procesador, etc. A configuración do proxecto con menuconfig pode omitirse para ohello_wordp, xa que este exampexecútase coa configuración predeterminada.
Atención: Se usa a placa ESP32-DevKitC co módulo ESP32-SOLO-1 ou a placa ESP32-DevKitM-1 co módulo ESP32-MIN1-1(1U), active o modo de núcleo único (CONFIG_FREERTOS_UNICORE) no menú de configuración antes de flashear ex.amples.

Sistemas Espressif

19 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Fig. 12: Configuración do proxecto: xanela de inicio
Nota: As cores do menú poden ser diferentes no teu terminal. Podes cambiar a aparencia coa opción –style. Executa idf.py menuconfig –help para obter máis información.
Se estás a usar unha das placas de desenvolvemento compatibles, podes acelerar o teu desenvolvemento usando o Paquete de soporte para placas. Consulta Consellos adicionais para obter máis información.
Construír o proxecto Construír o proxecto executando:
compilación idf.py
Este comando compilará a aplicación e todos os compoñentes ESP-IDF, despois xerará o cargador de arranque, a táboa de particións e os binarios da aplicación.
$ idf.py build Executando cmake no directorio /path/to/hello_world/build Executando “cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Aviso sobre valores non inicializados. — Atopouse Git: /usr/bin/git (atopouse a versión “2.17.0”) — Construíndo un compoñente aws_iot baleiro debido á configuración — Nomes dos compoñentes: … — Rutas dos compoñentes: …
… (máis liñas de saída do sistema de compilación)
[527/527] Xerando hello_world.bin esptool.py v2.3.1
Compilación do proxecto completada. Para flashear, executa este comando: ../../../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 ou executa 'idf.py -p PORT flash'
Se non hai erros, a compilación rematará xerando o firmware binario .bin files.

Sistemas Espressif

20 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Flashear no dispositivo Flashe os binarios que acaba de compilar (bootloader.bin, partition-table.bin e hello_world.bin) na súa placa ESP32 executando: idf.py -p PORT [-b BAUD] flash
Substitúe PORT polo nome do porto serie da túa placa ESP32. Tamén podes cambiar a velocidade en baudios do flash substituíndo BAUD pola velocidade en baudios que precises. A velocidade en baudios predeterminada é 460800. Para obter máis información sobre os argumentos de idf.py, consulta idf.py.
Nota: A opción flash compila e flashea o proxecto automaticamente, polo que non é necesario executar idf.py build.

Atopouse algún problema ao flashear? Se executa o comando dado e ve erros como "Failed to connectp", pode haber varias razóns para isto. Unha das razóns pode ser que os problemas atopados por esptool.py, a utilidade que chama o sistema de compilación para restablecer o chip, interactuar co cargador de arranque da ROM e flashear o firmware. Unha solución sinxela que podes probar é o restablecemento manual que se describe a continuación e, se non axuda, podes atopar máis detalles sobre posibles problemas en Resolución de problemas.
esptool.py restablece o ESP32 automaticamente ao activar as liñas de control DTR e RTS do chip conversor de USB a serie, é dicir, FTDI ou CP210x (para obter máis información, consulte Establecer conexión en serie con ESP32). As liñas de control DTR e RTS están conectadas á súa vez aos pines GPIO0 e CHIP_PU (EN) do ESP32, polo que se modifica o volume.tagOs niveis de DTR e RTS iniciarán o ESP32 no modo de descarga de firmware. Como exemploampPor exemplo, comproba o esquema da placa de desenvolvemento ESP32 DevKitC.
En xeral, non deberías ter problemas coas placas de desenvolvemento oficiais de esp-idf. Non obstante, esptool.py non pode restablecer o teu hardware automaticamente nos seguintes casos:
· O teu hardware non ten as liñas DTR e RTS conectadas a GPIO0 e CHIP_PU · As liñas DTR e RTS están configuradas de xeito diferente · Non existen en absoluto tales liñas de control en serie
Dependendo do tipo de hardware que teñas, tamén é posible poñer manualmente a túa placa ESP32 en modo de descarga de firmware (reinicio).
· Para as placas de desenvolvemento producidas por Espressif, esta información pódese atopar nas respectivas guías de inicio ou guías do usuario. Por exemploampé dicir, para restablecer manualmente unha placa de desenvolvemento ESP-IDF, manteña premido o botón de arranque (GPIO0) e prema o botón EN (CHIP_PU).
· Para outros tipos de hardware, proba a desactivar GPIO0.

Funcionamento normal Cando parpadea, verá o rexistro de saída semellante ao seguinte:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –antes=reinicio_predeterminado -despois=reinicio_hard write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 táboa_de_particións/tábela-de-particións.bin 0x1000 cargador_de_arrencada/cargador_de_arrencada.bin 0x10000 ola_mundo.bin esptool.py v3.0-dev Porto serie /dev/ttyUSB0 Conectando…….._ O chip é ESP32D0WDQ6 (revisión 0) Características: WiFi, BT, dobre núcleo, esquema de codificación Ningún O cristal é de 40 MHz MAC: 24:0a:c4:05:b9:14 Cargando o stub… Executando o stub… Stub en execución… Cambiando a velocidade en baudios a 460800 Modificada.
(continúa na seguinte páxina)

Sistemas Espressif

21 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
(continuación da páxina anterior) Configuración do tamaño da memoria flash… Comprimidos 3072 bytes a 103… Escribindo a 0x00008000… (100 %) Escribiron 3072 bytes (103 comprimidos) a 0x00008000 en 0.0 segundos (5962.8 kbit/s efectivos)… Hash de datos verificado. Comprimiron 26096 bytes a 15408… Escribindo a 0x00001000… (100 %) Escribiron 26096 bytes (15408 comprimidos) a 0x00001000 en 0.4 segundos (546.7 kbit/s efectivos)… Hash de datos verificado. Comprimidos 147 104 bytes a 77 364… Escribindo a 0x00010000… (20 %) Escribindo a 0x00014000… (40 %) Escribindo a 0x00018000… (60 %) Escribindo a 0x0001c000… (80 %) Escribindo a 0x00020000… (100 %) Escribiu 147 104 bytes (77 364 comprimidos) a 0x00010000 en 1.9 segundos (615,5 kbit/s efectivos)… Hash de datos verificado.
Saíndo... Restablecemento completo mediante un pin RTS... Feito
Se non hai problemas ao final do proceso de flasheo, a placa reiniciarase e iniciará a aplicación thehello_worldp. Se queres usar o IDE Eclipse ou VS Code en lugar de executar idf.py, consulta o complemento Eclipse, a extensión VSCode.
Monitorizar a saída Para comprobar se ohello_worldpis está a executarse, escribe idf.py -p PORT monitor (Non esquezas substituír PORT polo nome do teu porto serie).
Este comando inicia a aplicación IDF Monitor:
$ idf.py -p monitor Executando idf_monitor no directorio […]/esp/hello_world/build Executando “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor activado 115200 —– Saír: Ctrl+] | Menú: Ctrl+T | Axuda: Ctrl+T seguido de Ctrl+H –ets 8 de xuño de 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 de xuño de 2016 00:22:57 …
Despois de que os rexistros de inicio e diagnóstico se despracen cara arriba, deberías ver impreso o *Hello world!* pola aplicación.
… Ola mundo! Reiniciando en 10 segundos… Este é un chip esp32 con 2 núcleos de CPU, WiFi/BT/BLE, revisión 1 de Silicon, memoria flash externa de 2 MB Tamaño mínimo de memoria dinámica libre: 298968 bytes Reiniciando en 9 segundos… Reiniciando en 8 segundos… Reiniciando en 7 segundos…
Para saír do monitor IDF use o atallo Ctrl+].

Sistemas Espressif

22 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Se o monitor IDF falla pouco despois da carga ou, se en lugar das mensaxes anteriores, ves lixo aleatorio semellante ao que se indica a continuación, é probable que a túa placa estea a usar un cristal de 26 MHz. A maioría dos deseños de placas de desenvolvemento usan 40 MHz, polo que ESP-IDF usa esta frecuencia como valor predeterminado.

Se tes algún problema deste tipo, fai o seguinte: 1. Sae do monitor. 2. Volve ao menúconfiguración. 3. Vai a Configuración de compoñentes > Axustes de hardware > Configuración XTAL principal > Frecuencia XTAL principal e, a seguir, cambia CONFIG_XTAL_FREQ_SEL a 26 MHz. 4. Despois diso, compila e flashea a aplicación de novo.
Na versión actual de ESP-IDF, as principais frecuencias XTAL compatibles con ESP32 son as seguintes:
· 26 MHz · 40 MHz
Nota: Podes combinar a compilación, o flasheo e a monitorización nun só paso executando: idf.py -p PORT flash monitor
Véxase tamén: · Monitor IDF para obter atallos prácticos e máis detalles sobre o uso do monitor IDF. · idf.py para obter unha referencia completa dos comandos e opcións de idf.py.
Iso é todo o que necesitas para comezar con ESP32! Agora estás listo para probar outros exemplos.amples ou pasar directamente a desenvolver as túas propias aplicacións.
Importante: Algúns dos exampOs ficheiros non admiten ESP32 porque o hardware requirido non está incluído no ESP32, polo que non se pode soportar. Se se está a construír un exemploample, por favor, comproba o README file para a táboa Obxectivos compatibles. Se isto está presente, incluído o obxectivo ESP32, ou a táboa non existe en absoluto, o exampfuncionará en ESP32.
Consellos adicionais
Problemas de permisos /dev/ttyUSB0 Con algunhas distribucións de Linux, pode aparecer a mensaxe de erro "Erro ao abrir o porto /dev/ttyUSB0" ao actualizar o ESP32. Isto pódese solucionar engadindo o usuario actual ao grupo de saída por discado.
Compatibilidade con Python ESP-IDF admite Python 3.7 ou posterior. Recoméndase actualizar o sistema operativo a unha versión recente que cumpra este requisito. Outras opcións inclúen a instalación de Python desde as fontes ou o uso dun sistema de xestión de versións de Python como pyenv.
Comezar co paquete de soporte de placas Para acelerar a creación de prototipos nalgunhas placas de desenvolvemento, podes usar os paquetes de soporte de placas (BSP), que fan que a inicialización dunha placa en particular sexa tan sinxela como unhas poucas chamadas de funcións.

Sistemas Espressif

23 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Un BSP normalmente admite todos os compoñentes de hardware proporcionados na placa de desenvolvemento. Ademais das funcións de definición de pinout e inicialización, un BSP inclúe controladores para os compoñentes externos, como sensores, pantallas, códecs de audio, etc. Os BSP distribúense a través do Xestor de compoñentes de IDF, polo que se poden atopar no Rexistro de compoñentes de IDF. Aquí tes un exemplo.ampUn exemplo de como engadir ESP-WROVER-KIT BSP ao teu proxecto: idf.py add-dependency esp_wrover_kit
Máis exampAs poucas referencias ao uso de BSP pódense atopar no exemplo de BSPampcartafol les.
Documentos relacionados Para usuarios avanzados que desexen personalizar o proceso de instalación: · Actualización das ferramentas ESP-IDF en Windows · Establecemento de conexión en serie con ESP32 · Complemento de Eclipse · Extensión VSCode · Monitor IDF
Actualización das ferramentas ESP-IDF en Windows
Instalar as ferramentas ESP-IDF usando un script Desde a liña de comandos de Windows, cambie ao directorio onde está instalado ESPIDF. Despois execute:
instalar.bat
Para Powershell, vai ao directorio onde está instalado ESP-IDF. Despois executa:
instalar.ps1
Isto descargará e instalará as ferramentas necesarias para usar ESP-IDF. Se a versión específica da ferramenta xa está instalada, non se realizará ningunha acción. As ferramentas descárganse e instálanse nun directorio especificado durante o proceso de instalación das ferramentas de ESP-IDF. Por defecto, este é C:Usuarionomedeusuario.espressif.
Engadir ferramentas ESP-IDF a PATH usando un script de exportación O instalador de ferramentas ESP-IDF crea un atallo no menú Inicio para o símbolo do sistema de ESP-IDF. Este atallo abre unha xanela do símbolo do sistema onde xa están todas as ferramentas.
dispoñible. Nalgúns casos, pode que queiras traballar con ESP-IDF nunha xanela da liña de comandos que non se iniciou usando ese atallo. Se é este o caso, segue as instrucións seguintes para engadir ferramentas ESP-IDF a PATH. Na liña de comandos onde necesitas usar ESP-IDF, cambia ao directorio onde está instalado ESP-IDF e, a seguir, executa export.bat:
cd %userprofile%espesp-idf export.bat
Como alternativa, no Powershell onde precisa usar ESP-IDF, cambie ao directorio onde está instalado ESP-IDF e logo execute export.ps1:
cd ~/esp/esp-idf export.ps1
Cando isto estea feito, as ferramentas estarán dispoñibles nesta liña de comandos.
Establecer unha conexión en serie co ESP32 Nesta sección ofrécese unha guía sobre como establecer unha conexión en serie entre o ESP32 e o PC.

Sistemas Espressif

24 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Conectar o ESP32 ao PC Conecta a placa ESP32 ao PC mediante o cable USB. Se o controlador do dispositivo non se instala automaticamente, identifica o chip conversor de USB a serie na túa placa ESP32 (ou dongle conversor externo), busca controladores en internet e instálaos. A continuación móstrase a lista dos chips conversores de USB a serie instalados na maioría das placas ESP32 producidas por Espressif xunto con ligazóns aos controladores:
· CP210x: Controladores VCP da ponte USB a UART do CP210x · FTDI: Controladores de porto COM virtual FTDI Consulta a guía do usuario da placa para coñecer o chip conversor USB a serie específico que se emprega. Os controladores anteriores serven principalmente como referencia. En circunstancias normais, os controladores deberían vir incluídos cun sistema operativo e instalarse automaticamente ao conectar a placa ao PC.
Comproba o porto en Windows Comproba a lista de portos COM identificados no Xestor de dispositivos de Windows. Desconecta o ESP32 e conéctao de novo para verificar que porto desaparece da lista e volve aparecer. As figuras seguintes mostran o porto serie para ESP32 DevKitC e ESP32 WROVER KIT

Fig. 13: Ponte USB a UART de ESP32-DevKitC no Xestor de dispositivos de Windows

Comprobar o porto en Linux e macOS Para comprobar o nome do dispositivo para o porto serie da súa placa ESP32 (ou dongle conversor externo), execute este comando dúas veces, primeiro coa placa/dongle desconectado e despois co conectado. O porto que aparece a segunda vez é o que precisa: Linux
ls /dev/tty*
macOS

Sistemas Espressif

25 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Fig. 14: Dous portos serie USB do ESP-WROVER-KIT no Xestor de dispositivos de Windows

Sistemas Espressif

26 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

ls /dev/cu.* Nota: Usuarios de macOS: se non ves o porto serie, comproba que tes instalados os controladores USB/serie. Consulta a sección Conectar ESP32 ao PC para obter ligazóns aos controladores. Para macOS High Sierra (10.13), pode que tamén teñas que permitir explicitamente a carga dos controladores. Abre Preferencias do sistema -> Seguridade e privacidade -> Xeral e comproba se aparece unha mensaxe sobre o Software do sistema do desenvolvedor lp onde o nome do desenvolvedor sexa Silicon Labs ou FTDI.

Engadir un usuario ao grupo de saída telefónica en Linux O usuario que rexistrou a sesión debería ter acceso de lectura e escritura ao porto serie a través de USB. Na maioría das distribucións de Linux, isto faise engadindo o usuario ao grupo de saída telefónica co seguinte comando:
sudo usermod -a -G dialout $USER
en Arch Linux, isto faise engadindo o usuario ao grupo uucp co seguinte comando:
sudo usermod -a -G uucp $USER
Asegúrate de volver iniciar sesión para activar os permisos de lectura e escritura para o porto serie.
Verificar a conexión en serie Agora verificar que a conexión en serie funciona correctamente. Podes facelo usando un programa de terminal en serie comprobando se obtés algunha saída no terminal despois de reiniciar o ESP32. A velocidade de transmisión predeterminada da consola no ESP32 é de 115200.
Windows e Linux neste exemploampPor exemplo, usaremos o cliente SSH PuTTY que está dispoñible tanto para Windows como para Linux. Podes usar outros programas en serie e configurar os parámetros de comunicación como se indica a continuación. Executa o terminal e configura o porto serie identificado. Velocidade en baudios = 115200 (se é necesario, cámbiaa á velocidade en baudios predeterminada do chip en uso), bits de datos = 8, bits de parada = 1 e paridade = N. A continuación móstranse exemplos.ampCapturas de pantalla da configuración do porto e os parámetros de transmisión (descritos abreviadamente como 115200-8-1-N) en Windows e Linux. Lembra seleccionar exactamente o mesmo porto serie que identificaches nos pasos anteriores. Despois, abre o porto serie no terminal e comproba se ves algún rexistro impreso por ESP32. O contido do rexistro dependerá da aplicación cargada en ESP32; consulta o exemplo.ampSaída.
Nota: Peche o terminal serie despois de comprobar que a comunicación funciona. Se mantén aberta a sesión do terminal, o porto serie non será accesible para cargar o firmware máis tarde.

macOS Para aforrarche a molestia de instalar un programa de terminal serie, macOS ofrece o comando screen. · Como se explicou en Comprobar porto en Linux e macOS, executa:

ls /dev/cu.* · Deberías ver unha saída similar:

/dev/cu.Porto-de-entrada-Bluetooth /dev/cu.SLAB_USBtoUART USBtoUART7

/desenvolvemento/cu.SLAB_

· A saída variará dependendo do tipo e do número de placas conectadas ao teu PC. Despois, escolle o nome do dispositivo da túa placa e executa (se é necesario, cambia o115200 á velocidade de transmisión predeterminada do chip en uso):

pantalla /dev/cu.nome_dispositivo 115200 Substitúe nome_dispositivo co nome atopado ao executar ls /dev/cu.*.

Sistemas Espressif

27 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Fig. 15: Configuración da comunicación serie en PuTTY en Windows

Sistemas Espressif

28 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Fig. 16: Configuración da comunicación serie en PuTTY en Linux

Sistemas Espressif

29 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
· O que estás buscando é un rexistro que se mostre na pantalla. O contido do rexistro dependerá da aplicación cargada en ESP32; consulta o exemploampSaída. Para saír da sesión de pantalla, escriba Ctrl-A + .
Nota: Non esquezas saír da sesión de pantalla despois de comprobar que a comunicación funciona. Se non o fas e simplemente pechas a xanela do terminal, o porto serie non será accesible para cargar o firmware máis tarde.
ExampSaída Un exemploampO rexistro móstrase a continuación. Reinicie a placa se non ve nada. ets 8 de xuño de 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 de xuño de 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 cargador de arranque I (45) arranque: tempo de compilación 18:48:10

Se podes ver a saída do rexistro lexible, significa que a conexión serie funciona e que estás listo para continuar coa instalación e finalmente cargar a aplicación en ESP32.
Nota: Para algunhas configuracións de cableado do porto serie, os pines serie RTS e DTR deben desactivarse no programa do terminal antes de que o ESP32 arranque e produza saída serie. Isto depende do propio hardware; a maioría das placas de desenvolvemento (incluídas todas as placas Espressif) non teñen este problema. O problema existe se RTS e DTR están cableados directamente aos pines EN e GPIO0. Consulta a documentación de esptool para obter máis detalles.
Se chegaches aquí dende o Paso 5. Primeiros pasos en ESP-IDF ao instalar software para o desenvolvemento de ESP32, podes continuar co Paso 5. Primeiros pasos en ESP-IDF.
Monitor IDF Monitor IDF Monitor é principalmente un programa de terminal serie que retransmite datos serie cara a e desde o porto serie do dispositivo de destino. Tamén ofrece algunhas funcións específicas de IDF. Monitor IDF pódese iniciar desde un proxecto IDF executando idf.py monitor.
Atallos de teclado Para unha interacción sinxela con IDF Monitor, use os atallos de teclado que se indican na táboa.

Sistemas Espressif

30 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Atallo de teclado Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (ou A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (ou I)
· Ctrl+H (ou H)
· Ctrl+X (ou X)
Ctrl+C

Acción

Descrición

Saír do programa Tecla de escape do menú Enviar o carácter do menú ao control remoto
Enviar o propio carácter de saída ao control remoto
Restablecer o obxectivo no cargador de arranque para pausar a aplicación a través da liña RTS
Restablecer o taboleiro de destino mediante RTS
Construír e flashear o proxecto

Compilar e flashear só a aplicación

Deter/continuar a impresión da saída do rexistro na pantalla

Deter/continuar a saída do rexistro gardada en file

Tempo de parada/continuaciónamps

impresión

Mostra todos os atallos de teclado

Prema e siga cunha das teclas que se indican a continuación.
Reinicia o destino, no cargador de arranque a través da liña RTS (se está conectada), para que a placa non execute nada. Útil cando precisa esperar a que se inicie outro dispositivo. Reinicia a placa de destino e reinicia a aplicación a través da liña RTS (se está conectada).
Pausa idf_monitor para executar o destino flash do proxecto e logo reanúdao. Calquera código fonte modificado fileOs ficheiros s recompílanse e logo vólvense flashear. Target encrypted-flash execútase se idf_monitor se iniciou co argumento -E. Detén idf_monitor para executar o destino app-flash e logo reanúdao idf_monitor. Semellante ao destino flash, pero só se compila e volve flashear a aplicación principal. Target encrypted-app-flash execútase se idf_monitor se iniciou co argumento -E. Descarta todos os datos serie entrantes mentres está activado. Permite pausar e examinar rapidamente a saída do rexistro sen saír do monitor. Crea un file no directorio do proxecto e a saída escríbese alí file ata que isto se desactive co mesmo atallo de teclado (ou se peche IDF Monitor). IDF Monitor pode imprimir un timestamp ao comezo de cada liña. O máis oportunoamp o formato pódese cambiar segundo o –timestampargumento da liña de comandos -format.

Saia do programa

Interromper a aplicación en execución

Detén o Monitor de IDF e executa o depurador do proxecto GDB para depurar a aplicación en tempo de execución. Isto require que a opción :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME estea activada.

Calquera tecla premida, agás Ctrl-] e Ctrl-T, enviarase a través do porto serie.

Características específicas de IDF

Descodificación automática de enderezos Sempre que ESP-IDF emite un enderezo de código hexadecimal do formato 0x4_______, IDF Monitor usa addr2line_ para buscar a localización no código fonte e atopar o nome da función.
Se unha aplicación ESP-IDF falla e entra en pánico, prodúcese un volcado de rexistro e un backtrace, como o seguinte:

Sistemas Espressif

31 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Produciuse un erro de meditación do gurú do tipo StoreProhibited no núcleo 0. A excepción foi

sen manexo.

Rexistro de volcado:

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 EXCUSAR:

0x0000001d

EXCVADR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90

O monitor de IDF engade máis detalles ao volcado:

Produciuse un erro de meditación do gurú do tipo StoreProhibited no núcleo 0. A excepción foi

sen manexo.

Rexistro de volcado:

PC

: 0x400f360d PS

: 0x00060330 A0

: 0x800dbf56 A1

:

0x3ffb7e00

0x400f360d: facer_algo_para_que_se_bloquee en /home/gus/esp/32/idf/examples/comezar/

ola_mundo/main/./ola_mundo_main.c:57

(en liña por) inner_dont_crash en /home/gus/esp/32/idf/examples/comezar/ola_

mundo/principal/./ola_mundo_principal.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 EXCUSAR:

0x0000001d

EXCVADR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/ ola_mundo/main/./ola_mundo_main.c:57 (en liña por) inner_dont_crash en /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:52 0x400dbf56: still_dont_crash en /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash en /home/gus/esp/32/idf/examples/comezar/ola_mundo/main/./ola_mundo_main.c:42 0x400dbf82: app_main en /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task en /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254

Para descodificar cada enderezo, IDF Monitor executa o seguinte comando en segundo plano: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS

Nota: Define a variable de ambiente ESP_MONITOR_DECODE en 0 ou chama a idf_monitor.py cunha liña de comandos específica.

Sistemas Espressif

32 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
opción: idf_monitor.py –disable-address-decoding para desactivar a descodificación de enderezos.
Reinicio do destino ao conectar Por defecto, IDF Monitor reiniciará o destino ao conectarse a el. O reinicio do chip de destino realízase mediante as liñas serie DTR e RTS. Para evitar que IDF Monitor reinicie automaticamente o destino ao conectarse, chame a IDF Monitor coa opción –no-reset (por exemplo, idf_monitor.py –no-reset).
Nota: A opción –no-reset aplica o mesmo comportamento mesmo ao conectar IDF Monitor a un porto determinado (por exemplo, idf.py monitor –no-reset -p [PORTO]).
Iniciar GDB con GDBStub GDBStub é unha funcionalidade de depuración en tempo de execución útil que se executa no destino e se conecta ao host a través do porto serie para recibir comandos de depuración. GDBStub admite comandos como ler memoria e variables, examinar marcos de pila de chamadas, etc. Aínda que GDBStub é menos versátil que JTAG depuración, non require ningún hardware especial (como un JTAG á ponte USB) xa que a comunicación se realiza completamente a través do porto serie. Pódese configurar un destino para executar GDBStub en segundo plano definindo CONFIG_ESP_SYSTEM_PANIC en GDBStub en tempo de execución. GDBStub executarase en segundo plano ata que se envíe unha mensaxe Ctrl+C a través do porto serie e faga que GDBStub interrompa (é dicir, deteña a execución) o programa, o que permitirá a GDBStub xestionar os comandos de depuración. Ademais, pódese configurar o xestor de pánico para executar GDBStub nun fallo definindo CONFIG_ESP_SYSTEM_PANIC en GDBStub no pánico. Cando se produce un fallo, GDBStub emitirá un patrón de cadea especial a través do porto serie para indicar que se está a executar. En ambos os casos (é dicir, enviando a mensaxe Ctrl+C ou recibindo o patrón de cadea especial), IDF Monitor iniciará automaticamente GDB para permitir que o usuario envíe comandos de depuración. Despois de que GDB saia, o destino reiníciase a través da liña serie RTS. Se esta liña non está conectada, os usuarios poden restablecer o seu obxectivo (premendo o botón Restablecer da placa).
Nota: En segundo plano, IDF Monitor executa o seguinte comando para iniciar GDB:
xtensa-esp32-elf-gdb -ex “configurar baudios serie BAUD” -ex “porto remoto de destino” -ex interrupción compilación/PROXECTO.elf :idf_destinado:`Ola NOME chip`

Filtrado de saída O monitor IDF pódese invocar como idf.py monitor –print-filter="xyz", onde –print-filter é o parámetro para o filtrado de saída. O valor predeterminado é unha cadea baleira, o que significa que se imprime todo.
As restricións sobre o que se imprime pódense especificar como unha serie detag>: elementos ondetag> é o/a tag corda e é un carácter do conxunto {N, E, W, I, D, V, *} que fai referencia a un nivel para o rexistro.
Por example, PRINT_FILTER="tag1:W” coincide e imprime só as saídas escritas con ESP_LOGW(“tag1”, …) ou a un nivel de verbosidade máis baixo, por exemplo ESP_LOGE(“tag1″, …). Non especificando un ou usar * por defecto é o nivel Detallado.
Nota: Emprega o rexistro primario para desactivar na compilación as saídas que non necesitas a través da biblioteca de rexistro. O filtrado de saída co monitor IDF é unha solución secundaria que pode ser útil para axustar as opcións de filtrado sen recompilar a aplicación.
A túa aplicación tags non debe conter espazos, asteriscos * nin dous puntos : para ser compatible coa funcionalidade de filtrado de saída.
Se a última liña da saída na túa aplicación non vai seguida dun retorno de carro, o filtrado da saída pode confundirse, é dicir, o monitor comeza a imprimir a liña e máis tarde descobre que a liña non debería terse escrito. Este é un problema coñecido e pódese evitar engadindo sempre un retorno de carro (especialmente cando non hai ningunha saída inmediatamente despois).

Sistemas Espressif

33 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Exampleis de regras de filtrado:
· * pódese usar para combinar con calquera tagsNon obstante, a cadea PRINT_FILTER=”*:I tag1:E” con respecto a tag1 só imprime erros, porque a regra para tag1 ten unha prioridade maior que a regra para *.
· A regra predeterminada (baleira) é equivalente a *:V porque coincide con cada tag no nivel Verbose ou inferior significa que coincide con todo.
· «*:N» suprime non só as saídas das funcións de rexistro, senón tamén as impresións feitas por printf, etc. Para evitar isto, use *:E ou un nivel de verbosidade máis alto.
· Regras “tag1:V”, “tag1:v”, “tag1:”, “tag1:*”, e “tag1” son equivalentes. · Regra “tag1:O tag1:E” é equivalente a “tag1:E” porque calquera ocorrencia consecuente do mesmo tag
o nome sobrescribe o anterior. · Regra “tag1: I tagSó se imprime en 2:W” tag1 no nivel de verbosidade da información ou inferior e tag2 no Aviso
nivel de verbosidade ou inferior. · Regra “tag1: I tag2:O tag3:N” é esencialmente equivalente ao anterior porque tag3:N especifica
iso tagNon se debe imprimir o número 3. tag3:N na regra “tag1: I tag2:O tag3:N *:V” ten máis sentido porque sen ela tag3:N o
tagPoderíanse imprimir 3 mensaxes; os erros para tag1 e tag2 imprimirase no nivel de verbosidade especificado (ou inferior) e todo o demais imprimirase por defecto.
Un exemplo de filtrado máis complexoampO seguinte fragmento de rexistro foi adquirido sen ningunha opción de filtrado:
carga:0x40078000,len:13564 entrada 0x40078d4c E (31) esp_image: a imaxe en 0x30000 ten un byte máxico non válido W (31) esp_image: a imaxe en 0x30000 ten un modo SPI non válido 255 E (39) arranque: a partición da aplicación de fábrica non é arrancable I (568) cpu_start: CPU Pro activada. I (569) heap_init: Inicializando. RAM dispoñible para asignación dinámica: I (603) cpu_start: código de usuario de inicio da CPU Pro D (309) light_driver: [light_init, 74]:estado: 1, modo: 2 D (318) vfs: esp_vfs_register_fd_range realizouse correctamente para o rango <54; 64) e ID de VFS 1 I (328) wifi: tarefa do controlador wifi: 3ffdbf84, prio:23, pila:4096, núcleo=0
A saída capturada para as opcións de filtrado PRINT_FILTER=”wifi esp_image:E light_driver:I” móstrase a continuación:
E (31) esp_image: a imaxe en 0x30000 ten un byte máxico non válido I (328) wifi: tarefa do controlador wifi: 3ffdbf84, prio:23, pila:4096, núcleo=0
As opcións “PRINT_FILTER="light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V" mostran a seguinte saída:
carga:0x40078000,len:13564 entrada 0x40078d4c I (569) heap_init: Inicializando. RAM dispoñible para asignación dinámica: D (309) light_driver: [light_init, 74]:estado: 1, modo: 2
Problemas coñecidos co monitor IDF
Problemas observados en Windows
· As teclas de frecha, así como algunhas outras teclas, non funcionan en GDB debido ás limitacións da consola de Windows. · Ocasionalmente, cando oidf.pype sae, pode deterse ata 30 segundos antes de que o Monitor IDF se retome. · Cando ogdbpis se executa, pode deterse durante un curto período de tempo antes de comezar a comunicarse co GDBStub.

Sistemas Espressif

34 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Primeiros pasos Configuración estándar da cadea de ferramentas para Linux e macOS

Instalación paso a paso Esta é unha guía detallada que o guiará polo proceso de instalación.
Configuración do entorno de desenvolvemento Estes son os pasos para configurar ESP-IDF para o teu ESP32. · Paso 1. Requisitos previos da instalación · Paso 2. Obter ESP-IDF · Paso 3. Configurar as ferramentas · Paso 4. Configurar as variables de entorno · Paso 5. Primeiros pasos en ESP-IDF
Paso 1. Requisitos previos de instalación Para usar ESP-IDF co ESP32, precisa instalar algúns paquetes de software baseados no seu sistema operativo. Esta guía de configuración axudaralle a instalar todo en sistemas baseados en Linux e macOS.
Para usuarios de Linux Para compilar usando ESP-IDF precisarás os seguintes paquetes. O comando a executar depende da distribución de Linux que esteas a usar:
· Ubuntu e 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 e 8: sudo yum -y actualizar e sudo yum instalar git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 aínda é compatible, pero recoméndase a versión 8 de CentOS para unha mellor experiencia de usuario. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Nota: · É necesario ter a versión 3.16 ou posterior de CMake para usar con ESP-IDF. Executa otools/idf_tools.py install cmakepto para instalar unha versión axeitada se as versións do teu sistema operativo non teñen unha. · Se non ves a túa distribución de Linux na lista anterior, consulta a súa documentación para saber que comando usar para a instalación do paquete.
Para os usuarios de macOS, ESP-IDF empregará a versión de Python instalada por defecto en macOS. · Instalar CMake e Ninja build: Se tes HomeBrew, podes executar: brew install cmake ninja dfu-util Se tes MacPorts, podes executar: sudo port install cmake ninja dfu-util Se non, consulta as páxinas de inicio de CMake e Ninja para obter descargas de instalación de macOS.

Sistemas Espressif

35 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
· Recoméndase encarecidamente instalar tamén ccache para compilacións máis rápidas. Se tes HomeBrew, isto pódese facer mediante brew install ccache ou sudo port install ccache en MacPorts.
Nota: Se se mostra un erro coma este durante calquera paso: xcrun: erro: ruta de desenvolvedor activa non válida (/Library/Developer/CommandLineTools), falta xcrun en: /Library/Developer/CommandLineTools/usr/bin/xcrun
Despois terás que instalar as ferramentas da liña de comandos de XCode para continuar. Podes instalalas executando xcode-select –install.
Usuarios de Apple M1 Se usas a plataforma Apple M1 e ves un erro coma este: AVISO: o directorio da ferramenta xtensa-esp32-elf versión esp-2021r2-patch3-8.4.0 está presente, pero a ferramenta non se atopou ERRO: a ferramenta xtensa-esp32-elf non ten versións instaladas. Executa "install.sh" para instalala.
ou: zsh: tipo de CPU incorrecto no executábel: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Despois terás que instalar Apple Rosetta 2 executando /usr/sbin/softwareupdate –install-rosetta –agree-to-license
Instalación de Python 3 Segundo as notas da versión de macOS Catalina 10.15, non se recomenda o uso de Python 2.7 e Python 2.7 non se incluirá por defecto nas futuras versións de macOS. Comproba que Python tes actualmente: python –version
Se a saída é como Python 2.7.17, o teu intérprete predeterminado é Python 2.7. Se é así, comproba tamén se Python 3 non está xa instalado no teu computador: python3 –version
Se o comando anterior devolve un erro, significa que Python 3 non está instalado. A continuación móstrase unha imaxe superiorview dos pasos para instalar Python 3.
· A instalación con HomeBrew pódese facer do seguinte xeito: brew install python3
· Se tes MacPorts, podes executar: sudo port install python38
Paso 2. Obter ESP-IDF Para crear aplicacións para ESP32, necesitas as bibliotecas de software proporcionadas por Espressif no repositorio ESP-IDF. Para obter ESP-IDF, navega ata o directorio de instalación e clona o repositorio con git clone, seguindo as instrucións a continuación específicas para o teu sistema operativo. Abre o Terminal e executa os seguintes comandos:

Sistemas Espressif

36 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF descargarase en ~/esp/esp-idf. Consulte as versións de ESP-IDF para obter información sobre a versión de ESP-IDF que se vai utilizar nunha situación determinada.
Paso 3. Configurar as ferramentas Ademais de ESP-IDF, tamén precisa instalar as ferramentas que emprega ESP-IDF, como o compilador, o depurador, os paquetes de Python, etc., para proxectos compatibles con ESP32. cd ~/esp/esp-idf ./install.sh esp32
ou con Fish shell cd ~/esp/esp-idf ./install.fish esp32
Os comandos anteriores instalan ferramentas só para ESP32. Se pretendes desenvolver proxectos para máis chips, deberías listalos todos e executalos por exemplo.ampficheiro: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
ou co CD de Fish shell ~/esp/esp-idf ./install.fish esp32,esp32s2
Para instalar ferramentas para todos os destinos compatibles, execute o seguinte comando: cd ~/esp/esp-idf ./install.sh all
ou con Fish shell cd ~/esp/esp-idf ./install.fish all
Nota: Para os usuarios de macOS, se se mostra un erro coma este durante calquera paso:urlerro de apertura [SSL: CERTIFICATE_VERIFY_FAILED] fallou a verificación do certificado: non se pode obter o certificado do emisor local (_ssl.c:xxx)
Podes executar o comando Install Certificates.no cartafol Python do teu ordenador para instalar certificados. Para obter máis detalles, consulta Erro de descarga ao instalar as ferramentas ESP-IDF.

Alternativa File Descargas O instalador das ferramentas descarga unha serie de files adxunto a GitHub Releases. Se o acceso a GitHub é lento, é posible definir unha variable de ambiente para preferir o servidor de descarga de Espressifns para as descargas de recursos de GitHub.

Nota: Esta configuración só controla as ferramentas individuais descargadas das versións de GitHub, non cambia o URLúsase para acceder a calquera repositorio de Git.

Para preferir o servidor de descarga de Espressif ao instalar ferramentas, use a seguinte secuencia de comandos ao executar install.sh:

Sistemas Espressif

37 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

cd ~/esp/esp-idf export IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Personalización da ruta de instalación das ferramentas Os scripts presentados neste paso instalan as ferramentas de compilación que require ESP-IDF dentro do directorio principal do usuario: $HOME/.espressif en Linux. Se desexa instalar as ferramentas nun directorio diferente, defina a variable de ambiente IDF_TOOLS_PATH antes de executar os scripts de instalación. Asegúrese de que a súa conta de usuario teña permisos suficientes para ler e escribir nesta ruta. Se cambia IDF_TOOLS_PATH, asegúrese de que estea definido no mesmo valor cada vez que se execute o script de instalación (install.bat, install.ps1 ou install.sh) e un script de exportación (export.bat, export.ps1 ou export.sh).
Paso 4. Configurar as variables de ambiente As ferramentas instaladas aínda non se engadiron á variable de ambiente PATH. Para que as ferramentas sexan utilizables desde a liña de comandos, débense configurar algunhas variables de ambiente. ESP-IDF proporciona outro script que fai iso. No terminal onde vas usar ESP-IDF, executa:
. $HOME/esp/esp-idf/export.sh
ou para peixes (só compatible desde a versión 3.0.0 de peixes):
. $HOME/esp/esp-idf/export.fish
Fíxate no espazo entre o punto inicial e a ruta! Se pensas usar esp-idf con frecuencia, podes crear un alias para executar export.sh:
1. Copia e pega o seguinte comando no teu shellns profile (.profile, .bashrc, .zprofile, etc.)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Actualiza a configuración reiniciando a sesión do terminal ou executando source [path to profile],
por example, fonte ~/.bashrc. Agora podes executar get_idf para configurar ou actualizar o ambiente esp-idf en calquera sesión de terminal. Tecnicamente, podes engadir export.sh ao teu programa de shellnsfile directamente; porén, non se recomenda. Facelo actívase o entorno virtual IDF en cada sesión de terminal (incluídas aquelas nas que non se necesita IDF), o que frustra o propósito do entorno virtual e probablemente afecta a outro software.
Paso 5. Primeiros pasos en ESP-IDF Agora, xa que se cumpren todos os requisitos, o seguinte tema guiarache sobre como comezar o teu primeiro proxecto. Esta guía axudarache nos primeiros pasos usando ESP-IDF. Sigue esta guía para comezar un novo proxecto no ESP32 e compilar, flashear e monitorizar a saída do dispositivo.
Nota: Se aínda non instalou ESP-IDF, vaia a Instalación e siga as instrucións para obter todo o software necesario para usar esta guía.

Comezar un proxecto Agora xa estás listo para preparar a túa aplicación para ESP32. Podes comezar co proxecto getstarted/hello_world desde exampdirectorio les en ESP-IDF.

Importante: O sistema de compilación ESP-IDF non admite espazos nas rutas a ESP-IDF nin aos proxectos.

Copia o proxecto get-started/hello_world ao directorio ~/esp:

Sistemas Espressif

38 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
Nota: Hai unha variedade de exemplosample proxectos no examples directorio en ESP-IDF. Pode copiar calquera proxecto do mesmo xeito que se presentou anteriormente e executalo. Tamén é posible construír examples no seu lugar sen copialos primeiro.
Conecta o teu dispositivo Agora conecta a túa placa ESP32 ao ordenador e comproba en que porto serie é visible a placa. Os portos serie teñen os seguintes patróns de nomes:
· Linux: comezando por /dev/tty · macOS: comezando por /dev/cu. Se non estás seguro de como comprobar o nome do porto serie, consulta Establecer conexión serie con ESP32 para obter máis detalles.
Nota: Mantén o nome do porto a man xa que o necesitarás nos seguintes pasos.
Configura o teu proxecto Navega ata o directorio hello_world, define ESP32 como destino e executa a utilidade de configuración do proxecto menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
Despois de abrir un novo proxecto, primeiro debes definir o destino con idf.py set-target esp32. Ten en conta que as compilacións e configuracións existentes no proxecto, se as houber, borraranse e inicializaranse neste proceso. O destino pódese gardar na variable de ambiente para omitir este paso por completo. Consulta Seleccionar o chip de destino: set-target para obter máis información. Se os pasos anteriores se realizaron correctamente, aparecerá o seguinte menú:

Fig. 17: Configuración do proxecto: xanela de inicio. Usa este menú para configurar variables específicas do proxecto, por exemplo, o nome e o contrasinal da rede Wi-Fi, a velocidade do procesador, etc. É posible omitir a configuración do proxecto con menuconfig para hello_worldp, xa que este exampcorre con

Sistemas Espressif

39 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
configuración predeterminada.
Atención: Se usa a placa ESP32-DevKitC co módulo ESP32-SOLO-1 ou a placa ESP32-DevKitM-1 co módulo ESP32-MIN1-1(1U), active o modo de núcleo único (CONFIG_FREERTOS_UNICORE) no menú de configuración antes de flashear ex.amples.
Nota: As cores do menú poden ser diferentes no teu terminal. Podes cambiar a aparencia coa opción –style. Executa idf.py menuconfig –help para obter máis información.
Se estás a usar unha das placas de desenvolvemento compatibles, podes acelerar o teu desenvolvemento usando o Paquete de soporte para placas. Consulta Consellos adicionais para obter máis información.
Construír o proxecto Construír o proxecto executando:
compilación idf.py
Este comando compilará a aplicación e todos os compoñentes ESP-IDF, despois xerará o cargador de arranque, a táboa de particións e os binarios da aplicación.
$ idf.py build Executando cmake no directorio /path/to/hello_world/build Executando “cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Aviso sobre valores non inicializados. — Atopouse Git: /usr/bin/git (atopouse a versión “2.17.0”) — Construíndo un compoñente aws_iot baleiro debido á configuración — Nomes dos compoñentes: … — Rutas dos compoñentes: …
… (máis liñas de saída do sistema de compilación)
[527/527] Xerando hello_world.bin esptool.py v2.3.1
Compilación do proxecto completada. Para flashear, executa este comando: ../../../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 ou executa 'idf.py -p PORT flash'
Se non hai erros, a compilación rematará xerando o firmware binario .bin files.
Instala no dispositivo Instala os binarios que acabas de compilar (bootloader.bin, partition-table.bin e hello_world.bin) na túa placa ESP32 executando:
idf.py -p PORT [-b BAUD] flash
Substitúe PORT polo nome do porto serie da túa placa ESP32. Tamén podes cambiar a velocidade en baudios do flash substituíndo BAUD pola velocidade en baudios que precises. A velocidade en baudios predeterminada é 460800. Para obter máis información sobre os argumentos de idf.py, consulta idf.py.
Nota: A opción flash compila e flashea o proxecto automaticamente, polo que non é necesario executar idf.py build.

Sistemas Espressif

40 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar

Atopouse algún problema ao flashear? Se executa o comando dado e ve erros como "Failed to connectp", pode haber varias razóns para isto. Unha das razóns pode ser que os problemas atopados por esptool.py, a utilidade que chama o sistema de compilación para restablecer o chip, interactuar co cargador de arranque da ROM e flashear o firmware. Unha solución sinxela que podes probar é o restablecemento manual que se describe a continuación e, se non axuda, podes atopar máis detalles sobre posibles problemas en Resolución de problemas.
esptool.py restablece o ESP32 automaticamente ao activar as liñas de control DTR e RTS do chip conversor de USB a serie, é dicir, FTDI ou CP210x (para obter máis información, consulte Establecer conexión en serie con ESP32). As liñas de control DTR e RTS están conectadas á súa vez aos pines GPIO0 e CHIP_PU (EN) do ESP32, polo que se modifica o volume.tagOs niveis de DTR e RTS iniciarán o ESP32 no modo de descarga de firmware. Como exemploampPor exemplo, comproba o esquema da placa de desenvolvemento ESP32 DevKitC.
En xeral, non deberías ter problemas coas placas de desenvolvemento oficiais de esp-idf. Non obstante, esptool.py non pode restablecer o teu hardware automaticamente nos seguintes casos:
· O teu hardware non ten as liñas DTR e RTS conectadas a GPIO0 e CHIP_PU · As liñas DTR e RTS están configuradas de xeito diferente · Non existen en absoluto tales liñas de control en serie
Dependendo do tipo de hardware que teñas, tamén é posible poñer manualmente a túa placa ESP32 en modo de descarga de firmware (reinicio).
· Para as placas de desenvolvemento producidas por Espressif, esta información pódese atopar nas respectivas guías de inicio ou guías do usuario. Por exemploampé dicir, para restablecer manualmente unha placa de desenvolvemento ESP-IDF, manteña premido o botón de arranque (GPIO0) e prema o botón EN (CHIP_PU).
· Para outros tipos de hardware, proba a desactivar GPIO0.

Funcionamento normal Cando parpadea, verá o rexistro de saída semellante ao seguinte:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –antes=reinicio_predeterminado -despois=reinicio_hard write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 táboa_de_particións/tábela-de-particións.bin 0x1000 cargador_de_arrencada/cargador_de_arrencada.bin 0x10000 ola_mundo.bin esptool.py v3.0-dev Porto serie /dev/ttyUSB0 Conectando…….._ O chip é ESP32D0WDQ6 (revisión 0) Características: WiFi, BT, dobre núcleo, esquema de codificación Ningún O cristal é de 40 MHz MAC: 24:0a:c4:05:b9:14 Cargando o stub… Executando o stub… Stub en execución… Cambiando a velocidade en baudios a 460800 Modificada. Configurando o tamaño da memoria flash... Comprimidos 3072 bytes a 103... Escribindo a 0x00008000... (100 %) Escribiron 3072 bytes (103 comprimidos) a 0x00008000 en 0.0 segundos (5962.8 kbit/s efectivos)... Hash de datos verificado. Comprimidos 26096 bytes a 15408... Escribindo a 0x00001000... (100 %) Escribiron 26096 bytes (15408 comprimidos) a 0x00001000 en 0.4 segundos (546.7 kbit/s efectivos)... Hash de datos verificado. Comprimidos 147104 bytes a 77364… Escribindo en 0x00010000… (20 %) Escribindo en 0x00014000… (40 %) Escribindo en 0x00018000… (60 %) Escribindo en 0x0001c000… (80 %)
(continúa na seguinte páxina)

Sistemas Espressif

41 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
(continuación da páxina anterior) Escribindo a 0x00020000… (100 %) Escribíronse 147104 bytes (77364 comprimidos) a 0x00010000 en 1.9 segundos (velocidade efectiva de 615,5 kbit/s)… Hash de datos verificado.
Saíndo... Restablecemento completo mediante un pin RTS... Feito
Se non hai problemas ao final do proceso de flasheo, a placa reiniciarase e iniciará a aplicación thehello_worldp. Se queres usar o IDE Eclipse ou VS Code en lugar de executar idf.py, consulta o complemento Eclipse, a extensión VSCode.
Monitorizar a saída Para comprobar se ohello_worldpis está a executarse, escribe idf.py -p PORT monitor (non esquezas substituír PORT polo nome do teu porto serie). Este comando inicia a aplicación IDF Monitor:
$ idf.py -p monitor Executando idf_monitor no directorio […]/esp/hello_world/build Executando “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor activado 115200 —– Saír: Ctrl+] | Menú: Ctrl+T | Axuda: Ctrl+T seguido de Ctrl+H –ets 8 de xuño de 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 de xuño de 2016 00:22:57 …
Despois de que os rexistros de inicio e diagnóstico se despracen cara arriba, deberías ver impreso o *Hello world!* pola aplicación.
… Ola mundo! Reiniciando en 10 segundos… Este é un chip esp32 con 2 núcleos de CPU, WiFi/BT/BLE, revisión 1 de Silicon, memoria flash externa de 2 MB Tamaño mínimo de memoria dinámica libre: 298968 bytes Reiniciando en 9 segundos… Reiniciando en 8 segundos… Reiniciando en 7 segundos…
Para saír do monitor IDF, use o atallo Ctrl+]. Se o monitor IDF falla pouco despois da carga ou, se en lugar das mensaxes anteriores, ve lixo aleatorio semellante ao que se mostra a continuación, é probable que a súa placa estea a usar un cristal de 26 MHz. A maioría dos deseños de placas de desenvolvemento usan 40 MHz, polo que ESP-IDF usa esta frecuencia como valor predeterminado.

Se tes un problema deste tipo, fai o seguinte:
1. Saia do monitor. 2. Volva ao menúconfiguración. 3. Vaia a Configuración de compoñentes > Axustes de hardware > Configuración principal de XTAL > XTAL principal
frecuencia e, a seguir, cambia CONFIG_XTAL_FREQ_SEL a 26 MHz. 4. Despois diso, compila e flashea a aplicación de novo.

Sistemas Espressif

42 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
Na versión actual de ESP-IDF, as principais frecuencias XTAL compatibles con ESP32 son as seguintes:
· 26 MHz · 40 MHz
Nota: Podes combinar a compilación, o flasheo e a monitorización nun só paso executando: idf.py -p PORT flash monitor
Véxase tamén: · Monitor IDF para obter atallos prácticos e máis detalles sobre o uso do monitor IDF. · idf.py para obter unha referencia completa dos comandos e opcións de idf.py.
Iso é todo o que necesitas para comezar con ESP32! Agora estás listo para probar outros exemplos.amples ou pasar directamente a desenvolver as túas propias aplicacións.
Importante: Algúns dos exampOs ficheiros non admiten ESP32 porque o hardware requirido non está incluído no ESP32, polo que non se pode soportar. Se se está a construír un exemploample, por favor, comproba o README file para a táboa Obxectivos compatibles. Se isto está presente, incluído o obxectivo ESP32, ou a táboa non existe en absoluto, o exampfuncionará en ESP32.
Consellos adicionais
Problemas de permisos /dev/ttyUSB0 Con algunhas distribucións de Linux, pode aparecer a mensaxe de erro "Erro ao abrir o porto /dev/ttyUSB0" ao actualizar o ESP32. Isto pódese solucionar engadindo o usuario actual ao grupo de saída por discado.
Compatibilidade con Python ESP-IDF admite Python 3.7 ou posterior. Recoméndase actualizar o sistema operativo a unha versión recente que cumpra este requisito. Outras opcións inclúen a instalación de Python desde as fontes ou o uso dun sistema de xestión de versións de Python como pyenv.
Comezar co paquete de soporte da placa Para acelerar a creación de prototipos nalgunhas placas de desenvolvemento, podes usar paquetes de soporte da placa (BSP), que fan que a inicialización dunha placa en particular sexa tan sinxela como unhas poucas chamadas de función. Un BSP normalmente admite todos os compoñentes de hardware proporcionados na placa de desenvolvemento. Ademais das funcións de definición de pinout e inicialización, un BSP inclúe controladores para os compoñentes externos, como sensores, pantallas, códecs de audio, etc. Os BSP distribúense a través do Xestor de compoñentes de IDF, polo que se poden atopar no Rexistro de compoñentes de IDF. Aquí tes un exemplo.ampUn exemplo de como engadir ESP-WROVER-KIT BSP ao teu proxecto: idf.py add-dependency esp_wrover_kit
Máis exampAs poucas referencias ao uso de BSP pódense atopar no exemplo de BSPampcartafol les.
Consello: Actualización de ESP-IDF Recoméndase actualizar ESP-IDF de cando en vez, xa que as versións máis recentes corrixen erros e/ou ofrecen novas funcionalidades. Ten en conta que cada versión principal e menor de ESP-IDF ten un período de soporte asociado e, cando unha rama de versión se achega ao fin da súa vida útil (EOL), anímase a todos os usuarios a actualizar os seus proxectos a versións máis recentes de ESP-IDF. Para obter máis información sobre os períodos de soporte, consulta Versións de ESP-IDF.

Sistemas Espressif

43 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 1. Comezar
A forma máis sinxela de facer a actualización é eliminar o cartafol esp-idf existente e clonalo de novo, coma se estiveses a realizar a instalación inicial descrita no Paso 2. Obtén ESP-IDF. Outra solución é actualizar só o que cambiou. O procedemento de actualización depende da versión de ESP-IDF que esteas a usar. Despois de actualizar ESP-IDF, executa de novo o script de instalación, no caso de que a nova versión de ESP-IDF requira diferentes versións das ferramentas. Consulta as instrucións no Paso 3. Configura as ferramentas. Unha vez instaladas as novas ferramentas, actualiza o ambiente usando o script de exportación. Consulta as instrucións no Paso 4. Configura as variables de ambiente.
Documentos relacionados · Establecer conexión en serie con ESP32 · Complemento de Eclipse · Extensión VSCode · Monitor IDF
1.4 Crea o teu primeiro proxecto
Se xa tes instalado ESP-IDF e non usas IDE, podes compilar o teu primeiro proxecto desde a liña de comandos seguindo Iniciar un proxecto en Windows ou Iniciar un proxecto en Linux e macOS.
1.5 Desinstalar ESP-IDF
Se queres eliminar ESP-IDF, segue Desinstalar ESP-IDF.

Sistemas Espressif

44 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 2
Referencia da API
2.1 Convencións da API
Este documento describe as convencións e suposicións comúns ás interfaces de programación de aplicacións (API) de ESP-IDF. ESP-IDF proporciona varios tipos de interfaces de programación:
· Funcións, estruturas, enumeracións, definicións de tipos e macros de preprocesador en C declaradas na cabeceira pública files de compoñentes ESPIDF. Varias páxinas da sección Referencia da API da guía de programación conteñen descricións destas funcións, estruturas e tipos.
· Funcións do sistema de compilación, variables predefinidas e opcións. Estas están documentadas na guía do sistema de compilación. · As opcións de Kconfig pódense usar no código e no sistema de compilación (CMakeLists.txt) files. · As ferramentas do servidor e os seus parámetros da liña de comandos tamén forman parte da interface ESP-IDF. ESP-IDF consta de compoñentes escritos especificamente para ESP-IDF, así como para bibliotecas de terceiros. Nalgúns casos, engádese un envoltorio específico de ESP-IDF á biblioteca de terceiros, o que proporciona unha interface máis sinxela ou mellor integrada co resto das funcionalidades de ESP-IDF. Noutros casos, a API orixinal da biblioteca de terceiros preséntase aos desenvolvedores da aplicación. As seguintes seccións explican algúns dos aspectos das API de ESP-IDF e o seu uso.
2.1.1 Tratamento de erros
A maioría das API de ESP-IDF devolven códigos de erro definidos co tipo esp_err_t. Consulta a sección Xestión de erros para obter máis información sobre os enfoques de xestión de erros. A Referencia de códigos de erro contén a lista de códigos de erro devoltos polos compoñentes de ESP-IDF.
2.1.2 Estruturas de configuración
Importante: A inicialización correcta das estruturas de configuración é unha parte importante para que a aplicación sexa compatible con versións futuras de ESP-IDF.
A maioría das funcións de inicialización ou configuración en ESP-IDF toman como argumento un punteiro a unha estrutura de configuración. Por exemplo,ampLe:
45

Capítulo 2. Referencia da API

const esp_timer_create_args_t os_meus_args_temporizador = { .callback = &o_meu_timer_callback, .arg = callback_arg, .name = “o_meu_temporizador”
}; esp_timer_handle_t o meu_temporizador; esp_err_t err = esp_timer_create(&os_meus_argumentos_do_temporizador, &o meu_temporizador);
As funcións de inicialización nunca almacenan o punteiro á estrutura de configuración, polo que é seguro asignar a estrutura na pila.
A aplicación debe inicializar todos os campos da estrutura. O seguinte é incorrecto:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Incorrecto! Os campos .arg e .name non están inicializados */ esp_timer_create(&my_timer_args, &my_timer);
A maioría dos ex ESP-IDFampOs ficheiros usan inicializadores designados por C99 para a inicialización da estrutura, xa que proporcionan unha forma concisa de definir un subconxunto de campos e inicializar a cero os campos restantes:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Correcto, os campos .arg e .name están inicializados con cero */
};
A linguaxe C++ non admite a sintaxe dos inicializadores designados ata C++ 20; porén, o compilador GCC admítea parcialmente como extensión. Ao usar as API ESP-IDF en código C++, podes considerar usar o seguinte patrón:
esp_timer_create_args_t my_timer_args = {}; /* Todos os campos están inicializados en cero */ my_timer_args.callback = &my_timer_callback;

Inicializadores predeterminados
Para algunhas estruturas de configuración, ESP-IDF proporciona macros para definir os valores predeterminados dos campos:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG expándese a un inicializador designado.
Agora todos os campos están definidos cos valores predeterminados. Calquera campo aínda se pode modificar: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Recoméndase usar macros de inicializador predeterminadas sempre que se proporcionen para unha estrutura de configuración particular.

2.1.3 API privadas
Cabeceira determinada fileAs API en ESP-IDF conteñen API destinadas a ser usadas só no código fonte de ESP-IDF e non polas aplicacións. Esa cabeceira fileAs s adoitan conter private ou esp_private no seu nome ou ruta. Certos compoñentes, como hal, só conteñen API privadas. As API privadas poden eliminarse ou modificarse dun xeito incompatible entre versións menores ou de parches.

2.1.4 Compoñentes en example proxectos
ESP-IDF exampOs ficheiros conteñen unha variedade de proxectos que demostran o uso das API de ESP-IDF. Para reducir a duplicación de código no exemploamples, algúns axudantes comúns defínense dentro de compoñentes que usan varios exemplosamples.

Sistemas Espressif

46 Enviar comentario sobre o documento

Versión v5.0.9

Capítulo 2. Referencia da API
Isto inclúe compoñentes situados

Documentos/Recursos

Placa de desenvolvemento do kit de desenvolvemento ESP32 de Espressif Systems [pdfGuía do usuario
Placa de desenvolvemento ESP32 Dev Kitc, ESP32, Placa de desenvolvemento Dev Kitc, Placa de desenvolvemento Kitc, Placa de desenvolvemento, Placa

Referencias

Deixa un comentario

O teu enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *