Bootloader linken

Gast #363558
Lesenswert?
• ▲
▼
Hallo.

Ich habe für den ATmega128 einen Bootloader in C geschrieben.
Der muss natürlich in den NRWW-Bereich.
Das heisst ich muss im Makefile dem Linker die Anweisung geben dass er
bei einer anderen Adresse anfangen soll.

Wenn Ich Bootloader und Hauptprogramm als einzelne Programme
kompilieren würde wüsste ich wie ich das bewerkstelligen soll.
Das wäre aber eine Platzverschwendung weil dann sowohl unten im NRWW
Bereich als auch oben die ganzen SubRoutinen für die USART doppelt
stehen würden.
Gibt es da keine einfachere Lösung als 2mal kompilieren und dann die
Hex-Files zusammenzuschnipseln?
Moderator Persönliche Seite #363559
Lesenswert?
• ▲
▼
Was machst du, wenn du die main application nachladen willst?  Darfst
du dann nichts mehr an den Routinen für den Bootloader-Routinen für
die UART ändern, damit sie immer die exakt gleichen Adressen behalten?

Das würde ich nicht tun.  Bau dir an den Anfang des Bootloaders eine
jump table.  Die main app benutzt dann ausschließlich die jump table,
damit kann man beide Teile separat linken und auch separat flashen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.