Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Lire la table des partitions des ESP32 déjà déployés avant d'activer l'OTA

Lire la table des partitions des ESP32 déjà déployés avant d'activer l'OTA

Résolu 6 5

Traduit de English par IA ·

Nous avons 31 cartes ESP32-WROOM-32 installées dans des remorques frigorifiques, qui envoient des températures à Hermetry via MQTT. Le firmware est le nôtre, compilé avec Arduino core 2.x. Nous aimerions commencer à utiliser les mises à jour firmware d’Hermetry au lieu de nous déplacer au dépôt avec un ordinateur portable.Problème : les 12 premières cartes ont été flashées par un prestataire, et personne n’a noté quel schéma de partitionnement il a choisi. Notre build actuel fait environ 1,4 Mo. Si certaines cartes ont été flashées avec une seule grande partition d’application, l’OTA n’a nulle part où écrire, et je préfère le savoir avant d’affecter quoi que ce soit et de voir la moitié de la flotte passer en Failed.Existe-t-il un moyen de lire la table des partitions d’une carte en fonctionnement sans la reflasher ? Idéalement à distance, car les remorques sont réparties sur trois dépôts.

♥ 2

Traduit de English par IA ·

esptool read_flash à 0x8000 ?

♥ 2

Traduit de English par IA ·

Cela nécessite toutefois un port USB. Les trailers sont absents pendant la majeure partie de la semaine.

♥ 2

Traduit de English par IA ·

Ce n’est pas ta question, mais puisque tu y es : enregistre une clé de signature et laisse « Autoriser les images non signées » désactivé sur ce profil. Le mode non signé est réservé aux appareils de test, et les remorques sur la route ne sont pas des appareils de test.

♥ 2

Traduit de English par IA ·

Nous avons eu exactement ce cas avec des cartes compteurs installées par un prestataire. Vous pouvez interroger le firmware en cours : l’API de partitions d’ESP-IDF fonctionne très bien depuis le core Arduino. Envoyez un build aux cartes que vous pouvez atteindre (celles de votre propre lot), ou attendez que les autres soient au dépôt ; il remontera la table en attributs client une fois, après la connexion :

#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());
}

Ensuite, dans l’onglet Attributes, scope Client, vous verrez part.app0, part.app1, part.otadata etc. pour chaque carte. Ce qu’il faut voir : deux slots applicatifs (ota_0 et ota_1, appelés app0/app1 dans les tables Arduino) plus otadata, chacun au moins aussi grand que votre image. Si vous ne voyez qu’un seul app0 de 3 Mo et pas d’app1, c’est le schéma « Huge APP », pas d’OTA possible.Pour les cartes sur lesquelles vous ne pouvez pas envoyer un nouveau build, la méthode d’emily fonctionne au dépôt :

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

Les cartes avec le mauvais schéma nécessitent un reflash USB unique avec une table à deux slots. Ensuite, l’OTA fonctionnera durablement.

Timestamps in UTC or it didn't happen.
Solution acceptée♥ 1

Traduit de English par IA ·

C’est fait. 9 des 12 appareils du sous-traitant sont revenus avec une seule app0 de 3 Mo, donc pas d’OTA sur ceux-là sans intervention sur site. Les 3 autres et tous les nôtres ont app0/app1 à 1,25 Mo chacune, ce qui est juste pour notre build de 1,4 Mo. Je passe donc notre table à la version minimale avec SPIFFS et des slots de 1,9 Mo avant d’aller plus loin. Heureusement qu’on a vérifié d’abord.

♥ 1

Traduit de English par IA ·

En tant que personne qui valide les visites de dépôt : merci de vérifier ceci avant que le prochain lot ne soit flashé.

♥ 0
7 sujets de 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager