Wie man ESP32 lwIP behebt: assert failed: tcpip_inpkt (Invalid mbox)

Problem

Ihr Mikrocontroller stürzt mit einer Assertions-Fehler wie

lwip_assert_failed.txt
assert failed: tcpip_inpkt /IDF/components/lwip/lwip/src/api/tcpip.c:252 (Invalid mbox)

Lösung

Dieser Fehler tritt auf, weil der TCP/IP-Stack vor der Verwendung nicht initialisiert wurde.

Beachten Sie, dass esp_netif_init() intern tcpip_init() aufruft, sodass Sie tcpip_init() nicht aufrufen müssen, wenn Sie esp_netif_init() verwenden:

esp32_tcpip_init.cpp
#include <lwip/tcpip.h>
#include <esp_netif.h>

void setup() {
  // Rufen Sie dies früh in Ihrer setup-Funktion auf!
  esp_netif_init();
}

Falls Sie den ESP-High-Level-Stack nicht verwenden, stellen Sie sicher, dass Sie tcpip_init(nullptr, nullptr) aufrufen, bevor Sie lwIP-Funktionen verwenden.

esp32_tcpip_init_only.cpp
#include <lwip/tcpip.h>

void setup() {
  // Rufen Sie dies früh in Ihrer setup-Funktion auf!
  tcpip_init(nullptr, nullptr);
}

Check out similar posts by category: ESP32, LwIP