Flash in msp430 F4xxx

Gast #1939220
Lesenswert?

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
Gast #1939229
Lesenswert?

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
}
Gast #1940212
Lesenswert?

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
Persönliche Seite #1940288
Lesenswert?

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.
#1940341
Lesenswert?

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.
Gast #1940350
Lesenswert?

> 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.
Gast #1940352
Lesenswert?

> 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.
#1940412
Lesenswert?

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.
Persönliche Seite #1940536
Lesenswert?

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.
Persönliche Seite #1940737
Lesenswert?

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
Gast #1941453
Lesenswert?

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
#1941491
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren