Flash rom: Letzte Speicheradresse ermitteln

OP #1474997
Lesenswert?

hallo,

ich möchte einen datenlogger auf µC-Basis entwickeln. Die Daten sollen 
auf einem externen SPI-FLash gespeichert werden.
beim schreiben auf den SPI-Speicher (M25P) wird immer eine Adresse 
gefragt (Auszug aus M25P-Treiber):
FlashProgram( ST_uint32 udAddr, ST_uint8 *pArray, ST_uint32 
udNrOfElementsInArray )

Muss das System neu gestartet werden (Reset, Batterie leer), würde die 
Initialisierung wieder auf die erste Adresse des Speichers zeigen und 
damit den Speicher überschreiben.
Wie kann ich die letzte freie Adresse im Speicher finden um keine Daten 
zu überschreiben?

Grüße,
Michael
#1475010
Lesenswert?

Es gibt mehrere Möglichkeiten:
-Du könntest doch einfach suchen wo der letzte Wert != 0xFF gespeichert 
ist. Das geht natürlich nur wenn die Daten so gespeichert werden, dass 
niemals FF gespeichert wird.
-Du könntest ein oder mehrere Bytes nehmen wo die letzte Adresse drin 
steht. Das würde ich aber nur machen, wenn die Daten sich nicht allzu 
häufig geschrieben werden (wegen Schreibzyklen).
-Du könntest die letzte Adresse im EEPROM des µC speichern und jedes mal 
eine andere Zelle nehmen um die Schreibzyklen pro Zelle möglichst gering 
zu halten.
-Du könntest den µC mit einer Stützbatterie versorgen, über die der µC 
dann im Sleep-Modus gehalten wird. Der µC muss dann einfach nur prüfen 
ob die Hauptversorgungsspannung getrennt wurde und sich darauf hin dann 
in den Sleep-Modus zu versetzen. Das geht natürlich nur, wenn die 
anderen Komponenten nicht zu viel Strom brauchen. Den µC alleine kannst 
du jahrelang mit einer CR2032 im Sleep-Modus halten.
OP #1475278
Lesenswert?

Hallo Timmo,

das mit der Batterie ist natürlich eine gute Sache. Ich verwende selbst 
sogar eine Batterie, damit das System autark arbeiten kann. Von daher 
dürfte es ja kein Problem sein, bzw ich speichere jede Adresse im RAM 
mit. Aber für den Fall der Fälle, dass es wirklich zu einem  Ausfall 
kommt muss ich wohl den Speicher durchsuchen.
Vielen Dank,
Michael

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