Forum: Mikrocontroller und Digitale Elektronik Flash rom: Letzte Speicheradresse ermitteln


von Michael T. (michelback)


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

von Timmo H. (masterfx)


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.

von Michael T. (michelback)


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

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.