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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren