Hallo, das Array static const unsigned char OELSTAND[2048]; im MSP430FR2355 wird in der Entwicklungsphase (CCSV10) beim Laden des Programms mit NULL überschrieben. Weiß jemand, wie man das abschalten kann? VG Walter
"...static storage duration. The storage duration is the entire execution of the program, and the value stored in the object initialized only once, prior to main function..." "...If a static or thread-local (since C++11) variable is constant-initialized (see below), constant initialization is performed instead of zero initialization before all other initializations..." - https://en.cppreference.com/w/c/language/initialization - https://en.cppreference.com/w/c/language/storage_duration - https://en.cppreference.com/w/cpp/language/constant_initialization Du solltest dir eventuell mal überlegen für was du diesen Schlüsselwortsalat genau drin haben willst und was du eigentlich erreichen willst...
>was du eigentlich erreichen willst...
Ich will erreichen, dass der definierte FRAM-Bereich (z.B. 0x8000 bis
0x8800) beim Laden des Programmes durch den CCSV10 nicht überschrieben
wird.
Der FRAM-Bereich von 0x1800 bis 0x1A00 bleibt beim Laden des Programmes
durch den CCSV10 erhalten.
@Clemens Heißer Tipp. Danke. Ich tausche in #pragma PERSISTENT(var) unsigned long var=0; SYSCFG0 = FRWPPW | DFWP; // Program FRAM write enable var++; // Increment the variable (aka, treat it like any other variable) SYSCFG0 = FRWPPW | PFWP | DFWP; das unsigned long var=0; mal in unsigned char OELSTAND[2048]; aus..... Schaun wir mal.
Es wird weiterhin überschrieben.... Es fkt also nicht. Es muss noch etwas im .cmd-File geändert werden. Was, ist mir noch nicht klar.
Das Fenster Step 2: Change Erase Options in https://community.element14.com/members-area/personalblogs/b/blog/posts/msp430fr2633-saving-fram-when-uploading-code finde ich nicht im CCSV10 , gibt es nicht. #pragma NOINIT legt mir die var immer nach 0x2000, da ist das RAM ... auch wenn ich den cmd ändere.
Hallo, nun funktioniert es. Die Lösung: Im C-Programm #pragma NOINIT(OIL_Level) volatile unsigned char OIL_Level[2048]; einfügen im Linker.cmd zeile 139 .TI.noinit : {} > RAM in .TI.noinit : {} > FRAM ändern in "Project->Properties->Debug->MSP430 Flash->Erase Options" Schalter "Replace written ...." on. Herzlichen Dank für die Hilfe. Mit freundlichen Güßen
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.