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