Forum: Compiler & IDEs Bootloader linken


von Udo Schaumburger (Gast)


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?

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


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.

von Stefan K. (_sk_)


Lesenswert?

Mach es so, wie Jörg es oben beschrieben hat.

Wenn Du zum ersten Flashen App und Bootloader als ein File laden
willst, bietet sich das Vorgehen an, wie es Jörg hier beschrieben hat
(Binärfile mit dazulinken):

http://www.mikrocontroller.net/forum/read-2-285395.html#285447

Alles andere wird nicht einfacher, sondern viel komplizierter ...

Viele Grüße, Stefan

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.