Hallo, ich programmiere gerade einen AT90CAN - Baustein und möchte für die Zukunft einen Bootloader integrieren, damit ich zukünftige updates über die CAN-Schnittstelle machen kann. An die JTAG/ISP-Schnittstelle komme ich nicht mehr heran, da die Platine vergossen wird. Ich habe das ATmelStudio6 und keinen IAR-Compiler o.ä. Da ich bis jetzt weder mit CAN auf Atmel, noch mit Bootloader Erfahrung habe, muss mir das mal jemand prinzipiell erklären - ich blicke da nicht durch. Hier im Forum habe ich schon geschaut und einiges mitbekommen, aber leider sind diese Informationen nicht für meinen Wissensstand. Was ich heraus gefunden habe: Auf dem AT90CAN ist kein Bootloader intgriert und ich muss ihn aufspielen, das geht wohl auch über ISP. Aber jetzt habe ich schon eine Frage: Wie spiele ich einen Bootloader auf? Woher weiß der Controller dass das ein Bootloader ist uns kein Programmcode? Woher bekomme ich einen Bootloader, von Atmel gibt es wohl einen, der ist aber für IAR-Compiler und den habe ich nicht. Jetzt zu den Fragen, die später einmal auftreten: Falls der Bootloader aufgespielt ist, muss ich die CAN-Schnittstelle programmieren? (habe ich bisher auch noch nicht gemacht) Aber wenn der Bootloader läuft, wird der Programmcode ja gar nicht ausgeführt, d.h. ich brauche den CAN-Bus eigentlich nicht programmieren (es sei denn ich benötige im Programm einen CAN-Bus, was vorerst nicht der Fall ist). Ich habe folgende Hardware zur Verfügung: JTAGICE3, PEAK PCAN-USB Adapter, Ein Oszilloskop mit CAN-Bus Auswertung So eine Erklärung für Dummies wäre wohl cool Schöne Grüße
Andreas schrieb: > ich programmiere gerade einen AT90CAN - Baustein und möchte für die > Zukunft einen Bootloader integrieren, damit ich zukünftige updates über > die CAN-Schnittstelle machen kann. An die JTAG/ISP-Schnittstelle komme > ich nicht mehr heran, da die Platine vergossen wird. Das ist sehr unklug und sollte geändert werden. > Auf dem AT90CAN ist kein Bootloader intgriert und ich muss ihn > aufspielen, das geht wohl auch über ISP. ISP und JTAG, genau wie der Programmcode > Aber jetzt habe ich schon eine Frage: > Wie spiele ich einen Bootloader auf? Woher weiß der Controller dass das > ein Bootloader ist uns kein Programmcode? Die Applikation sitzt im Flash ganz unten, für einen eventuellen Bootloader kannst Du mit den Fuses die obersten 512/1024/2048/4096 Word (das Flash ist ja 16-bittig) reservieren. Heißt also: Dein Bootloader darf maximal 8192 Bytes groß sein, kein Byte größer. > Woher bekomme ich einen Bootloader, von Atmel gibt es wohl einen, der > ist aber für IAR-Compiler und den habe ich nicht. selber schreiben > Jetzt zu den Fragen, die später einmal auftreten: > Falls der Bootloader aufgespielt ist, muss ich die CAN-Schnittstelle > programmieren? (habe ich bisher auch noch nicht gemacht) Aber wenn der > Bootloader läuft, wird der Programmcode ja gar nicht ausgeführt, d.h. > ich brauche den CAN-Bus eigentlich nicht programmieren (es sei denn ich > benötige im Programm einen CAN-Bus, was vorerst nicht der Fall ist). Über ein Bit in den Fuses kannst Du einstellen, dass nach einem Reset der Bootloader gestartet wird und nicht die Applikation selber. Der Bootloader muss irgendwie feststellen, ob neuer Code übertragen werden soll oder nicht, entweder per Schalter oder indem eine bestimmte Zeit auf ein bestimmtes Paket auf dem Bus gewartet wird. Entweder startet er dann des Codetransfer mit anschließendem Reset, oder er startet die Applikation. Wie Du den Code überträgst (CAN, seriell,...) ist Dein Bier.
Frank K. schrieb: >> Aber jetzt habe ich schon eine Frage: >> Wie spiele ich einen Bootloader auf? Woher weiß der Controller dass das >> ein Bootloader ist uns kein Programmcode? > > Die Applikation sitzt im Flash ganz unten, für einen eventuellen > Bootloader kannst Du mit den Fuses die obersten 512/1024/2048/4096 Word > (das Flash ist ja 16-bittig) reservieren. Heißt also: Dein Bootloader > darf maximal 8192 Bytes groß sein, kein Byte größer. Danke Frank für die Erklärung. Wenn ich das richtig verstanden habe, gehe ich wie folgt vor: Bootloader programmieren: Fuses (Reservierung) rausnehmen, damit der Bootloader Code ganz unten programmiert wird, Dann die Fuses wieder auf Reservierung einstellen und den normalen Programmcode programmieren bzw. den Programmcode bereits jetzt schon mit Hilfe des Bootloaders programmieren. Aber die Fuses muss ich nach der Programmierung des Bootloaders unbedingt wieder auf z.B. 4096 Word setzen, damit der Bootloader Bereich geschützt ist bzw. bleibt. Korrekt?
Falsch. Fuses einstellen Bootloader an die vorgesehene stelle per isp schreiben Reset Applikation mit dem Bootloader programmieren Den Bootloader musst Du mit anderen Linkereinstellungen compilieren, damit es eben ein Loader wird und keine Applikation. fchk
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.