www.mikrocontroller.net

Forum: Compiler & IDEs grct1.S anpassen


Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde einfach separate Sprungvektoren benutzen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.