Gast
#4293675
Hallo Leute! Ich will eine uint32_t an einer bestimmten Stelle im Controller flash ablegen. Wie deklariert man so etwas in C? Danke schon mal für die Antwort
|
Anzeige
|
Variable im Flash ablegen
Gast
#4293675
Hallo Leute! Ich will eine uint32_t an einer bestimmten Stelle im Controller flash ablegen. Wie deklariert man so etwas in C? Danke schon mal für die Antwort
Gast
#4293688
Dafür gibt es keine allgemein gültige Methode. Im C Standard ist das nicht festgelegt und mehr oder Minder jeder Compiler hat da seine eigene Art und Weise. Es hilft also nur ein Blick ins Handbuch des jeweiligen Compilers. in C macht man das meistens so
was der compiler aber daraus macht, kann man aber nicht allgemein gültig sagen. Besser ist es, mit sections zu arbeiten und entsprechend das linkerfile anzupassen.
Hier ist es dann egal, ob const, static, oder wie auch immer. Soll es tatsächlich eine ganz spezielle Adresse sein, so unterstützt GCC zum Beispiel folgendes:
Ich empfehle dir allerdings nicht, es so zu tun, da es höchst compiler-spezifisch ist und das programm nicht protabel ist!
Gast
#4293918
Hi Das mit der Section habe ich probiert, das geht leider nicht. Die Variable landet in der Flash-Section und nicht in der VariablesInFlashSection. Warnungen gibt es keine... Das mit dem @ geht auch nicht. Anmerkung: Ich verwende Rowley Crossworks for ARM, leider ist der Support ausgelaufen..... eddf schrieb: > Das mit der Section habe ich probiert, das geht leider nicht. Die > Variable landet in der Flash-Section und nicht in der > VariablesInFlashSection. Dann stimmt Dein Linker Skript nicht. Das muss dazu passen.
Gast
#4294020
Das habe ich auch angepasst. Das Problem ist Rowley generiert das
mit jedem build aus einer XML-Datei. Da steht die Sektion auch drin.
Der Ausdruck:
__attribute__((section(".VariablesInFlashSection")))
uint32_t GlobaleVariable = 0x12345678;
wird auch übersetzt, keine Warnung. Die Variable landet nicht da
wo sie sein soll.
MFG
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|