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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.