Forum: Compiler & IDEs GCC ARM Startupcode


von problem (Gast)


Lesenswert?

Hallo,

ich habe zwei Projekte mit einem ARM7 die beide mit GCC kompiliert
werden können.

Das Problem ist, beide benutzen unterschiedliche Linker Files
und Startup codes. Es sollte aber zum Schluss im Startupbereich
das gleiche herauskommen.

Jetzt ist es so, bei einem ist alles in Ordnung, beim Zweiten
liegt der gewünschte Startupcode (Vektortabelle etc.) aber nicht
bei  0x0000 sondern bei 0x0128. Im Bereich von 0x000 bis 0x128
steht was von

00000000 <deregister_tm_clones>:
00000044 <register_tm_clones>:
00000090 <__do_global_dtors_aux>:
000000d4 <frame_dummy>:

und dann erst

_startup:

# Exception Vectors

_vectors:       ldr     PC, Reset_Addr
 128:  e59ff018   ldr  pc, [pc, #24]  ; 148 <Reset_Addr>
....


Habe keine Ahnung wo das herkommt.

Kann mir bitte jemand helfen und mir sagen wie man das weg bekommt ?
Danke

von W.S. (Gast)


Lesenswert?

Dir kann geholfen werden. Lade dir die Lernbetty herunter und schau dort 
an, wie die BettyBase und deren Startupcode aussieht.

Im Startup muß m.W. so etwa folgendes vorkommen:
  .section  .text.startup
  .func     Vectors
  .arm

dazu gibt es (für die Betty!) folgende Linker-xcl:
-Ttext 0x80000000
-Tdata 0x4000C000
-Map linkedgcc.txt
-eHard_Reset
-LE:/yagarto/lib/gcc/arm-none-eabi/4.7.2
-LE:/yagarto/arm-none-eabi/lib
-o linkedgcc.elf
Startup_LPC2220gcc.o
interrupts.o
main.thumb.o
...usw, hier kommen dann alle anderen .o rein

--start-group -lgcc -lc -lm --end-group

Damit sollte das Ganze zuverlässig laufen. Du mußt dir nur deine eignene 
Objectfiles eintragen, ebenso deine Adressen für RAM und ROM. Ach ja, 
ein separates Linkerfile braucht man dabei garnicht, das beim Linker 
Eingebaute reicht aus.

W.S.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.