Testweise habe ich versucht, das ARRAY explizit in einem separaten
Segment unterzubringen
also lokale Deklaration in einer Prozedur mit:
1 | static char gdata[100000] __attribute__ ((section (".xtd")));
|
sowie Einträge im linker-skript:
unter memory
1 | MEMORY
|
2 | {
|
3 | [... hier steht noch was]
|
4 | xtd : ORIGIN = 0x80000000, LENGTH = 0x160000
|
5 | }
|
unter sections:
1 | SECTIONS
|
2 | {
|
3 | [... hier steht noch was]
|
4 | .bss : /* collect all uninitialized .bss sections that go into RAM */
|
5 | {
|
6 | _bss_start = .; /* define a global symbol marking the start of the .bss section */
|
7 | *(.bss) /* all .bss sections */
|
8 | } >ram /* put all the above in RAM (it will be cleared in the startup code */
|
9 |
|
10 | . = ALIGN(4); /* advance location counter to the next 32-bit boundary */
|
11 | _bss_end = . ; /* define a global symbol marking the end of the .bss section */
|
12 |
|
13 | .xtd : /* hinzugefügt: extended segment */
|
14 | {
|
15 | _xtd_start = .;
|
16 | *(.xtd)
|
17 | _xtd_end = .;
|
18 | } >xtd
|
19 | }
|
20 | _end = .; /* define a global symbol marking the end of application RAM */
|
mit dem Ergebnis:
-> Abarbeitung des make-Befehl dauert dann ziemlich lange,
-> Philips Flash Utility Upload schlägt fehl ("invalid hex file" )
Ich vermute, dass ich nicht drum herum komme, meine Variable in der
.bss-Sektion zu platzieren und alles in den ext. Sram zu verlagern; nur
kann das ja nicht sein, oder -> Henne/Ei-Problematik, da ich den EMC ja
erst in main() konfiguriere ... verwirrt
Kennt sich jemand mit der ext. sram-Deklaration aus bzw. kann mir
eine geeignete Quelle zum Nachlesen an die Hand geben ?
Gruß,
S.