ESPDocs Logo

ESPDocs

Debugging & Engenharia de Firmware

Diagnóstico & Erros Comuns

Guia técnico definitivo para diagnosticar Brownout, Guru Meditation, Watchdog Timeouts, Stack Overflow e falhas de hardware no ESP32. Entenda a causa raiz no silício e aplique soluções profissionais.

Baseado no artigo publicado no Ciência Embarcada, ampliado com novos cenários e decodificador interativo.

Decodificador Rápido de Log Serial

Cole o trecho do monitor serial para diagnosticar a falha instantaneamente.

Exemplos:
Sintomas:
Filtrar por Domínio Técnico
⚡Alimentação & HardwareGravidade: Alta

Brownout Detector Reset (Queda de Tensão)

A tensão de alimentação do ESP32 caiu abaixo do limiar operacional seguro (aproximadamente 2.8V ~ 2.43V).

Ver diagnóstico & solução
⚡Alimentação & HardwareGravidade: Crítica

Conflito de Strapping Pins no Boot

O ESP32 não inicializa o firmware da Flash ou entra acidentalmente em modo de download porque um pino de strapping foi forçado a um nível lógico incorreto no reset.

Ver diagnóstico & solução
💥Pânicos de CPU & Guru MeditationGravidade: Crítica

Guru Meditation: LoadProhibited / StoreProhibited

A CPU tentou ler (Load) ou escrever (Store) em um endereço de memória inacessível ou inválido, tipicamente o endereço nulo 0x00000000.

Ver diagnóstico & solução
💥Pânicos de CPU & Guru MeditationGravidade: Alta

Cache Error / InstructionFetchError em ISRs

Uma rotina de interrupção (ISR) tentou executar código ou ler dados da Flash SPI enquanto a Flash estava desativada para uma operação de escrita/leitura.

Ver diagnóstico & solução
🐕FreeRTOS & MultitarefaGravidade: Crítica

Task Watchdog Timer (TWDT) Timeout

Uma tarefa de alta prioridade entrou em um loop bloqueante e não cedeu tempo de CPU, impedindo que a tarefa IDLE alimente o cão de guarda.

Ver diagnóstico & solução
🐕FreeRTOS & MultitarefaGravidade: Crítica

Stack Overflow (Estouro de Pilha da Tarefa)

A tarefa consumiu mais memória de pilha (Stack) do que a quantidade alocada em sua criação, corrompendo o canário de proteção do RTOS.

Ver diagnóstico & solução
💾Memória, Heap & PSRAMGravidade: Alta

Fragmentação de Heap e Memory Leaks

O microcontrolador falha ao alocar memória mesmo reportando uma quantidade total de memória livre aparentemente alta.

Ver diagnóstico & solução
💾Memória, Heap & PSRAMGravidade: Alta

Falha de Alocação DMA em Memória Externa (PSRAM)

O firmware tentou passar um buffer alocado em PSRAM externa para um periférico com DMA (SPI, I2S, LCD, SDMMC) que só tem acesso à SRAM interna.

Ver diagnóstico & solução
🔌Bootloader & GravaçãoGravidade: Média

Failed to connect to ESP32: Timed out waiting for packet header

A ferramenta de gravação (esptool / Arduino IDE / PlatformIO) não conseguiu colocar o microcontrolador no modo de bootloader UART.

Ver diagnóstico & solução
📡Conectividade & ProtocolosGravidade: Alta

Falha de Handshake TLS/HTTPS por Relógio Desincronizado

Conexões seguras HTTPS, AWS IoT, MQTT com TLS ou APIs Web falham porque o relógio interno do ESP32 está na data padrão de 01/01/1970.

Ver diagnóstico & solução

Checklist de Prevenção para Produção

Itens essenciais para validar antes de enviar seu hardware ou firmware para campo.

Checklist de Hardware & Alimentação

  • Capacitor de 10µF ~ 100µF Low-ESR no VCC + cerâmico de 100nF próximo ao chip.
  • LDO dimensionado para suportar picos de corrente de no mínimo 600mA a 1A com folga térmica.
  • Nenhum periférico forçando níveis lógicos em Strapping Pins no momento do boot.
  • Capacitor de 10µF ou 1µF no pino EN (RST) para auto-reset estável no upload.

Checklist de Firmware & FreeRTOS

  • Todas as tarefas FreeRTOS cedem CPU através de vTaskDelay ou filas/semáforos.
  • Todas as ISRs decoradas com `IRAM_ATTR` e sem chamadas bloqueantes.
  • Sem uso contínuo de objetos `String` do Arduino em loops para evitar fragmentação de Heap.
  • Sincronização de horário SNTP antes de iniciar conexões criptografadas TLS/HTTPS.