Hallo... Ich versuche über ein Linkerscript eine bestimmte Section an eine bestimmte Stelle im Flash zu schreiben. Allem Anschein nach funktioniert das auch ohne Fehler. Überprüfe ich jedoch das *.map File so steht der Wert bzw. die Konstante die sich in dieser section befindet an der falschen Adresse. Ach ja es handelt sich um die section "poof". Diese taucht im *.map File direkt hinter .data bei 0x104007b0 auf? Hier einmal ein Auszug aus dem Linkerscript:
1 | SECTIONS |
2 | { |
3 | |
4 | . = 0x10400000; /* set location counter to address zero */ |
5 | .text : /* collect all sections that should go into FLASH after startup */ |
6 | { |
7 | *(.text) /* all .text sections (code) */ |
8 | *(.rodata) /* all .rodata sections (constants, strings, etc.) */ |
9 | *(.rodata*) /* all .rodata* sections (constants, strings, etc.) */ |
10 | *(.glue_7) /* all .glue_7 sections (no idea what these are) */ |
11 | *(.glue_7t) /* all .glue_7t sections (no idea what these are) */ |
12 | } >flash /* put all the above into FLASH */ |
13 | |
14 | .data : /* collect all initialized .data sections that go into RAM */ |
15 | { |
16 | *(.data) /* all .data sections */ |
17 | } >flash /* put all the above into RAM (but load the LMA initializer copy into FLASH) */ |
18 | |
19 | .bss : /* collect all uninitialized .bss sections that go into RAM */ |
20 | { |
21 | *(.bss) /* all .bss sections */ |
22 | } >ram /* put all the above in RAM (it will be cleared in the startup code */ |
23 | |
24 | . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ |
25 | _bss_end = . ; /* define a global symbol marking the end of the .bss section */ |
26 | |
27 | |
28 | . = 0x104FF800; |
29 | poof : |
30 | { |
31 | *(poof) |
32 | }>flash |
33 | |
34 | } |
Ich weiss wirklich nicht woran das liegt... Vielen Dank für Eure Hilfe...