Forum: Compiler & IDEs interrupt-Vectoren beim GCC/ATmega!62


von Martin Raffelsieper (Gast)


Lesenswert?

hallo ,weiss jemand, wie man verhindert, dass die interupt-Vectoren
dazugelinkt werden und stattdessen der C-startup-code direkt bei 0x0000
beginnt?

Gruß Martin

von Joerg Wunsch (Gast)


Lesenswert?

Praktisch nur, indem Du ein eigenes crtX.o nimmst.

Nur, warum willst Du das unbedingt?  Die paar Bytes machen doch selbst
im Bootlader das Kraut nicht fett.

von Martin Raffelsieper (Gast)


Lesenswert?

was bitte ist "crtX.o"? ist das der Startup-Code?


es sind genau 0x70 bzw 112 byte. wenn ich diese weg hätte, dann könnte
ich den nächstkleineren Bootbereich wählen und bekäme meine Appikation
unter.

Z.z. Passt nicht beides (boot + Applikation) in den mega162


Gruß Martin

von Joerg Wunsch (Gast)


Lesenswert?

> was bitte ist "crtX.o"? ist das der Startup-Code?

Ja, crtm162.o in Deinem Falle.

Derzeit sind die Vektoren nicht optional angelegt.  Es wird die
gesamte section .vectors geladen, die außer dem Reset-Vektor auch die
Interruptvektoren enthält.

von Martin Raffelsieper (Gast)


Lesenswert?

das verleitet mich zu der Frage:

würde denn ein C-Programm auch ohne Startup code laufen, wenn wie bei
mir keine Interrupts benutzt werden, aber Unterprogrammaufrufe
einschliesslich

 boot_page_erase(),  boot_page_fill(), boot_page_write(),
 boot_rww_enable(),  boot_rww_busy()

verwendet werden.
und,  wie schalte ich dann die crtm162.o aus?

Gruß Martin

von Joerg Wunsch (Gast)


Lesenswert?

Das ist opensource -- guck Dir doch bitten den Startup-Code einfach
mal an.  Warum soll ich Dir das alles soufflieren?

Aus'm Kopf: außer den Vektoren ist noch das Löschen von .bss und das
Umkopieren von .data dort drin.  Viel mehr isses nich.  Normale
Bibliotheksfunktionen sind also nicht betroffen, und ohne jetzt
nachgucken zu wollen würde ich sagen, daß Deine Sachen ohnehin alles
Makros sind, gar keine Funktionen.

Du schaltest sie aus, indem Du sie nicht mit linkst.  Wie der
Compiler-Treiber den Linker aufruft erfährst Du, indem Du zu den
CFLAGS ein -v hinzufügst.

von Martin Raffelsieper (Gast)


Lesenswert?

Danke Jorg

ich trau mich schon gar nicht zu fragen: wo finde ich denn den offenen
code?


Gruß Marin

von Joerg Wunsch (Gast)


Lesenswert?

Bei WinAVR gibt's extra eine `src' distribution, die enthält die
Quellcodes zu allem.

Wenn Du aber nur gcrt1.S haben willst, kannst Du Dich auch durch die
CVS-Quellen hangeln:

http://savannah.nongnu.org/cgi-bin/viewcvs/avr-libc/

Der relative Pfad ist avr-libc/crt1/gcrt1.S.

von Martin Raffelsieper (Gast)


Lesenswert?

ok vielen dank, werde es mir mal ansehen

Gruß Martin

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.