Roland H. schrieb:
> Verstehe ich das richtig: Du hast vier Implementierungen, eine davon
> wird verwendet. Deren .bss-Teile landen durch das obige linker script im
> CCM.
>
Ja, richtig.
> Und alle heap1..4.c sind von Dir? Oder von FreeRTOS?
> Wer verwendet _sbss_ccm/_ebss_ccm?
Die Implementierungen sind von FreeRTOS und unterscheiden sich in den
Features. Eben weil die zum OS gehören, möchte ich da drin nichts
ändern.
_sbss_ccm und _ebss_ccm verwende ich im Startup-Code zum 0-en der
.bss_ccm Section.
>> - Platzierung der heap-bss Section über das Linker-Skript abhängig vom
>> Namen der Objekdatei
>
> Das entspricht dann wohl dem angeführten linker script. Im Sinne eines
> applikationsspezifischen linker scripts bzw. als Ergänzung zu einem
> allgemeinen finde ich das in diesem Fall etwas besser als die Variante
> mit dem attribute.
>
> Ich würde eine heap.c verwenden, welche #define gesteuert die gewünschte
> Implementierung mittels #include aufnimmt. Dann ergibt sich in jedem
> Fall eine heap.o, wodurch das linker script m. E. übersichtlicher und
> "grep-able" wird:
> heap.o ( .bss, .bss* )
"grep-able" :) Guter Punkt. Meinst Du so?
1 | #ifdef USE_HEAP1
|
2 | #include "heap_1.c"
|
3 | #else
|
4 | ...
|
Habe bis jetz immer Skrupel gehabt, c-Dateien zu includen.
Alternativ könnte man auch einfach im Makefile einen Kommentar angeben,
dass das Linker-Skript anzupassen ist, wenn man an der
Speicherverwaltung was ändert.
> Die obige Sektion .bss_ccm in einem separaten SECTIONS { ... } - Bereich
> in einem separaten Teil-Linker-Skript, und dieses zusammen mit dem
> Standard-Linker-Script verwenden.
Wo siehst Du den Vorteil zur festen Verwendung des Namens in einem
Skript?