Bootloader über CAN

Gast #544607
Lesenswert?

Hallo allerseits,

ich programmiere gerade einen CAN-Knoten, dem ich einen Bootloader 
verpassen möchte. Als µC kommt ein Tiny45 zum Einsatz, zusammen mit 
einem MCP2515 + Treiber für die CAN-Schnittstelle.

Ich habe in meiner Applikation für den MCP2515 Routinen geschrieben, mit 
denen ich den CAN-Bus steuern kann (Senden, Empfangen, interne Register 
schreiben etc.).

Nun ist es ja aber so, dass ich diese Routinen auch für den Bootloader 
brauche! Also sowohl einmal da als auch einmal in der Applikation. Wenn 
ich die Routinen jetzt in den Bootloader implementiere und damit 
ausserhalb der Applikation - wie kann ich dann von der Applikation aus 
drauf zugreifen? Die beiden sind doch getrennt voneinander und die 
Applikation kennt die Routinen des Bootloaders nicht :-( Umgekehrt ist 
das Problem das Gleiche...

Kennt jemand eine Lösung?

Viele Grüße,
Steffen
Gast #576389
Lesenswert?

Üblicherweise sind die CAN-Routinen dann sowohl im Bootloader als auch 
in der Applikation implementiert. Die kommen sich auch nicht ins Gehege, 
da nach dem Anschalten erstmal der Bootloader läuft. Dieser guckt ob 
CAN-Aktivität da ist die ihn z.B. dazu veranlasst etwas zu laden. Wenn 
nicht, beendet sich der Bootloader selbst und startet die Applikation.
Gast #576482
Lesenswert?

Bei meinem CAN-BootLoader ist es auch so, dass die Routinen 2mal 
vorhanden sind. Das ist solange kein Problem, wie ich noch Platz für 
meine Applikation habe.

Grundsätzlich könnte man allerdings über eine Funktionspointer-Tabelle 
von der Applikation aus Routinen im Bootloader benutzen. Im GCC Forum 
gibts ein paar Anregungen zu diesem Thema.

Grüße, Matthias

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren