Ich möchte den Informationsspeicher meines MSP340F2132 nutzen um
Parameter dauerhaft zu seichern. Dazu benutze ich eine Struktur, mit der
die einzelnen Werte leicht zugänglich sind. Mit einem #pragma wird diese
Struktur an eine feste Adresse gelegt, hier Segment C - 0x1040.
Unoptimiert funktioniert das prima.
Wenn ich die Optimierung auf "High" stelle werden die Lese-Zugriffe
weg-optimiert. (IAR EW 4.x) Die Defaultwerte, welche der Struktur
zugewiesen werden, werden gleich in den Quellcode eingebettet.
Welche Qualifier oder #pragmas muss ich verwenden damit korrekt auf den
Inforamtionsspeicher zugegriffen wird?
Aktuell verwende ich folgenden Code:
1 | typedef struct _EED_tstSegC_Data { ... u8 bParameterXYZ; ... } EED_tstSegC_Data
|
2 |
|
3 | #pragma location = 0x1040
|
4 | __root const EED_tstSegC_Data EED_stSegC_Data= { $Defaultwerte meiner Applikation$ }
|
Die Lesezugriffe erfolgen dann auf die Elemete der Struktur. Beispiel:
1 | #define EED_bGET_ParameterXYZ() EED_stSegC_Data.bParameterXYZ
|
Wie kann ich verhindern, dass die Code-Optimierung die Lese-Zugriffe
weg-optimiert? Ich habe bereits einige varianten mit volatile und
__no_init ohne erfolg ausprobiert
Vielen Dank