Forum: Mikrocontroller und Digitale Elektronik esf 8266 interner EEPROM 512 Byte


von DanL (Gast)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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

von MaWin (Gast)


Lesenswert?

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!

von DanL (Gast)


Lesenswert?

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.

von Timmo H. (masterfx)


Lesenswert?

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.

von DanL (Gast)


Lesenswert?

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 ;)

von DanL (Gast)


Lesenswert?

btw

hier der Link mit der Info über den internen EEPROM

https://42project.net/esp8266-flash-dateisystem-spiffs-beispielhaft-benutzen/

von Timmo H. (masterfx)


Lesenswert?

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.

von DanL (Gast)


Lesenswert?

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".

von Raph (Gast)


Lesenswert?

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.

von Timmo H. (masterfx)


Lesenswert?

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
Noch kein Account? Hier anmelden.