mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Flash in msp430 F4xxx


Autor: Laila (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gero (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TI-Example:
void write_SegC(char value)
{
  char *Flash_ptr;                          // Flash pointer
  unsigned int i;

  Flash_ptr = (char *)0x1040;               // Initialize Flash pointer
  FCTL3 = FWKEY;                            // Clear Lock bit
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  *Flash_ptr = 0;                           // Dummy write to erase Flash seg

  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation

  for (i = 0; i < 64; i++)
  {
    *Flash_ptr++ = value;                   // Write value to flash
  }

  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
}

void copy_C2D(void)
{
  char *Flash_ptrC;                         // Segment C pointer
  char *Flash_ptrD;                         // Segment D pointer
  unsigned int i;

  Flash_ptrC = (char *)0x1040;              // Initialize Flash segment C ptr
  Flash_ptrD = (char *)0x1000;              // Initialize Flash segment D ptr
  FCTL3 = FWKEY;                            // Clear Lock bit
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  *Flash_ptrD = 0;                          // Dummy write to erase Flash seg D
  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation

  for (i = 0; i < 64; i++)
  {
    *Flash_ptrD++ = *Flash_ptrC++;          // copy value segment C to seg D
  }

  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
}

Autor: Laila (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Danke für die schnelle Antwort.

wie oft darf man den MSP430F4xxx flashen bzw. earsen?

es ist bestimmt eine definierte Zahl oder?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Laila (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank, für die Antworten

Autor: Laila (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gernod (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laila schrieb:
> gibt es eine Idee oder trick mit dem man beliebig die flash Segmente
> überarbeiten darf?

Nicht immer die gleichen benutzen.

Autor: ./. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Externen I2C-EEPROM nehmen und sockeln....

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johnny B. (johnnyb)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Laila (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Laila (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johnny B. (johnnyb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Laila (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Hennig (stefanhennig)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.