Hallo zusammen, ich habe die schöne Aufgabe die Updatefähigkeit über CAN bei einem PIC18F26K80 sicherzustellen. Nun habe ich bzgl. dieses Themas noch gar keine Erfahrungen gemacht. Zunächst mal wollte ich das ganze Konzept mal Symbolisch darstellen: __________ _____________ | | | | | PC |----- USB2CAN-Adapter-----| PIC18F26K80 | |_________| |_____________| Jetzt mal zu den Komponenten die ich Benötige: - Bootloader auf dem PIC - Konfigurationsprogramm auf dem PC, welches die neuen HEX Files nimmt und über den USB2CAN-Adapter überträgt. Und nun meine Fragen: 1. Der PIC hat einen 64KB großen Flash-Speicher, nun weis ich nicht ob ich ca. die hälfte des Speichers für neue SW-Versionen reservieren muss weil der Prozess zunächst über CAN die kompletten Daten empfängt und anschließend brennt oder ob die Daten Paketweise gebrannt werden, so dass ich mehr als die Hälfte für meine SW zur Verfügung habe. 2. Hat jemand Codebeispiele oder jegliche Informationen zu dieser Thematik? Das wars vorerst, wäre wirklich sehr dankbar über jede noch so kleine Information. Viele Grüße Flo
1. Denk noch mal drüber nach. Wenn zuerst das ganze Programm irgendwo im ROM gespeichert werden müsste und dann nochmal woanders hin im ROM warum dann nicht gleich an die richtige Stelle? Der Bootloader erhält die Daten Blockweise und schreibt die dann an die mitgelieferte Adresse. 2. Da gibt es einen Haufen Application Notes zum Thema Bootloader. z.B. AN247 - A CAN Bootloader for PIC18F CAN Microcontrollers Wenn du die MLA installiert hast, dann kannst du auch mal unter ...mla\v2015_08_10\apps\usb\device\bootloaders nachschauen. Da ist auch Sourcecode für eine PC Software dabei (Qt5) Die ist eigentlich für USB HID, aber ich könnte mir vorstellen, dass man das mit nicht allzu großem Aufwand anpassen könnte. Wollte ich selber schon mal machen, bin aber bisher noch nicht dazu gekommen.
Hallo Volker, vielen Dank für deine Infos, da bin ich erleichtert, sonst wäre der Speicherplatz des Chips wsl. zu klein gewesen. Also ich habe die CANIO.ASM jetzt kompiliert, diese muss ich nun in den PIC schreiben mit der entsprechenden Adresse in den Linker Einstellungen, sodass der Bootloader seinen festen platz findet hat. Da wartet noch einiges an Arbeit aber es ist schon mal ein Anfang, bin gerade noch am einlesen. MFG Flo
Du könntest auch ein externes spi-RAM wie zB 23lc512 verwenden, dort die empfangenen Blöcke Zwischenspeichern, Prüfsumme bilden, und erst wenn alles ok ist, den RAM-Inhalt ins Flash schreiben. fchk
Bei meinem Bootloader (http://www.picalic.de/bootloader/) mache ich es so, daß der Bootloader nach einem Reset eine Prüfsumme über den Applikationscode bildet. Wenn irgendwas beim Upload schief gelaufen ist, bleibt er nach Reset halt im Bootloader und man muß es nochmal versuchen...
Hallo zusammen, danke für eure Tipps. @ Thomas: Ja so etwas habe ich mir dann auch vorgestellt um eben fehlerhafte Übertragungen zu detektieren. Bin aber grad noch am einlesen und ausarbeiten von AN247 von Microchip. Im Grunde hab ichs jetzt einigermaßen verstanden. Meine Vorgehensweise jetzt: - Ich lade den CANIO.asm Bootloader von Microchip (in AN247) in den PIC und schütze diesen dann vorm Überschreiben. - Anschließend suche ich mir alle Commands die über den CAN-Bus eintreffen können und liste diese auf. - Dann brauche ich noch die Applikation auf dem HOST-PC welche dann das Hex-File interpretiert und mit den richtigen CAN-Botschaften (PUT/GET, CONTROL/DATA) über den USB2CAN-Adapter auf den PIC lädt. So jetzt mal mein grober Plan... aber der Teufel steckt natürlich wie immer im Detail :P Gruß Flo
Florian J. schrieb: > Bin aber grad noch am einlesen und ausarbeiten von AN247 von Microchip. > Im Grunde hab ichs jetzt einigermaßen verstanden. Weil ich es schon ewig vorhatte um unseren Studierenden auch nach dem Labor und der Rückgabe der ausgeliehenen Programmiergeräte (PICKIT3) noch die Programmierung ihrer Boards zu ermöglichen, habe ich mich jetzt mal an die AN1310 "High-Speed Bootloader for PIC16 and PIC18 Devices" dran gesetzt. Ich muss sagen das ging echt fix. Auch da ist neben dem Bootloader Projekt wie bei USB-HID auch noch eine PC Software dabei. Schade, dass das bei dem AN247 CAN Bootloader nicht der Fall ist.
:
Bearbeitet durch User
Bei einem CAN-Bootloader gehts ja auch um die Frage, wie dieser eingesetzt wird. Bei einer Punkt-zu-Punkt Verbindung kann man leicht bestehende Libs und PC-Software nutzen. Da gibts einiges, genau wie bei USB oder UART Bootloadern. Hängt das upzudatende Device an einem Bus wird das Ganze komplizierter und es gibt keine allgemeinen Lösungen mehr. Das ist zumindest meine Erfahrung.
Hallo Leute, nach längerer Zeit berichte ich mal wieder: Ich hab jetzt mal ein Hostprogramm erstellt welches in der Lage ist ein Hexfile zu konvertieren und über den CAN zu übertragen. Weiterhin bin ich immer noch dran die "CANIO.asm" von "AN247" an meine bedürfnisse (Hardware) anzupassen, aber der assemblercode ist einfach nur ein wirrwarr ohne sinnvolle Kommentare oder einen Leitfaden. Hat jemand schon mal mit dem sample bootloader von AN247 gearbeitet? MFG Florian
Florian J. schrieb: > aber der assemblercode ist einfach nur ein > wirrwarr Ich weiß ja nicht wie fit Du in ASM bist. Ich bins nicht und hab ASM seit meiner Lehrzeit nicht mehr benutzt. Darum habe ich mich auch beim Bootloader für C entschieden. Klar, Codegröße und Ausführungsgeschwindigkeit leiden darunter. Das ist aber bei meiner Anwendung kein Problem.
Hallo, das Thema ist zwar schon etwas älter und länger nicht mehr aktualisiert worden, aber ich habe die gleiche Aufgabenstellung wie Florian und verwende ebenfalls den PIC18F26K80 und wollte deshalb mal nachfragen, ob es dazu ein Update oder eine bereits funktioniernde Software-Lösung gibt? Problematisch für mich ist, dass ich keinerlei Erfahrung mit Assembler habe und im angegebenen AN247 Dokument von microchip nur Assembler Beispielcode zu finden ist :-/... MFG Marcel
Ich nutze diesen: https://wiki.kewl.org/dokuwiki/projects:wellington http://hg.kewl.org/pub/wellington/ Wellington ist an Tiny PIC Bootloader angelehnt und ist GPL3 lizensiert.
Neuer Thread zum Thema Wellington Bootloader Beitrag "Wellington PIC18 Bootloader"
:
Bearbeitet durch User
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.