Hallo zusammen!
Ich grüble gerade darüber, ob es grundsätzlich möglich ist, per
Linker-Skript Objekte innerhalb einer Sektion an definierten
Adressgrenzen abzulegen.
Hintergrund ist, dass ich verschiedene Varianten einer Firmware erzeugen
möchte, die jeweils einen unterschiedlichen Umfang an einkompilierten
Datentabellen besitzen sollen. Wenn diese an definierten Adressgrenzen
liegen, kann ich sie mit vertretbarem Aufwand per "Magic Number" finden.
Der maximale Umfang ist aber im voraus nicht bekannt, ich kann also
nicht "auf Verdacht" vordefinierte, aber ggf. leere Sektionen im
Linker-Skript vorsehen, sonst ginge es ja so:
1 | ...
|
2 | SECTIONS {
|
3 | ...
|
4 | |
5 | . = 0x471100;
|
6 | .dtbl1 ALIGN (0x1000) : {
|
7 | *(.dtbl01);
|
8 | } > flash
|
9 | .dtbl2 ALIGN (0x1000) : {
|
10 | *(.dtbl02);
|
11 | } > flash
|
12 | |
13 | ...
|
14 | }
|
15 | ...
|
Was ich bräuchte, wäre etwas in der Art wie folgender, freilich falscher
Code:
1 | ...
|
2 | .tables ALIGN (0x1000) : {
|
3 | FOR EACH file IN data*.o
|
4 | . = ALIGN (0x1000);
|
5 | $file(.datatable);
|
6 | NEXT
|
7 | } > flash
|
8 | ...
|
Ich hoffe, es wird klar, was gemeint ist. Gibt es überhaupt eine
Möglichkeit, das zu formulieren? Wenn ja, wie?
Alternativ würde ich pro Tabelle getrennte Sektionen in getrennten
*.x-Dateien vorsehen und diese per
(mit Wildcard, geht das?) in das Linker-Skript einbinden, aber das
erscheint mir etwas holprig.
Hat jemand eine Idee?
Viele Grüße und schon mal Danke für's Durchlesen,
Michael