Flash rom: Letzte Speicheradresse ermitteln

OP #1474997
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.