Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Auslesen der Partitionstabelle bereits installierter ESP32 vor der Aktivierung von OTA

Auslesen der Partitionstabelle bereits installierter ESP32 vor der Aktivierung von OTA

Gelöst 6 5

Von English mit KI übersetzt ·

Wir haben 31 ESP32-WROOM-32-Boards in Kühlaufliegern, die Temperaturen über MQTT an Hermetry melden. Die Firmware stammt von uns und wird mit Arduino core 2.x gebaut. Wir möchten die Firmware-Updates von Hermetry nutzen, statt mit dem Laptop zum Depot zu fahren.Problem: Die ersten 12 Boards wurden von einem Dienstleister geflasht, und niemand hat notiert, welches Partitionsschema er gewählt hat. Unser aktueller Build ist etwa 1,4 MB groß. Falls einige Boards mit einer einzigen großen App-Partition geflasht wurden, hat OTA keinen Platz zum Schreiben, und ich möchte das wissen, bevor ich etwas zuweise und zusehe, wie die Hälfte der Flotte auf Failed geht.Gibt es eine Möglichkeit, die Partitionstabelle eines laufenden Boards auszulesen, ohne es neu zu flashen? Idealerweise aus der Ferne, da die Trailer auf drei Depots verteilt sind.

♥ 2

Von English mit KI übersetzt ·

esptool read_flash bei 0x8000?

♥ 2

Von English mit KI übersetzt ·

Dafür wird aber USB benötigt. Die Trailer sind die meiste Woche unterwegs.

♥ 2

Von English mit KI übersetzt ·

Nicht deine Frage, aber wo du schon dabei bist: Registriere einen Signaturschlüssel und lass „Unsignierte Images zulassen“ in diesem Profil deaktiviert. Unsigniert ist nur für Testgeräte gedacht, und Anhänger auf der Straße sind keine Testgeräte.

♥ 2

Von English mit KI übersetzt ·

Genau diese Situation hatten wir mit Zählerplatinen, die ein Dienstleister installiert hat. Sie können die laufende Firmware fragen: Die Partition-API in ESP-IDF funktioniert problemlos über den Arduino-Core. Spielen Sie einen Build auf die Boards auf, die Sie erreichen können (die aus Ihrer eigenen Charge), oder warten Sie, bis die anderen im Depot sind; diese meldet die Tabelle nach dem Verbinden einmal als Client-Attribute:

#include "esp_partition.h"

void reportPartitions() {
  String json = "{";
  esp_partition_iterator_t it =
      esp_partition_find(ESP_PARTITION_TYPE_ANY, ESP_PARTITION_SUBTYPE_ANY, NULL);
  bool first = true;
  while (it != NULL) {
    const esp_partition_t *p = esp_partition_get(it);
    if (!first) json += ",";
    json += ""part." + String(p->label) + "":"" +
            String(p->address, HEX) + "/" + String(p->size) + """;
    first = false;
    it = esp_partition_next(it);
  }
  esp_partition_iterator_release(it);
  json += "}";
  mqtt.publish("v1/attributes", json.c_str());
}

Dann zeigt der Reiter Attributes, Scope Client, pro Board part.app0, part.app1, part.otadata usw. Gewünscht sind zwei App-Slots (ota_0 und ota_1, in den Arduino-Tabellen app0/app1 genannt) plus otadata, jeweils mindestens so groß wie Ihr Image. Sehen Sie nur ein app0 mit 3 MB und kein app1, handelt es sich um das Schema „Huge APP“, dann ist kein OTA möglich.Für Boards, auf die sich kein neuer Build spielen lässt, funktioniert im Depot Emilys Vorgehen:

esptool.py --port /dev/ttyUSB0 read_flash 0x8000 0xc00 pt.bin
python gen_esp32part.py pt.bin

Boards mit falschem Schema brauchen einen einmaligen USB-Reflash mit einer Tabelle mit zwei Slots. Danach funktioniert OTA dauerhaft.

Timestamps in UTC or it didn't happen.
Akzeptierte Lösung♥ 1

Von English mit KI übersetzt ·

Erledigt. 9 der 12 Geräte des Auftragnehmers kamen mit einer einzigen 3 MB großen app0 zurück, bei diesen ist OTA also ohne Vor-Ort-Termin nicht möglich. Bei den anderen 3 und bei all unseren Geräten sind app0/app1 jeweils 1,25 MB groß, was für unseren 1,4 MB großen Build knapp ist. Deshalb stelle ich unsere Tabelle auf die minimale SPIFFS-Variante mit 1,9 MB großen Slots um, bevor wir weitermachen. Gut, dass wir zuerst nachgesehen haben.

♥ 1

Von English mit KI übersetzt ·

Als diejenige, die die Depotbesuche freigibt: Bitte prüfe das, bevor die nächste Charge geflasht wird.

♥ 0
Ansicht von 7 Beiträgen – 1 bis 7 (von insgesamt 7)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.

Mitdiskutieren

Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

Teilen