Hallo zusammen, ich habe hier ein AMICA nodeMCU ESF 8266 V3.0 Board. Detaillierte Datenblätter zu dem Teil habe ich leider nicht gefunden. Ich habe einen Artikel gefunden in dem behauptet wird, dass der ESF 8266 zwei verschiedene Möglichkeiten hat Daten persistent zu speichern. Nr 1: Wie ich es von anderen uC kenne, ein interner EEPROM mit 512 Byte Größe Nr 2: ein emulierter EEPROM (bis zu 4 kb) im FLASH. Nr 2 konnte ich über die EEPROM lib in der Arduino IDE schon nutzen. Leider hat diese Variante nur circa 10.000 mögliche Schreibzyklen, daher bin ich an Nr 1 interessiert (laut Artikel 1 Mio. Schreibzyklen möglich), vielleicht kennt ja hier jemand eine Möglichkeit wie man auf den "internen" EEPROM zugreifen kann. Gruß Daniel
DanL schrieb: > Hallo zusammen, ich habe hier ein AMICA nodeMCU ESF 8266 V3.0 Board. > ... > Detaillierte Datenblätter zu dem Teil habe ich leider nicht gefunden. Den von dir angegebenen Prozessor gibt es IHMO auch nicht. Meinst du vielleicht den ESP8266 von Espressif? https://www.espressif.com/en/products/hardware/esp8266ex/resources
Wolfgang schrieb: > DanL schrieb: >> Hallo zusammen, ich habe hier ein AMICA nodeMCU ESF 8266 V3.0 Board. >> ... >> Detaillierte Datenblätter zu dem Teil habe ich leider nicht gefunden. > > Den von dir angegebenen Prozessor gibt es IHMO auch nicht. Meinst du > vielleicht den ESP8266 von Espressif? > https://www.espressif.com/en/products/hardware/esp8266ex/resources Dumm? Hast du überhaupt schon mal was mit dem ESP gemacht? Nein! Sonst hättest du am ESF8266 gesehen das es der ESP8266 ist. Also gib ihm keine Hilfe, du hast nähmlich keine Ahnung!
Danke für den Hinweis. Bin deinem Link gefolgt, finde aber auch nur etwas über SPI read write Flash, also nicht das was ich suche.
Der ESP hat kein EEPROM. Die SPI-Flash Chips die die Module verbaut haben, z.B. Winbond W25Q32FVSIG haben 100k Cycles. Wenn man dann noch SPIFFS nutzt wird sogar wear leveling gemacht. Selbst ohne wear leveling würdest du im worst case wie z.B. Jede Minute 1k schreiben das Ende gar nicht mehr miterleben. Alternativ i2c EEPROM dran, oder SD-Karte, die kannst du dann tauschen wenn sie defekt sind.
Hallo Timmo, das scheint mir ein gute Antwort zu sein! SPIFFS habe ich noch nie angewendet, aber es ist mir eine Google Recherche wert. Die EEPROM.put /EEPROM.write Funktionen aus der EEPROM.h werden vermutlich immer den gleichen Adressbereich im Flash nutzen, aber 100k Zyklen hört sich doch schon viel besser an als 10k. @MaWin: beruhige dich, warum ich ESF geschrieben habe weiß ich selber nicht genau, gemeint war aber ganz sicher der ESP 6288 oder war es doch der 8266 ;). Grundsätzlich war die Bezeichnung erst einmal falsch von mir und der Hinweis von Wolfgang richtig. Schönes We für euch und bleibt sauber ;)
btw hier der Link mit der Info über den internen EEPROM https://42project.net/esp8266-flash-dateisystem-spiffs-beispielhaft-benutzen/
DanL schrieb: > btw > > hier der Link mit der Info über den internen EEPROM > > https://42project.net/esp8266-flash-dateisystem-spiffs-beispielhaft-benutzen/
1 | Dieses Tutorial erklärt ausführlich das ESP8266 Flash File System abgekürzt |
2 | als (SPIFFS). Es gibt zwei Möglichkeiten, Daten auf dem ESP8266 zu speichern, |
3 | eine davon ist das interne EEPROM mit 512 Bytes. Das EEPROM besitzt 1 Million |
4 | Schreibzyklen.[...] |
Was natürlich nicht stimmt. Das SPI-Flash liegt ab Adresse 0x40200000. Und schaut man in die EEPROM.cpp (also die EEPROM Implementierung vom ESP8266) sieht man auch dass es im Flash ist. Sprich gleiche Schreibzyklen wie das Flash selbst
1 | EEPROMClass::EEPROMClass(void) |
2 | : _sector((((uint32_t)&_SPIFFS_end - 0x40200000) / SPI_FLASH_SEC_SIZE)) |
3 | , _data(0) |
4 | , _size(0) |
5 | , _dirty(false) |
6 | {
|
7 | }
|
Bzw. auch aus den Linker-File
1 | /* Flash Split for 4M chips */ |
2 | /* sketch @0x40200000 (~1019KB) (1044464B) */ |
3 | /* empty @0x402FEFF0 (~4KB) (4112B) */ |
4 | /* spiffs @0x40300000 (~3052KB) (3125248B) */ |
5 | /* eeprom @0x405FB000 (4KB) */ |
6 | /* rfcal @0x405FC000 (4KB) */ |
7 | /* wifi @0x405FD000 (12KB) */ |
Das wurde halt nur so implementiert um die Kompatibilität zu gewährleisten.
Ich gebe zu, dass ich mich immer etwas schwer damit tue Bibliotheksfunktionen zu verstehen. Wenn ich es richtig verstehe, ist in diesem Fall (Lib/Linker File)im FLASH der Bereich von /* eeprom @0x405FB000 (4KB) */ bis /* rfcal @0x405FC000 - 1 (4KB) */ Für den EEPROM vorgesehen?! Ich könnte jetzt noch einen Weg finden, die ganzen 4KB Adressen zu nutzen (Ringspeicher) und nicht immer an der gleichen Adresse zu schreiben. Die 100k Zyklen sind aber für meinen Anwendungsfall vollkommen ausreichend. Es wäre halt nur "sauberer".
DanL schrieb: > @MaWin: beruhige dich, warum ich ESF geschrieben habe weiß ich selber > nicht genau, gemeint war aber ganz sicher der ESP 6288 oder war es doch > der 8266 ;). Grundsätzlich war die Bezeichnung erst einmal falsch von > mir und der Hinweis von Wolfgang richtig. Ich denke es gieng nicht darum dass du etwas falsch geschrieben hast, sondern das Wolfgang helfen wollte obwohl er keine Ahnung hat.
Nimm einfach spiffs und erstell z. B. Für jeden Tag ein neues File
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.