MSP430FR2355

(Firma: egal) #7371393
Lesenswert?

"...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..."

Du solltest dir eventuell mal überlegen für was du diesen Schlüsselwortsalat genau drin haben willst und was du eigentlich erreichen willst...

Gast #7371440
Lesenswert?

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.

Gast #7371483
Lesenswert?

@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.

Gast #7372241
Lesenswert?

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

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