www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader MC68HC912D60A


Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.