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
TI-Example:
1 | void write_SegC(char value) |
2 | {
|
3 | char *Flash_ptr; // Flash pointer |
4 | unsigned int i; |
5 | |
6 | Flash_ptr = (char *)0x1040; // Initialize Flash pointer |
7 | FCTL3 = FWKEY; // Clear Lock bit |
8 | FCTL1 = FWKEY + ERASE; // Set Erase bit |
9 | *Flash_ptr = 0; // Dummy write to erase Flash seg |
10 | |
11 | FCTL1 = FWKEY + WRT; // Set WRT bit for write operation |
12 | |
13 | for (i = 0; i < 64; i++) |
14 | {
|
15 | *Flash_ptr++ = value; // Write value to flash |
16 | }
|
17 | |
18 | FCTL1 = FWKEY; // Clear WRT bit |
19 | FCTL3 = FWKEY + LOCK; // Set LOCK bit |
20 | }
|
21 | |
22 | void copy_C2D(void) |
23 | {
|
24 | char *Flash_ptrC; // Segment C pointer |
25 | char *Flash_ptrD; // Segment D pointer |
26 | unsigned int i; |
27 | |
28 | Flash_ptrC = (char *)0x1040; // Initialize Flash segment C ptr |
29 | Flash_ptrD = (char *)0x1000; // Initialize Flash segment D ptr |
30 | FCTL3 = FWKEY; // Clear Lock bit |
31 | FCTL1 = FWKEY + ERASE; // Set Erase bit |
32 | *Flash_ptrD = 0; // Dummy write to erase Flash seg D |
33 | FCTL1 = FWKEY + WRT; // Set WRT bit for write operation |
34 | |
35 | for (i = 0; i < 64; i++) |
36 | {
|
37 | *Flash_ptrD++ = *Flash_ptrC++; // copy value segment C to seg D |
38 | }
|
39 | |
40 | FCTL1 = FWKEY; // Clear WRT bit |
41 | FCTL3 = FWKEY + LOCK; // Set LOCK bit |
42 | }
|
Vielen Danke für die schnelle Antwort. wie oft darf man den MSP430F4xxx flashen bzw. earsen? es ist bestimmt eine definierte Zahl oder?
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? Nicht immer die gleichen benutzen.
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.
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.