Bootloader MC68HC912D60A

Gast #218786
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.