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
Ü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.
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
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.