Gast
#2248981
Hallo,
ich möchte mir für meinen ARM7 (ADUC70xx) init0 .. init5 sections
anlegen die im bootvorgang automatisch hintereinander durchlaufen werden
und in die man startroutinen legen kann (ohne pro- und epilog. der gcc
unterstützt das als attribute). soetwas gibt es z.b. beim avr-gcc.
wenn ich jetzt code in eine section lege und da z.b. auf einen speicher
zugreife:
.section .init0,"x"
.code 32
_init0:
ldr r0, =__MMR_OFFSET
....
(__MMR_OFFSET ist preprocessed und ist 0xffff0000)
dann findet man nachher im listing ganz am schluss vom codefragment der
in die section init0 geht:
800cc: 3afffffc bcc 800c4 <zero>
bl main
800d0: eb00004f bl 80214 <main>
800d4: ffff0000 undefined instruction 0xffff0000
d.h. hinter dem branch main (das ist am ende der init0 section) werden
daten für das codestück aus der init0 section abgelegt (hier
0xffff0000). stört mich insoweit als wenn da nicht ein bl stehen würde
und ich gleich init1 ausführen wollte dass dann alles abstürtzt.
Meine Frage:
Wie haben die AVR leute das gelöst?
Bzw. wie bekomme ich die daten da weg?
Viele Grüße