^Hat das schonmal jemand gemacht und kann mir weiter helfen? Ich will daten einlesen und diese dann fest Speichern. lg
Ich werde die Tage anfangen mich damit zu beschäftigen, allerdings für den STM32F205. Aber das Grundprinzip sollte das gleiche sein. Mit dem Beispiel von ST und der entsprechenden Application Note, sollte das auch kein Problem werden. Die Sektoren im Flash, die man verwendet, sollten vermutlich gleich groß sein...? Wäre zumindest logisch.
Schau Dir mal die AN2594 von ST an. Dazu gibt es die Firmware Lib mit Beispielen. Gruß, avrGerd
P. Ostrich schrieb: > Ich will daten einlesen und diese dann fest Speichern. Inkrementell und häufig in kleinen Einheiten, oder ab und zu einmal ein einzelner grosser Brocken?
A. K. schrieb: >> Ich will daten einlesen und diese dann fest Speichern. > > > > Inkrementell und häufig in kleinen Einheiten, oder ab und zu einmal ein > > einzelner grosser Brocken? Ich hab leider zu spät gesehen, dass der Beitrag reichlich ein Jahr alt. Das ist wahrscheinlich für P. Ostrich schon gar nicht mehr aktuell. Aber für mich ist es natürlich trotzdem interessant. Wie wäre unterschiedlich wäre denn die Herangehensweise? Ich bin davon ausgegangen, dass man die EEPROM Emulation nutzt, wenn man beispielsweise hin und wieder eine Parameter in einem Gerät ändern möchte. Wenn man oft Werte schreiben möchte und damit den Flash "abnutzt" sollte man dann wohl besser mehr als zwei Sektoren benutzten...?
Bei mir war es damals eher einmaliges schreiben gewesen... Ist zur Signierung von Geräten gedacht. Wenn diese zurückgegeben werden müsste dieses natürlich zurückgesetzt werden. Aber wir haben das damals auch nicht weiter verfolgt, da es nicht mehr nötig war. Von daher bin ich immer noch um Neuigkeiten interessiert
P. Ostrich schrieb: > Von daher bin ich immer noch um Neuigkeiten interessiert Das Grundprinzip ist eigentlich recht simpel: Man benötigt mindestens zwei Sektoren im Flash. Ich habe bei meinem STM Sektor 1 und 2 benutzt (beide 16kB). Im Sektor 0 soll noch ein Bootloader hin, weshalb mein Programmcode erst im Sektor 3 beginnt. Die 32bit-Speicherzellen für die EEPROM-Emulation im Flash werden in zwei gleich große Speicherzellen unterteilt: für eine virtuelle Adresse und den Wert der gespeichert werden soll. Wird der gewünschte Wert gesetzt, wird immer nur der aktuelle Wert (mit der zeugehörigen Adresse) angefügt. Beim Lesen bekommt man immer den zuletzt gespeicherten Wert geliefert. Wenn der Sektor voll ist, wird zu jeder virtuellen Adresse der aktuelle Wert in den zweiten Sektor übernommen und danach der erste Sekrot wieder gelöscht. Sobald der zweite Sektor voll ist, geht das Spiel anders herum. Auf diese Weise kann man die Anzahl der Löschzyklen für die beteiligten Sektoren niedrig halten, was besser funktioniert umso mehr Sektoren man verwendet. Von ST gibt's auch Beispielcode dafür, den ich verwende. Momentan ist es aber leider noch so, dass mein ST sich die EEPROM Parameter nicht merkt, wenn ich die Spannung weg nehme. Werde mal schauen, woran das liegt...
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.