Jump to content

Speichern und Auslesen von Daten im nicht-flüchtigen Speicher (flash)


Recommended Posts

Hallo zusammen,

ich hab mir den Code der Firmware angeschaut und dabei sind mir zwei Fragen aufgekommen:

  • Wie kann man Daten in den nicht-flüchtigen Speicher (flash) speichern bzw. wieder daraus auslesen?
  • Gibt es da ein filesystem oder Ähnliches (klingt bei Durchschauen des Codes danach)?

Kurz was zu meiner Anwendung:

Ich müsste mehrere Setups im flash speichern, sodass ich in späteren Sessions wieder darauf zugreifen und diese zur Laufzeit in meinen Code laden kann. Nach entsprechendem Verarbeiten und Bearbeiten der Setups müssen diese wieder zur Laufzeit in den flash geladen werden. Diese Setups müssen beim Neustart bzw. bei der nächsten Session wieder komplett verfügbar sein.  

Mit freundlichen Grüßen

Albert

Link to comment
Share on other sites

Du redest von der ESP32-Firmware? Die hat in der Tat eine Konfigurationspartition mit mehr oder weniger normalem Dateisystem.

Du kannst dir z.B. hier abgucken wie man JSON-Daten liest und schreibt (du kannst mit diesem Weg auch beliebigen Text/Binärdaten lesen und schreiben):

https://github.com/Tinkerforge/esp32-firmware/blob/dfcc160df3355c46f561ea1a48ecb9c9e173d69a/software/src/config_migrations.cpp#L65

Wenn du dir den Inhalt der Partition ansehen willst, kannst du im software-Ordner (also neben z.B. esp32.ini) eine Datei namens default_wifi.json mit folgenden Inhalt anlegen:

{
    "debug_fs_enable": "true"
}

und das Debug-Backend-Modul reinkompilieren. Dann kannst dich unter http://esp32-abcd/debug/fs/ durch das Dateisystem klicken.

 

Es gibt noch die einfachere Variante (falls dir JSON reicht), dass du eine API definierst und die als persistentConfig speicherst. Das funktioniert grob wie im Tutorial: https://www.tinkerforge.com/de/doc/Tutorials/Tutorial_ESP32_Firmware/Tutorial.html#phase-3-kommunikation-frontend-zu-backend

nur dass du statt api.addState und .addCommand stattdessen api.restorePersistentConfig zum Laden aus dem Flash und api.addPersistentConfig zum Registrieren der API verwenden musst.

api.addPersistentConfig ist optional, du kannst auch (gerade wenn du dein Setup im Code modifizieren und speichern willst) nur api.restorePersistentConfig zum Laden und api.writeConfig zum Speichern benutzen.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...