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(); }
Mal den Startupcode untersucht, den Dein Programm hat? Der initialisiert das verwendete (F)RAM, Du wirst in den Linkereinstellungen angeben müssen, wieviel RAM er unangetastet lassen soll.
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?
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
Tobias K. schrieb: > > PS: Ich weis nicht ob das bei IAR Funktioniert. Dieses Beispiel ist aus > einem Projekt mit CCS. ok danke, ich schau mir das mal an.
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.