Hallo Kollegen,
entschuldigt bitte die komplette Newbie-Frage.
ich habe paar verständniss Fragen
- wie oft darf man den MSP430F4xxx flashen bzw. earsen?
- wie liest man einen bestimmten(ab vor gegebenen adr) Flash bereich?
- gibt es fertige methoden zum schreiben und lesen vom Flash bereiche?
Danke
Gruß
Laila
Laila schrieb:> wie oft darf man den MSP430F4xxx flashen bzw. earsen?>> es ist bestimmt eine definierte Zahl oder?
Das steht im Datenblatt im Abschnitt Flash Memory unter
"Program/erase endurance".
Üblich sind Werte zwischen 10000 und 100000 mal, im Datenblatt des
'543x steht beispielsweise mindestens 10^4 und typisch 10^5.
Hallo Kollegen,
im Flash werde ich sehr wahrscheinlich mehr als 10^4 mal schreiben und
earsen, dh. nach 10^4 sind diese Segmente nicht mehr ansprechbar? habe
ich richtig verstanden?
gibt es eine Idee oder trick mit dem man beliebig die flash Segmente
überarbeiten darf?
MFG
Laila schrieb:> gibt es eine Idee oder trick mit dem man beliebig die flash Segmente> überarbeiten darf?
Nein. Es ist ein Designfehler, wenn Flashspeicher zu oft beschrieben
werden soll.
Untersuche, warum sooft Daten ins Flash geschrieben werden sollen und
warum die nicht woanders gespeichert werden können.
Untersuche, ob es nicht z.B. genügt, die Daten im RAM zu puffern und bei
Abschaltung des Systems im Flash zu sichern, das erfordert natürlich
eine stabile Abschalteerkennung, aber die ist beim
einfach-so-im-Flash-herumschreiben nicht minder wichtig.
Laila schrieb:> gibt es eine Idee oder trick mit dem man beliebig die flash Segmente> überarbeiten darf?
Leider nicht.
Aber TI hat reagiert und wird bald MSP430 Mikrocontroller im Sortiment
haben, welche statt Flash auf FRAM Technologie basieren und damit
praktisch beliebig oft beschreibbar sind. Die Typen heissen dann
MSP430FRxxxx soweit ich gehört habe.
Samples sollen angeblich bald auch für die breite Masse zur Verfügung
stehen.
> Nein. Es ist ein Designfehler, wenn Flashspeicher zu oft beschrieben> werden soll.
Was meinst du mit designfehler?
> Untersuche, warum sooft Daten ins Flash geschrieben werden sollen und> warum die nicht woanders gespeichert werden können.
es wird oft von verschiedene Sensoren daten gefordert und aktualisiert
(5 mal pro Sec), die aktualisierten Werte müssen für eine sehr lange
Zeit im flash gesichert bleiben.
> Untersuche, ob es nicht z.B. genügt, die Daten im RAM zu puffern und bei> Abschaltung des Systems im Flash zu sichern, das erfordert natürlich> eine stabile Abschalteerkennung, aber die ist beim> einfach-so-im-Flash-herumschreiben nicht minder wichtig.
Der Nachteil des RAM-Speichers ist, dass die Daten bei einem
unvorhergesehenen Neustart im Feld nicht mehr zuverlässig erhalten
bleiben und bei Spannungseinbrüchen komplett verloren gehen. Somit ist
es erforderlich die Daten zyklisch in den flash zu sichern.
> Aber TI hat reagiert und wird bald MSP430 Mikrocontroller im Sortiment> haben, welche statt Flash auf FRAM Technologie basieren und damit> praktisch beliebig oft beschreibbar sind. Die Typen heissen dann> MSP430FRxxxx soweit ich gehört habe.> Samples sollen angeblich bald auch für die breite Masse zur Verfügung> stehen.
Es hört sicht toll an, dann lasse ich mein Projekt frieren bis Ti sich
entscheidet ;-)
ne spass bei Seite, danke für den Tip.
Kommt halt immer auf den Zeithorizont des Projektes an. ;-)
Aber wenn Du es jetzt gleich brauchst, nimmst Du vielleicht besser ein
externes EEPROM oder Flash mit mehr möglichen Schreibzyklen.
Naja, dafür ist Flash halt einfach nicht geeignet. Deswegen
Designfehler.
Bau einen externen FRAM Chip in der passenden Größe an und gut. Oder
halt Spannungseinbruch überwachen und daten aus dem RAM in den Flash
sichern. Unerwartete Neustarte im Feld verhindert man durch sauberes
Programmieren.
Laila schrieb:> Der Nachteil des RAM-Speichers ist, dass die Daten bei einem> unvorhergesehenen Neustart im Feld nicht mehr zuverlässig erhalten> bleiben und bei Spannungseinbrüchen komplett verloren gehen.
Nein. Dann ist halt eine ausreichende Pufferung der Stromversorgung mit
Kondensatoren, Goldcaps o.ä. erforderlich, und eine saubere Erkennung
des Stromausfalls, so daß in diesem Fall die Daten aus dem RAM ins Flash
kopiert werden können.
Damit wird die Flashschreibrate ganz erheblich reduziert, nämlich nur
vor jeden Abschaltvorgang.
Alternativ könnte man ein externes explizit batteriegepuffertes seriell
anzusteuerndes RAM oder eben ein FRAM verwenden.
Man könnte natürlich auch die Stromversorgung des MSP430 selbst puffern,
so hoch ist dessen Stromverbrauch schließlich nicht.
Was ist das für ein System, bei dem im 5-Sekunden-Takt irgendwelche
Sensordaten erfasst werden müssen und nur diese im Flash gespeichert
werden sollen? Oder soll das eine Art Datenlogger sein?
In letzterem Falle bietet sich die Verwendung eines ausreichend großen
externen Flash-Speichers wie z.B. einer SD-Karte an. Die wird dann halt
allmählich gefüllt und hält aufgrund ihrer erheblich größeren
Speicherkapazität länger durch als das Flash-ROM des MSP430.
Ein MSP430 lässt sich im entsprechenden Sleep-Modus über Monate mit
einem Goldcap puffern. Den Sleep-Modus kann man ja bei Ausfall der
Spannungsversorgung aktivieren. Somit kann das RAM durchaus zur
Datenspeicherung verwendet werden. Selbst, wenn das RAM nur als
Datencache verwendet wird und der Hauptspeicher das Flash ist, lassen
sich die Schreibzyklen signifikant reduzieren.
Grüße,
Peter
Hallo,
> Was ist das für ein System, bei dem im 5-Sekunden-Takt irgendwelche> Sensordaten erfasst werden müssen und nur diese im Flash gespeichert> werden sollen? Oder soll das eine Art Datenlogger sein?
Es handelt sich um ein Meßgerät, der Werte speichert bis ihn sein
bezitzer besucht, es koönnte 2 bis 5 Jahre dauren bis es ausgelesen
wird.
MFG
Also, ohne die Architektur vom MSP zu kennen und ohne lange
nachzudenken, würde ich das ungefähr so angehen:
1. die Daten werden n-fach in unterschiedlichen Blöcken abgelegt, so
dass jeder Block nur 1/n Schreibzyklen abbekommt.
2. in jedem Block wird zusammen mit den Nutzdaten ein laufender Zähler
abgelegt.
3. der Block mit dem höchsten Zähler enthält die letztgültigen Daten.
4. der Block mit dem niedrigsten Zähler wird vom neuen Datum
überschrieben.
Natürlich musst Du weiterhin eine Brown-Out Erkennung und eine Prüfsumme
implementieren.
Bei Deinem Auto funktionierts ja auch; da haben auch immer mehr Kombis
kein EEPROM mehr...
Grüße,
Stefan
Laila schrieb:> Es handelt sich um ein Meßgerät, der Werte speichert bis ihn sein> bezitzer besucht, es koönnte 2 bis 5 Jahre dauren bis es ausgelesen> wird.
Das ist ein Datenlogger. Verwende eine SD-Karte, dann gibt es auch
keine Probleme mit der Speicherkapazität.