ESP32 OTA Partitionen

OP #6292801
Lesenswert?

Warum 3 Partitionen für OTA?

I (122) boot:  3 factory          factory app      00 00 00010000 
00100000
I (129) boot:  4 ota_0            OTA app          00 10 00110000 
00100000
I (137) boot:  5 ota_1            OTA app          00 11 00210000 
00100000

Ich brauche doch nur die aktuelle (Boot)Partition, wo mein Programm 
läuft
und dann lade ich das Update in die ota_0, prüfe, mache, tue.
Wenns passt, ändert sich das Bootflag und die neue Version geht an den 
Start. Beim nächsten Update, gleiches Spiel.

Ich frage, weil ich den Platz brauche.

esp_image: Image length 1112544 doesn't fit in partition length 1048576
#6293068
Lesenswert?

Hallo,

ich habe mit mit der Partitiontable des ESP32 nicht im Detail 
auseinandergesetzt, einfach weil ich es bisher nicht mußte.
Die Arduino IDE bietet mir zumindest als Partition an:
Minimal SPIFFS (1.9MB APP with OTA/190kB SPIFFS).
Sind dann 1966080 Bytes für die App und das hat mir bisher immer 
gereicht.

Gruß aus Berlin
Michael
OP #6293820
Lesenswert?

Hmm egal, es klappt.
1
I (63) boot: ## Label            Usage          Type ST Offset   Length
2
I (71) boot:  0 nvs              WiFi data        01 02 00009000 00004000
3
I (78) boot:  1 otadata          OTA data         01 00 0000d000 00002000
4
I (85) boot:  2 phy_init         RF data          01 01 0000f000 00001000
5
I (93) boot:  3 ota_0            OTA app          00 10 00100000 00180000
6
I (100) boot:  4 ota_1            OTA app          00 11 00280000 00180000
7
I (108) boot: End of partition table
8
I (112) boot: No factory image, trying OTA 0
1
I (5212) esp_https_ota: Writing to partition subtype 17 at offset 0x280000
2
I (5302) advanced_https_ota_example: Running firmware version: 1
3
W (5302) advanced_https_ota_example: Current running version is the same as a new. We will not continue the update.
Gast #6532648
Lesenswert?

Halo, ich wäre sehr an einer näheren Beschreibung der Prozedur des OTA 
interessiert. Mit dem RPi lade ich beim Booten den Python Code vom 
Server und starte diesen dann. Wäre das mit dem EPS32 möglich, ohne die 
Partitionen anzugreifen?
Gast #6592886
Lesenswert?

W3ll S. schrieb:
> Ahmm, der/die/das OTA des ESP32 ist nichts weiter als ein
> Programm, dass
> auf dem ESP laeuft und beim Booten sich von einem Webserver eine neue
> Firmware downloadet. Die vergle9cht der ESP dann mit der aktuellen
> laufenden und switch dann, wenn ok.


Das ist falsch. Der Download für das Update läßt sich jederzeit 
anstossen und läuft im Hintergrund. Gespeichert wird auf die gerade 
nicht aktive OTA-Partition.
Nach dem manuell durchgeführten Restart wird das neue Image aktiv.

Wenn man (natürlich nur zum Testen!) http erlaubt ist das ganz simpel 
ein
1
  const esp_http_client_config_t config = {
2
    .url = "http://updateserver/update.bin",
3
  };
4
  esp_err_t err = esp_https_ota(&config);
5
  if(err != ESP_OK){
6
    ESP_LOGE(TAG, "OTA fehlgeschlagen. Error:0x%x", err);
7
  }else{
8
    ESP_LOGI(TAG, "OTA erfolgreich.");
9
    esp_restart();
10
  }

Trivialer geht es nicht.
Bei HTTPS muss man natürlich noch ein Zertifikat reinfummeln.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren