ESP8266 EEPROM-Emulation für Logdaten

#7404537
Lesenswert?

Hallo,

bislang benutze ich EEPROM.h für ein paar Konfigurationswörter, wie z.B. hier beschrieben: https://blog.hirnschall.net/esp8266-eeprom/

Als nächstes möchte ich die EEPROM-Emulation für Sensor-Logdaten nutzen. Dadurch ergeben sich einige Randbedingungen, die mit dieser library nicht gut zusammenpassen:

Die Messdaten werden zunächst im RAM gesammelt. Nur alle paar Stunden wenn ein "Block" (ca. 8kB) aufgelaufen ist, soll dieser als Ganzes weggeschrieben werden. Auf dem Flash sollen ca. 320kB abgelegt werden. Ich möchte also einen Buffer aus 40 solchen 8kB Blöcken in der Emulation managen. Ich brauche also ein Verfahren, dass den Flash blockweise schreiben kann. EEPROM.h kann aber immer nur allen verwalteten Speicher auf einmal flashen via EEPROM.commit().

Gibt es hierfür eine geeignete lib, die für mich funktioniert - vor allem da ich immer noch das Konfigurationsmanagement inkl. WLAN Zugangsdatenmanagement im core sowie OTA parallel verwenden möchte?

Gast #7404596
Lesenswert?

EEPROM.commit() basiert auf der SDK Funktion spi_flash_write(). Du kannst die Funktionen des SDK direkt aufrufen, um die gewünschte Flexibilität zu erhalten.

1
extern "C"{
2
    #include "spi_flash.h"
3
}

https://docs.espressif.com/projects/esp-idf/en/release-v3.2/api-reference/storage/spi_flash.html

Wenn du viele Schreibzugriffe vor hast, nimm besser ein virtuelles Filesystem das Wear Levelling implementiert. Dann lebt der Flash Chip länger.

#7404646
Lesenswert?

Würde aus Lebensdauergründen das interne Flash nur für (einmalige bzw. selten geänderte) Konfigurationsdaten benutzen, nicht für regelmäßig gespeicherte Logdaten.

Häng für letzteres doch einfach ein 4Mbit FRAM dran, dann hast du 512KByte Logspeicher und kannst die Daten sogar ohne Problem sofort schreiben, anstatt erst im RAM sammeln zu müssen.

#7404749
Lesenswert?

Thorsten S. schrieb:

Würde aus Lebensdauergründen das interne Flash nur für (einmalige bzw. selten geänderte) Konfigurationsdaten benutzen, nicht für regelmäßig gespeicherte Logdaten.

Das ist durchaus ein Argument.

Häng für letzteres doch einfach ein 4Mbit FRAM dran, dann hast du 512KByte Logspeicher und kannst die Daten sogar ohne Problem sofort schreiben, anstatt erst im RAM sammeln zu müssen.

Um Daten zu loggen, bieten sich SD-Karten an, die China-Module dafür sind billig und fertige Programme verfügbar.

Da muß er sich mit der Schreiberei allerdings zurückhalten, viele SD sind undefiniert langsam.

Ich nutze SD in der Arduino-Umgebung, da haben sich kleine XMore oder ATP mit 2Gb als problemlos erwiesen.

Mal schauen, ob benito die noch hat: Beitrag "Re: [V] 2GB MicroSD samt MIcro SD Adapter"

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