klipper_faq:can:66_-_katapult-bootloader
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
klipper_faq:can:66_-_katapult-bootloader [2023/11/04 20:34] – removed - external edit (Unknown date) 127.0.0.1 | klipper_faq:can:66_-_katapult-bootloader [2023/11/05 14:13] (current) – [YouTube Video #66] dominik | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Bootloader Katapult ====== | ||
+ | Katapult (ehemals CanBoot) wurde ursprünglich entwickelt, um über CAN-Bus Klipper Updates einzuspielen. Es wurde aber erweitert um die Möglichkeit auch mittels USB bzw. Seriell zu flashen. Somit ist Katapult ein sehr universell einsetzbarer Bootloader. Er ermöglicht ein Firmware Update (wie z.B. Klipper), ohne dass man am Druckerboard selber Hand anlegen muss. Also kein SD-Karten jonglieren, keine Jumper stecken, keine Taster drücken. | ||
+ | |||
+ | Das Video / diese Anleitung befasst sich nur mit STM32, RP2040 und da auch nur mit USB und CAN Bus! Serielles Flashen sollte am Ende ähnlich funktionieren wie die USB Variante. Die LPC176x Controller werden hier nicht behandelt da sie kaum noch Verwendung finden. | ||
+ | |||
+ | > **Hinweise: | ||
+ | |||
+ | **Github Repo zu Katapult** \\ | ||
+ | https:// | ||
+ | |||
+ | ===== YouTube Video #66 ===== | ||
+ | {{youtube> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Warum Katapult? ===== | ||
+ | * Es ist die einzige Möglichkeit, | ||
+ | * Mit Katapult entfällt im Normalfall jegliches "Hand anlegen" | ||
+ | * Es wird keine SD-Karte mehr für ein Firmware Update benötigt. | ||
+ | * Generell vereinfacht Katapult den Updateprozess. Gerade bei älteren Boards bzw. Boards mit STM32F1 Controllern ist oft ein direktes Flashen (z.B. mittels DFU) nicht möglich. | ||
+ | |||
+ | ===== Hardware erkennen ===== | ||
+ | |||
+ | Man sollte im Vorfeld zwei wichtige Informationen ermitteln. Welcher Controller wird verwendet (und welche Einstellungen brauche ich dafür) und ob es ein Board mit oder ohne DFU Möglichkeit ist (DFU betrifft nur STM32 Boards). | ||
+ | |||
+ | **Controller** | ||
+ | * Der Controller lässt sich schnell ermitteln. Auf dem Board gibt es immer einen großen Chip mit vielen Pins. Darauf findet man den Typ wie z.B. STM32F446, STM32F103, RP2 (auch zu erkennen an dem Raspberry Pi Logo). | ||
+ | * Zudem gibt es für jedes Board meist eine Beschreibung oder eine Github Seite mit weiteren Informationen. Hier bekommt man dann meist auch die Informationen wie z.B. 'Clock Reference', | ||
+ | * Beispiel: https:// | ||
+ | * Am Ende der Seite findet man alle Einstellungen für '' | ||
+ | * Wichtig sind immer ' | ||
+ | * Der Bootloader Offset ergibt sich beim Erstellen von Katapult - dazu später mehr. | ||
+ | |||
+ | **DFU Möglichkeit** | ||
+ | * DFU (Device Firmware Upgrade) gibt es nur bei STM32 Controllern. | ||
+ | * Es ist ein spezieller Modus, in dem die Firmware (Katapult oder Klipper) direkt über USB auf den Chip übertragen werden kann. | ||
+ | * Ob der DFU Mode verfügbar ist, lässt sich meist daran festmachen, ob ein extra Jumper (oder Taster) vorhanden ist. Dieser Jumper ist meist mit '' | ||
+ | ===== Katapult einrichten ===== | ||
+ | * '' | ||
+ | * '' | ||
+ | * Hier braucht ihr jetzt die Informationen zum Controller. Beispiel Spider Board: \\ {{: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * Damit wird Katapult kompiliert und liegt danach im Ordner '' | ||
+ | |||
+ | > **Hinweis** \\ Kompiliert man für CAN Bus sollte man vorher die CAN Bus Geschwindigkeit auslesen: \\ '' | ||
+ | |||
+ | ===== Katapult flashen ===== | ||
+ | Im Folgenden wird beschrieben, | ||
+ | **Das Flashen von Klipper erfolgt im nächsten Schritt!** | ||
+ | |||
+ | > **Hinweise** \\ 1. Man sollte nach dem Flashen von Katapult das Board 1x resetten. \\ 2. Katapult wird __immer__ über einen der folgenden Wege geflasht (USB, SD, ST-Link). Nur die eigentliche Firmware (z.B. Klipper) kann später über den CAN Bus geflsht werden! | ||
+ | |||
+ | ==== STM32 ==== | ||
+ | |||
+ | Bei den STM32 Controllern gibt es drei brauchbare Wege, um Katapult zu flashen. Der einfachste Weg wäre über den DFU Modus, der aber leider nicht bei allen Boards genutzt werden kann (siehe dazu Hauch Hardware erkennen -> DFU Möglichkeit). Installation mittels SD-Karte wäre die zweite Option die (bis auf die SD-Karte) ohne extra Hardware auskommt. Die letzte Option wäre über einen ST-Link Programmieradapter. | ||
+ | |||
+ | === DFU-Mode === | ||
+ | > **Hinweis** \\ Funktioniert nur über USB ! | ||
+ | Wie schon erwähnt muss das Board dafür über einen extra Jumper (selten auch ein Taster) verfügen. Hier ein Beispiel vom Spider Board: \\ {{: | ||
+ | pi@Pi3Test: | ||
+ | dfu-util 0.9 | ||
+ | |||
+ | Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. | ||
+ | Copyright 2010-2016 Tormod Volden and Stefan Schmidt | ||
+ | This program is Free Software and has ABSOLUTELY NO WARRANTY | ||
+ | Please report bugs to http:// | ||
+ | |||
+ | Found DFU: [0483:df11] ver=2200, devnum=29, cfg=1, intf=0, path=" | ||
+ | Found DFU: [0483:df11] ver=2200, devnum=29, cfg=1, intf=0, path=" | ||
+ | Found DFU: [0483:df11] ver=2200, devnum=29, cfg=1, intf=0, path=" | ||
+ | Found DFU: [0483:df11] ver=2200, devnum=29, cfg=1, intf=0, path=" | ||
+ | </ | ||
+ | Anschließend könnt ihr Katapult flashen: \\ | ||
+ | '' | ||
+ | |||
+ | Nicht vergessen, den Boot0 Jumper wieder zu entfernen! | ||
+ | |||
+ | === SD-Karte === | ||
+ | Wenn euer Board keinen DFU Jumper hat, dann könnt ihr Katapult auch über die SD-Karte flashen. Aber um es gleich vorwegzunehmen ... Manchmal braucht man bei der Methode Geduld und innere Ruhe ;-) Denn es wäre nicht das erste Mal, dass diese Methode mehr schlecht als recht funktioniert ... | ||
+ | |||
+ | * Für das Flashen per SD-Karte braucht ihr eine kleine SD-Karte. Alles bis 4Gb sollte funktionieren, | ||
+ | * Formatiert die Karte als FAT32. | ||
+ | * Bei '' | ||
+ | * Mit '' | ||
+ | * Im Katapult Ordner wird eine extra Datei erzeugt: '' | ||
+ | * Diese Datei müsst ihr von eurem SBC (z.B. euer Raspberry Pi) auf die SD-Karte im Hauptverzeichnis kopieren. (Geht super mit MobaXTerm) | ||
+ | * Die Datei umbenennen von '' | ||
+ | * Die SD-Karte in das Board stecken und das Board mit Strom versorgen. | ||
+ | * Jetzt sollte in den nächsten 5-10 Sekunden Katapult geflasht werden. | ||
+ | * Man bekommt übrigens keinen Hinweis, ob und wann das Flashen abgeschlossen ist. Ggf. also mehrfach probieren. | ||
+ | * Sollte das Flashen geklappt haben wirdf meistens die Datei auf der SD-Karte in '' | ||
+ | |||
+ | Man merkt schon an der Länge der Anleitung, dass Flashen über SD-Karte ein Graus ist, den man - wenn Katapult einmal läuft - nie wieder braucht :-) | ||
+ | |||
+ | === ST-Link === | ||
+ | Für diese Variante wird ein ST-Link benötigt. Das ist ein Programmieradapter für STM32 Controller. Man bekommt ihn als China Clone bei eBay oder Amazon und die Teile sehen so aus: \\ {{: | ||
+ | |||
+ | * Um den ST-Link zu nutzen müssen wir erst die Software '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * Jetzt wird der ST-Link V2 mit dem Board verkabelt. Dazu haben eigentlich alle STM32 Boards einen sogenannten SWD Port. Dieser Port besteht aus mehreren Kontakten und wir benötigen '' | ||
+ | * SWDIO <-> DIO | ||
+ | * SWCLK <-> CLK | ||
+ | * GND <-> GND | ||
+ | * Dann wird das Druckerboard über den USB-Port mit Strom versorgt und der ST-Link Adapter ebenfalls in den SBC gesteckt. | ||
+ | * Jetzt könnt ihr mit folgendem Befehl erstmal den Speicher löschen: \\ '' | ||
+ | * Reset Taste am Board drücken und halten | ||
+ | * Das Kommando ausführen als z.B. '' | ||
+ | * Dann die Reset Taste am Board los lassen | ||
+ | * Macht man das in der Falschen Reihenfolge kommt es zu Fehlermeldungen! | ||
+ | * Anschließend kann man Katapult flashen: \\ '' | ||
+ | * Sieht kompliziert aus, ist es aber im Grunde nicht :-) | ||
+ | |||
+ | Nicht vergessen, die ST-Link Verkabelung wieder zu entfernen! | ||
+ | ==== RP2040 ==== | ||
+ | Bei einem RP2040 Board ist die Welt deutlich einfacher :-) | ||
+ | |||
+ | * Beim '' | ||
+ | * nach dem '' | ||
+ | * Haltet jetzt den Boot Button an eurem Druckerboard gedrückt und verbindet das Board per USB mit dem SBC. | ||
+ | * Startet jetzt im kataput Ordner '' | ||
+ | pi@Pi3Test: | ||
+ | Flashing out/ | ||
+ | Loaded UF2 image with 21 pages | ||
+ | Found rp2040 device on USB bus 1 address 35 | ||
+ | Flashing... | ||
+ | Resetting interface | ||
+ | Locking | ||
+ | Exiting XIP mode | ||
+ | Erasing | ||
+ | Flashing | ||
+ | Rebooting device | ||
+ | </ | ||
+ | * Fertig - ja so einfach kanns sein :-) | ||
+ | |||
+ | ===== Katapult checken ===== | ||
+ | Ihr könnt relativ einfach überprüfen, | ||
+ | |||
+ | ==== USB ==== | ||
+ | * Am Druckerboard 2x schnell hintereinander den Reset Button drücken. | ||
+ | * Im Terminal '' | ||
+ | * In der Ausgabe solltet ihr dann eine Zeile mit Katapult finden: \\ Bsp : '' | ||
+ | * Zudem gibt es noch eine Zeile mit " | ||
+ | |||
+ | ==== CAN ==== | ||
+ | > **Hinweis** \\ Die folgenden Schrotte setzen natürlich voraus, das der CAN Bus korrekt im Vorfeld eingerichtet wurde! | ||
+ | |||
+ | Wenn das Board über CAN verbunden ist, dann kann man mit den folgenden Schritten prüfen, ob Katapult geflasht wurde: | ||
+ | * Klipper Dienst stoppen \\ '' | ||
+ | * '' | ||
+ | biqu@BTT-PI12: | ||
+ | Found canbus_uuid=539892be834d, | ||
+ | Total 1 uuids found | ||
+ | </ | ||
+ | * Wird bei diesem Schritt kein Board gefunden, hilft oft ein Reset am Board (entweder über Reset Taster oder 1x Strom weg und wieder dran) | ||
+ | * Klipper Dienst wieder starten \\ '' | ||
+ | ===== Klipper flashen ===== | ||
+ | Klipper kann jetzt über USB bzw. über CAN auf das Druckerboard geflasht werden. | ||
+ | |||
+ | ==== USB ==== | ||
+ | * '' | ||
+ | * '' | ||
+ | * Hier erfolgen die gleichen Einstellungen wie bei Katapult. | ||
+ | * Der '' | ||
+ | * Als '' | ||
+ | * Klipper mittels '' | ||
+ | * Den seriellen Port ermitteln den euer Druckerboard verwendet \\ '' | ||
+ | * Und jetzt kommt die Magie von Katapult zu Einsatz :-) | ||
+ | * Flashen geht dann einfach mittels \\ '' | ||
+ | * Das Ergebnis sollte dann so aussehen: \\ <code bash> | ||
+ | Attempting to connect to bootloader | ||
+ | CanBoot Connected | ||
+ | Protocol Version: 1.0.0 | ||
+ | Block Size: 64 bytes | ||
+ | Application Start: 0x10004000 | ||
+ | MCU type: rp2040 | ||
+ | Flashing '/ | ||
+ | |||
+ | [################################################## | ||
+ | |||
+ | Write complete: 108 pages | ||
+ | Verifying (block count = 432)... | ||
+ | |||
+ | [################################################## | ||
+ | |||
+ | Verification Complete: SHA = AC11C20CD24F671A530404E4BBABBBFE28E69326 | ||
+ | CAN Flash Success | ||
+ | </ | ||
+ | |||
+ | > **Hinweis** \\ In der Original Anleitung soll das Klipper flashen so funktionieren: | ||
+ | |||
+ | |||
+ | ==== CAN ==== | ||
+ | * '' | ||
+ | * '' | ||
+ | * Hier erfolgen die gleichen Einstellungen wie bei Katapult. | ||
+ | * Der '' | ||
+ | * Als '' | ||
+ | * Klipper mittels '' | ||
+ | * Klipper Dienst stoppen \\ '' | ||
+ | * '' | ||
+ | biqu@BTT-PI12: | ||
+ | Found canbus_uuid=539892be834d, | ||
+ | Total 1 uuids found | ||
+ | </ | ||
+ | * Wird bei diesem Schritt kein Board gefunden, hilft oft ein Reset am Board (entweder über Reset Taster oder 1x Strom weg und wieder dran) | ||
+ | * Nicht wundern das hier ggf. '' | ||
+ | * Es kann auch sein, dass hier als Applikation '' | ||
+ | * Wir notieren und so oder so die UUID. In diesem Fall **539892be834d** | ||
+ | * Klipper flashen \\ '' | ||
+ | * Das Ergebnis: \\ {{: | ||
+ | * Kleine Überprüfung ob alles geklappt hat \\ '' | ||
+ | * Klipper Dienst wieder starten \\ '' | ||
+ | |||
+ | |||
+ | ===== nützliche ST-Link Kommandos ===== | ||
+ | Die folgenden Kommandos dienen nur als Referenz | ||
+ | |||
+ | * Chip erkennen & ST-Link testen \\ '' | ||
+ | * Firmware flashen BIN Datei \\ '' | ||
+ | * Firmware flashen HEX Datei \\ '' | ||
+ | * Flash löschen \\ '' | ||
+ | * Flash auslesen \\ '' | ||
+ | ===== Links ===== | ||
+ | * Voron CAN Infos \\ https:// | ||
+ | * Bootloader Entry Infos \\ https:// | ||
+ | * Original Bootloader für diverse Boards \\ https:// |