Forum: Compiler & IDEs grct1.S anpassen


von Stefan Kleinwort (Gast)


Lesenswert?

Hallo,

Wie kann ich die Startup-Datei gcrt1.S für mich anpassen und einbinden
(bzw. wo finde ich Literatur, wie ich das mache)?

So wie ich es verstehe, sind die cpu-abhängigen Files (z.B. crtm32.o)
device-spezifische Übersetzungen des gcrt1.S?

Vielen Dank, Stefan Kleinwort

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Wie kann ich die Startup-Datei gcrt1.S für mich anpassen
> und einbinden

Aus den avr-libc-Quellen kopieren.  Dort angucken, wie sie für
die einzelnen devices compiliert (oder assembliert) wird, und
das entsprechend in dein Makefile übernehmen.  Mit avr-gcc -v
ansehen, wie er den Job linkt, danach eine entsprechende
Kommandozeile für avr-ld in dein Makefile einbauen, die alles
genau so macht, nur deine crt.o-Version nimmt.

Was willst du denn eigentlich tun?  Normalerweise muss man diese
Datei nicht ändern.

> So wie ich es verstehe, sind die cpu-abhängigen Files (z.B.
> crtm32.o) device-spezifische Übersetzungen des gcrt1.S?

Ja.

von Stefan Kleinwort (Gast)


Lesenswert?

Hallo Jörg,

vielen Dank für Deine Antwort.

Ich möchte einen Bootloader in mein Hauptprogramm integrieren. Der
Bootloader soll nicht nur Standalone nach einem Reset ein
Programm-Update ermöglichen, sondern auch dem Programm die Routinen zum
Flash-Beschreiben zur Verfügung stellen. Um das Ganze auch debuggen zu
können, wollte ich beides gemeinsam übersetzen. Alternativ überlege ich
mir, die Flash-Routinen des Bootloaders über eine erweiterte
Vector-Tabelle dem Normal-Programm zugänglich zu machen (so wie das
früher bei DOS mit den SW-Interrupts gemacht wurde).

Deshalb wollte gcrt1.S klonen, damit ich eine Version für den
Bootloader und eine andere für das Normalprogramm habe. In der
Bootloader-Version sollen dann die Bootloader-Vektoren mit dem
entsprechenden Offset stehen.

Sieht alles etwas kompliziert aus ... als Notnagel werde ich das
Bootloader.bin in ein .o wandeln und beim main dazulinken (so wie Du es
vor ein paar Tagen hier beschrieben hast).

Viele Grüße, Stefan

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ich würde einfach separate Sprungvektoren benutzen.

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.