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?
Willst du den internen Flash benutzen oder einen externen i2c oder spi Flash ??
wie gehabt den Internen. 600kB müssten noch frei sein, wenn die Angaben in der Arudino IDE stimmen.
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.