Forum: Mikrocontroller und Digitale Elektronik Bootloader MC68HC912D60A


von Steffen (Gast)


Lesenswert?

Hallo

Ich hoffe jemand kann mir helfen. Ich weiß es ist ein langer Text und
ich hab viele Fragen, aber ich hoffe jemand hat Antworten.

Ich möchte einen „Bootloader“ für den Motorola Microcontroller
„MC68HC912D60A“ entwickeln. Im wesentlichen ist er auch schon
fertiggestellt, aber da gibt es noch einige Probleme.

Der Bootloader hat die Fähigkeit via CAN-Bus mit einer bereits
existierenden Software zu kommunizieren. Mittels dieser Software können
wir eine vorhandene Firmware flashen. Der Bootloader bleibt in diesem
Fall erhalten und soll die Firmware starten, falls kein Flash-Kommando
anliegt.

Allgemeines:
-  der Bootloader liegt in dem 8k Boot-Sektor des Flash-Speichers
-  Die Interupt Vector Tabelle des Bootloaders liegt auch in diesem
Bereich, also am Anfang
-  Der Boot-Sektor ist Schreibgeschützt, damit beim flashen der Firmware
der Bootloader nicht überschrieben wird
-  Die Firmware befindet sich über dem Bootloader in einem eigenen
Bereich und hat eine eigene Interupt Vector Tabelle

Es sind also zwei eigenständige Projekte... der Bootloader und die
Firmware. Beide werden eigenständig kompiliert und gelinkt. Das Problem
ist, dass der Bootloader, für den Fall das eine Firmware existiert, zur
Adresse der Main-Routine der Firmware springen muss. Wir machen in
diesem Fall einen absoluten Sprung zum Reset-Vector der IVT der
Firmware. Wir haben auch schon versucht die Main-Routine direkt an zu
springen. Und an dieser Stelle beginnt das Problem... Der Bootloadder
springt, aber die Firmware startet nicht.

Fragen:
-  ist es überhaupt möglich einen Sprung aus einer Main-Routine
(Bootloader) in eine andere Main-Routine (Firmware) mit einem absoluten
Sprung an die Adresse zu machen?
-  Der Bootloader und die Firmware nutzen Interupts. Wenn ein Interupt
ausgelößt wird, startet die ISR des Bootloaders. In dieser springen wir
zum Interupt Vector der Firmware. Welcher wiederum an die ISR der
Firmware springen soll. Ist das überhaupt so möglich?

Vielen Dank für eure Hilfe!!


Steffen

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.