Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Leer la tabla de particiones de los ESP32 ya desplegados antes de activar OTA

Leer la tabla de particiones de los ESP32 ya desplegados antes de activar OTA

Resuelto 6 5

Traducido del English por IA ·

Tenemos 31 placas ESP32-WROOM-32 en remolques refrigerados que envían temperaturas a Hermetry por MQTT. El firmware es nuestro, compilado con Arduino core 2.x. Nos gustaría empezar a usar las actualizaciones de firmware de Hermetry en lugar de desplazarnos al depósito con un portátil.Problema: las primeras 12 placas fueron flasheadas por un contratista y nadie anotó qué esquema de particiones eligió. Nuestra compilación actual ocupa unos 1,4 MB. Si algunas placas se flashearon con una única partición de aplicación grande, OTA no tendrá dónde escribir, y prefiero saberlo antes de asignar nada y ver cómo la mitad de la flota pasa a Failed.¿Hay alguna forma de leer la tabla de particiones de una placa en funcionamiento sin volver a flashearla? Idealmente de forma remota, ya que los remolques están repartidos en tres depósitos.

♥ 2

Traducido del English por IA ·

¿esptool read_flash en 0x8000?

♥ 2

Traducido del English por IA ·

Eso necesita USB, sin embargo. Los trailers están fuera la mayor parte de la semana.

♥ 2

Traducido del English por IA ·

No es tu pregunta, pero ya que estás en ello: registra una clave de firma y deja desactivada la opción «Permitir imágenes sin firma» en ese perfil. Las imágenes sin firma son solo para dispositivos de prueba, y los remolques en la carretera no son dispositivos de prueba.

♥ 2

Traducido del English por IA ·

Tuve exactamente esta situación con placas de contadores que instaló un contratista. Puedes preguntarle al firmware que está corriendo: la API de particiones de ESP-IDF funciona bien desde el core de Arduino. Sube un build a las placas a las que puedas acceder (las de tu propio lote), o espera a que las demás estén en el depósito; reportará la tabla como atributos de cliente una vez después de conectarse:

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

Luego, en la pestaña Attributes, ámbito Client, verás part.app0, part.app1, part.otadata y demás por placa. Lo que quieres ver son dos slots de aplicación (ota_0 y ota_1, llamados app0/app1 en las tablas de Arduino) más otadata, cada uno al menos tan grande como tu imagen. Si ves un solo app0 de 3 MB y ningún app1, es el esquema «Huge APP», no es posible OTA.Para las placas a las que no puedes enviar un build nuevo, el método de emily funciona en el depósito:

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

Las placas con el esquema equivocado necesitan un reflasheo único por USB con una tabla de dos slots. Después, OTA funciona para siempre.

Timestamps in UTC or it didn't happen.
Solución aceptada♥ 1

Traducido del English por IA ·

Hecho. 9 de los 12 del contratista devolvieron una única app0 de 3 MB, así que en esos no hay OTA sin una visita. Los otros 3 y todos los nuestros tienen app0/app1 de 1,25 MB cada una, lo cual es justo para nuestra compilación de 1,4 MB, así que estoy cambiando nuestra tabla a la versión mínima con SPIFFS y slots de 1,9 MB antes de seguir. Menos mal que lo comprobamos primero.

♥ 1

Traducido del English por IA ·

Como la persona que aprueba las visitas al depósito: por favor, revisa esto antes de que se flashee el próximo lote.

♥ 0
Viendo 7 entradas – de la 1 a la 7 (de un total de 7)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir