Hallo zusammen,
folgendes Problem:
Ich habe einen STM32F407VG mit "Core Coupled Memory" (CCM = spezielles
RAM) an 0x10000000.
Mein Linker-File sieht so aus:
1 | MEMORY
|
2 | {
|
3 | FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K
|
4 | SRAM1 (xrw) : ORIGIN = 0x20000000, LENGTH = 112K
|
5 | SRAM2 (xrw) : ORIGIN = 0x2001C000, LENGTH = 16K
|
6 | CCRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K
|
7 | }
|
und
1 | .ccram :
|
2 | {
|
3 | . = ALIGN(8);
|
4 | *(.ccram)
|
5 | *(.ccram*)
|
6 | . = ALIGN(8);
|
7 | } >CCRAM
|
Das funktioniert aber nur, solange das CCM komplett ungenutzt ist.
Sobald ich eine Variable ins CCM hineinlege, wird ein ELF-File erzeugt,
das den ST-Link dazu bringt, den Bereich ab 0x10000000 flashen zu wollen
(was natürlich nicht geht).
Wenn ich aus dem ELF-File ein HEX-File erzeuge, sehe ich darin auch
einen Datenblock voller Nullen ab 0x10000000.
Ich muss also irgendwie dem Linker sagen können, dass der CCM-Bereich
nicht ins ELF- bzw. HEX-File hinein soll. Ich dachte eigentlich, das
geht über die Flags (xrw), aber das scheint's ja nicht zu sein, denn bei
RAM und CCM sind die gleichen Flags angegeben.
Wie geht das denn? Danke.