MSP430 FRAM schreiben und lesen

OP #4997288
Lesenswert?
• ▲
▼
Hallo,

ich versuche gerade mit dem MSP430FR5994 etwas in dem FRAM zu schreiben 
und zu lesen. Soweit funktioniert das auch alles. Wenn ich aber den 
Prozessor neu starte bzw. mein Projekt, dann stehen im FRAM nur fur 
FFs... Meine Daten sind alle weg.
Es sind meie ersten Versuche mit dem FRAM, hab aber leider im Momet 
keine Idee woran es liegen könnte.


unsigned int *FRAM_write_ptr;
#define TEST_START 0x4500

void writeFRAMData()
{
   unsigned int i = 0;
   writedata = 10;
   FRAM_write_ptr = (unsigned int *)TEST_START;
   for ( i= 0; i<128; i++)
   {
      *FRAM_write_ptr++ = writedata;
      writedata++;
      _NOP();
  }

  _NOP();
}
#4997414
Lesenswert?
• ▲
▼
Schau mal wo dein Speicherbereich liegt. Wenn du CCS Verwendest dann 
wird, je nach Einstellung, beim Start dein "normaler" Arbeitsspeicher 
Bereich resetet.
Es kann auch sein das dein Speicherbereich sich mit irgendetwas 
überschneidet.

Ich würde einen eigenen Datenbereich anlegen und deine Speicheradresse 
dorthin verlegen. Dann liegt dein Schreibbereich in einem Abschnitt des 
FRAM wo kein anderer Prozess drauf zugreift.

Der Reset deines Programmes wäre auch mal interessant.
Bist du sicher das du auch auf den FRAM schreibst und nicht in den RAM?
OP #4997439
Lesenswert?
• ▲
▼
Tobias K. schrieb:
> Schau mal wo dein Speicherbereich liegt. Wenn du CCS Verwendest dann
> wird, je nach Einstellung, beim Start dein "normaler" Arbeitsspeicher
> Bereich resetet.
> Es kann auch sein das dein Speicherbereich sich mit irgendetwas
> überschneidet.

ich verwende IAR. Sorry, hätte ich gleich dazu schreiben können.
Das Programm selber besteht nur aus der main Methode und writeFRAMData 
um das ganze mal zu testen.
Im IAR kann ich mir ja den FRAM anzeigen lassen, in welchem die Daten 
nach dem schreiben auch richtig stehen. Nach einem Neustart sind sie 
dann weg.
Ich habe mir ja auch extra das von TI mitgelieferte Beispiel angeschaut 
und den gleichen Speicherbereich zum schreiben genommen. Bei dem 
Beispiel verschwinden die Daten nach einem Neustart allerdings auch.


>
> Ich würde einen eigenen Datenbereich anlegen und deine Speicheradresse
> dorthin verlegen. Dann liegt dein Schreibbereich in einem Abschnitt des
> FRAM wo kein anderer Prozess drauf zugreift.
>
> Der Reset deines Programmes wäre auch mal interessant.
> Bist du sicher das du auch auf den FRAM schreibst und nicht in den RAM?

In der Definition zu dem Prozessor steht:
// Persistent memory (FRAM):       04000-0FFFF

und ich schreibe ja auch 0x4500.

Wenn ich im IAR einen Reset durchführe, dann bleiben die Daten erhalten.
#4997476
Lesenswert?
• ▲
▼
Frank B. schrieb:
> In der Definition zu dem Prozessor steht:
> // Persistent memory (FRAM):       04000-0FFFF
>
> und ich schreibe ja auch 0x4500.
>
> Wenn ich im IAR einen Reset durchführe, dann bleiben die Daten erhalten.

Deshalb meinte ich auch das du einen Extra Datenbereich definieren 
Sollst. Das kann man in der "irgendwas.cmd" machen.

Dann kannst du sicher sein das kein anderer Prozess auf diesen Bereich 
zugriff hat.
1
 SECTIONS
2
{
3
    .bss        : {} > RAM | RAM2           /* Global & static vars              */
4
    .data       : {} > RAM | RAM2           /* Global & static vars              */
5
    .TI.noinit  : {} > RAM | RAM2           /* For #pragma noinit                */
6
    .sysmem     : {} > RAM                  /* Dynamic memory allocation area    */
7
    .stack      : {} > RAM (HIGH)           /* Software system stack             */
8
    .asDATA     : {} > RAM2

der Bereich .asDATA ist ein selbst angelegter Bereich.
Der Dann folgendermaßen verwendet werden kann:
1
 #pragma DATA_SECTION(dummi_variable, ".asDATA")
2
uint16_t dummi_variable[64];


PS: Ich weis nicht ob das bei IAR Funktioniert. Dieses Beispiel ist aus 
einem Projekt mit CCS.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.