Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

OTA'yı etkinleştirmeden önce sahada çalışan ESP32'lerin bölüm tablosunu okumak

OTA'yı etkinleştirmeden önce sahada çalışan ESP32'lerin bölüm tablosunu okumak

Çözüldü 6 5

Yapay zekâ tarafından English dilinden çevrildi ·

Hermetry’ye MQTT üzerinden sıcaklık bildiren, soğutmalı tırlarda çalışan 31 adet ESP32-WROOM-32 kartımız var. Firmware bizim yazdığımız kod ve Arduino core 2.x ile derleniyor. Hermetry’nin firmware güncellemelerini, dizüstü bilgisayarla depoya gitmek yerine kullanmaya başlamak istiyoruz.Sorun şu: ilk 12 kart bir yüklenici tarafından flashlendi ve hangi bölüm şemasını seçtiğini kimse not etmedi. Mevcut derlemimiz yaklaşık 1,4 MB. Bazı kartlar tek ve büyük bir uygulama bölümüyle flashlendiyse OTA yazacak yer bulamaz; bir şey atamadan önce bunu bilmek ve filonun yarısının Failed durumuna düşmesini izlemek istemem.Çalışan bir kartın bölüm tablosunu, yeniden flashlemeden okumanın bir yolu var mı? Tırlar üç depoya dağıldığı için ideal olarak uzaktan.

♥ 2

Yapay zekâ tarafından English dilinden çevrildi ·

0x8000 adresinde esptool read_flash?

♥ 2

Yapay zekâ tarafından English dilinden çevrildi ·

Bunun için yine de USB gerekiyor. Trailer’lar hafta boyunca çoğunlukla dışarıda.

♥ 2

Yapay zekâ tarafından English dilinden çevrildi ·

Sorduğun soru bu değil ama madem bunla uğraşıyorsun: bir imzalama anahtarı kaydet ve o profilde “İmzasız imajlara izin ver” seçeneğini kapalı tut. İmzasız imajlar yalnızca test cihazları içindir, yolda giden römorklar ise test cihazı değildir.

♥ 2

Yapay zekâ tarafından English dilinden çevrildi ·

Bir yüklenici firmasının sayaç kartlarında tam olarak bu durum yaşandı. Çalışan firmware’e sorabilirsiniz: ESP-IDF’deki partition API’si Arduino çekirdeğinde de sorunsuz çalışıyor. Ulaşabildiğiniz kartlara (kendi partinizden olanlara) tek bir derleme gönderin ya da diğerlerinin depoya gelmesini bekleyin; bağlandıktan sonra tabloyu bir kez client attributes olarak raporlayacak:

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

Ardından Attributes sekmesinde, Client scope altında her kart için part.app0, part.app1, part.otadata vb. görünecek. Görmek istediğiniz şey: iki uygulama alanı (ota_0 ve ota_1, Arduino tablolarında app0/app1 olarak geçer) ile otadata, her biri imajınızdan en az o kadar büyük olmalı. Tek bir app0 3 MB görüp app1 yoksa, bu “Huge APP” şemasıdır, OTA yapılamaz.Yeni derleme gönderemediğiniz kartlar için emily’nin yöntemi depoda işe yarar:

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

Yanlış şemaya sahip kartların, iki alanlı bir tabloyla bir kez USB üzerinden yeniden flaşlanması gerekir. Bundan sonra OTA kalıcı olarak çalışır.

Timestamps in UTC or it didn't happen.
Kabul edilen çözüm♥ 1

Yapay zekâ tarafından English dilinden çevrildi ·

Tamam. Yüklenicinin 12 cihazından 9’u tek bir 3 MB app0 ile geri geldi, dolayısıyla bunlarda ziyaret yapılmadan OTA yok. Diğer 3 cihaz ve bizimkilerin tümünde app0/app1 birer 1,25 MB, bu da 1,4 MB derlememiz için çok dar. Bu yüzden daha ileri gitmeden önce bölüm tablosunu 1,9 MB’lık yuvalarla minimal SPIFFS tablosuna geçiriyorum. Önce kontrol etmemiz iyi oldu.

♥ 1

Yapay zekâ tarafından English dilinden çevrildi ·

Depo ziyaretlerini onaylayan kişi olarak: bir sonraki parti flash’lanmadan önce lütfen bunu kontrol edin.

♥ 0
7 yazı görüntüleniyor – 1 ile 7 arası (toplam 7)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.

Sohbete katılın

Soru sormak ve yanıtlamak, yararlı gönderileri beğenmek ve sorununuzu çözen yanıtı işaretlemek için oturum açın. Her katkı puan ve seviye kazandırır.

Paylaş