Hallo Zusammen,
Bei einem Projekt mit einem STM32 brauche ich zwischen dem Bootloader
und der Applikation einen Shared Memory Bereich - für Datenaustausch.
Jetzt funktionierte das bisher soweit, aber letztens musste ich weil ich
keinen Platz mehr im Bootloader hatte, die Optimierung einschalten. Also
Wechsel von -O0 auf -O1 das war alles.
Jetzt habe ich das Problem, dass dieser Shared- Memory nicht mehr so
funktioniert wie er ohne Optimierung funktioniert.
Umsetzung:
Ich habe sowohl beim Bootloader und bei der Applikation das Linker File
um den folgenden Eintrag ergänzt.
1 | .noinit (NOLOAD) : ALIGN(4)
|
2 | {
|
3 | _noinit = .;
|
4 |
|
5 | *(.noinit .noinit.*)
|
6 |
|
7 | . = ALIGN(4) ;
|
8 | _end_noinit = .;
|
9 | } > SRAM
|
Beim Linken verwende ich dann bei beiden
1 | --section-start=.sysinfo=0x20002800
|
Für mich sieht es so aus als wie diese NOLOAD nicht mehr funktioniert.
Hat jemand vielleicht eine Idee - wie das ist mit User Sections?
Brauch eine UserSection -> wo ich die Adresse zuweisen kann.
Darf nicht initialisiert werden.
Sollte egal, welche Optimierung eingeschaltet wird, immer
funktionieren.
Vielen Dank
sg
mathias