Created Howto: Firmware mit PlatformIO selbst kompilieren (markdown)
95
Howto:-Firmware-mit-PlatformIO-selbst-kompilieren.md
Normal file
95
Howto:-Firmware-mit-PlatformIO-selbst-kompilieren.md
Normal file
@@ -0,0 +1,95 @@
|
||||
## Inhalt:
|
||||
|
||||
* [1. Vorwort](#1-vorwort)
|
||||
* [2. Installation von PlatformIO](#2-installation-von-platformio)
|
||||
* [3. Herunterladen des Firmware-Quellcodes](#3-herunterladen-des-firmware-quellcodes)
|
||||
* [4. Öffnen des Quellcodes in Visual Studio Code / PlatformIO](#4-quellcode-in-visual-studio-code--platformio-laden)
|
||||
* [5. Das erste mal kompilieren](#5-das-erste-mal-kompilieren)
|
||||
* [6. Firmware auf dem Drucker installieren](#6-firmware-auf-dem-drucker-installieren)
|
||||
* [7. Beispiel: Eigene Änderungen vornehmen und Firmware anpassen](#7-beispiel)
|
||||
|
||||
## 1. Vorwort
|
||||
|
||||
Um diese _Hybrid-Firmware_ selbst zu kompilieren, also den Quellcode in Maschinencode für den Drucker zu übersetzen, ist es leider nicht mehr so ohne weiteres möglich, die simple Arduino IDE zu verwenden. Da mit dem vorliegenden Quellcode nicht nur eine einzelne Firmware gebaut wird, sondern über die Möglichkeit von [Profilen](https://docs.platformio.org/en/latest/projectconf/index.html) jede einzelne Konfiguration erstellt werden kann, ohne dafür jeweils eigenen Quellcode vorzuhalten.
|
||||
|
||||
Das hat den Vorteil, dass man nur eine Code-Basis pflegen muss und sich alle Änderungen (die nicht Drucker-spezifisch sind) direkt auf alle anderen Drucker auswirken. Möchte man z.B. grundsätzlich die Maximaltemperatur des Hotends ändern, so kann man dies _gobal_ tun, ohne es für jeden Drucker und jede Firmware einzeln anpassen zu müssen. Man ändert einfach die Temperatur im Quellcode und kompiliert dann einfach alle gewünschten Druckerkonfigurationen.
|
||||
|
||||
Aus dem Grund verwende ich eigene Profile und [Compiler Direktiven](https://en.wikipedia.org/wiki/Directive_(programming)) und eine [IDE (Entwicklungsumgebung)](https://de.wikipedia.org/wiki/Integrierte_Entwicklungsumgebung), welche dies unterstützt. Ich habe mich hierbei für das kostenlose [Visual Studio Code](https://code.visualstudio.com) von Microsoft mit der zugehörigen Erweiterung [PlatformIO](https://platformio.org) entschieden.
|
||||
|
||||
## 2. Installation von PlatformIO
|
||||
|
||||
PlatformIO ist keine eigenständige Entwicklungsumgebung, sondern ein Aufsatz/Zusatz, um mit Visual Studio Code einfach und bequem für eine Vielzahl von Mikrocontrollern zu entwickeln.
|
||||
|
||||
### 2.1 Installation von Visual Studio Code
|
||||
|
||||
Zuerst brauchen wir Visual Studio Code. Dies können wir direkt von https://code.visualstudio.com/Download herunterladen. Da ich einen Mac verwende, zeigen alle folgenden Screenshots die Mac-Variante. Jedoch unterscheidet sich der Inhalt kaum und lediglich die Menüs befinden sich vielleicht an anderer Stelle.
|
||||
|
||||
### 2.2 Installation von PlatformIO
|
||||
|
||||
Für PlatformIO brauchen wir nicht (wie meistens angenommen) irgendwas neues herunterladen oder manuell installieren. Stattdessen lässt sich diese Erweiterung direkt innerhalb der IDE installieren.
|
||||
|
||||
Hierzu klicken wir links auf das Symbol, welches wie ein Quadrat, bestehend aus 4 Quadraten aussieht und geben in die Suchleiste oben "platformio" ein. Der erste Treffer sollte das Plugin zeigen, welches wir dann mit einem Klick auf "Installieren" direkt herunterladen und installieren.
|
||||
|
||||
Wer will, kann hier auch gleich das Sprachpaket seiner Wahl installieren (z.B. Deutsch).
|
||||
|
||||
[[ https://raw.githubusercontent.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S/master/images/platformio_01_install.jpg | width = 800px ]]
|
||||
|
||||
Nach der Installation sollte der blaue Button auf "uninstall wechseln" und links in der Leiste mit den Symbolen ein neues auftauchen, welches wie ein Alien aussieht.
|
||||
|
||||
Die Installation ist damit abgeschlossen. Eventuell tauchen unten rechts noch Meldungen über Updates von Komponenten auf. Diese kann man bestätigen und dann einmal die gesamte IDE neustarten.
|
||||
|
||||
## 3. Herunterladen des Firmware-Quellcodes
|
||||
|
||||
Ich empfehle, immer eine bestimmte Version des Quellcodes herunterzuladen, da es sein kann, dass der _Master_, also der wirklich aktuellste Stand der Firmware, sich in einem instabilen Zustand befindet. Man _kann_ natürlich auch den Master nutzen, doch dann muss einem bewusst sein, dass hier Änderungen vorhanden sind, die bisher noch nicht für die Öffentlichkeit bestimmt sind sich somit von den .hex Releaseversionen unterscheiden.
|
||||
|
||||
Um eine bestimmte Version herunterzuladen, klicken wir links oben auf "switch branches/tags" und dort auf den Reiter "Tags". Hier suchen wir die gewünschte Version und klicken sie an. Daraufhin wechselt die gesamte Quellcodeseite auf den Stand zu diesem Zeitpunkt und man kann oben rechts auf den grünen Button klicken, der mit **Code** beschriftet ist und hier beispielsweise den Code als .zip-Datei herunterladen.
|
||||
|
||||
[[ https://raw.githubusercontent.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S/master/images/platformio_02_select_fw_1.jpg | width = 800px ]]
|
||||
|
||||
Alternativ liegt übrigens jedem Release auch der zugehörige Quellcode als Zip und tar.gz schon bei. Dies dient als Sicherheit, falls irgendwann doch mal Tags gelöscht werden oder sich das [Repository](https://de.wikipedia.org/wiki/Repository) ändert. Das ist unwahrscheinlich, aber man weiß ja nie ;)
|
||||
|
||||
[[ https://raw.githubusercontent.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S/master/images/platformio_03_select_fw_2.jpg | width = 800px ]]
|
||||
|
||||
## 4. Quellcode in Visual Studio Code / PlatformIO laden
|
||||
|
||||
Haben wir unseren gewünschten Quellcode heruntergeladen, muss dieser natürlich entpackt werden. Am besten an einen Ort, den man leicht wiederfindet, und der nicht zu tief auf der Festplatte vergaben ist, da auch die Pfadlänge gerade unter älteren Windows-Versionen zu einem Problem werden kann.
|
||||
|
||||
Der entpackte Ordner sieht nun nicht mehr sehr übersichtlich aus und beinhaltet sowohl sichtbare, als auch versteckte Dateien. (Dazu später mehr).
|
||||
|
||||
[[ https://raw.githubusercontent.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S/master/images/platformio_04_unzipped.jpg | width = 300px ]]
|
||||
|
||||
Jetzt öffnen wir Visual Studio Code und klicken oben links auf das Symbol mit den zwei Seiten Papier und danach auf **Open Folder**. Hier wählen wir einfach den Ordner aus, den wir eben entpackt haben und warten ein bisschen, bis VSCode alle Erweiterungen geladen hat. Danach begrüßt uns die Oberfläche mit einer Liste auf der linken Seite mit Dateien, die wir eben schon im Ordner gesehen haben.
|
||||
|
||||
[[ https://raw.githubusercontent.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S/master/images/platformio_05_open_folder.jpg | width = 800px ]]
|
||||
|
||||
|
||||
## 5. Das erste mal kompilieren
|
||||
|
||||
Der erste Schritt nach dem Öffnen sollte sein, einmal eine Variante der Firmware zu _bauen_, also zu kompilieren. Hier klicken wir links auf das Alien, scrollen in der Liste herunter, bis wir unseren Drucker und die passende Konfiguration gefunden haben (hier im Beispiel ein Mega S mit DGUS Clone Display und TMC2208 Treibern). Dort reicht es, diesen Eintrag "aufzuklappen" und dort auf **build** zu klicken. Das Kompilieren kann je nach Geschwindigkeit des PCs zwischen einigen Sekunden und mehreren Minuten dauern.
|
||||
|
||||
Nach einem erfolgreichen Kompilieren der Firmware, steht unten in dem Terminalbereich ein grüner **SUCCESS** Schriftzug und links daneben unsere gewählte Konfiguration.
|
||||
|
||||
Herzlichen Glückwunsch! Du hast das erste Mal eine Firmware kompiliert! :)
|
||||
|
||||
[[ https://raw.githubusercontent.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S/master/images/platformio_06_build.jpg | width = 800px ]]
|
||||
|
||||
|
||||
## 6. Firmware auf dem Drucker installieren
|
||||
|
||||
Hier gibt es zwei Möglichkeiten. Entweder, man schließt den Drucker direkt an dem PC an, auf dem auch VSCode installiert ist und klickt statt auf "build" diesmal auf **Upload**. PlatformIO kümmert sich um den Rest und die Firmware wird direkt auf den Drucker geladen.
|
||||
|
||||
Die zweite Möglichkeit ist das sichern der .hex-Datei, um diese dann über Cura oder Octoprint zu installieren. Hierzu gehen wir genau in den Ordner, in dem sich der Quellcode befindet. Möglicherweise müssen versteckte Dateien angezeigt werden, doch der Ort, an dem sich die Firmware befindet, ist immer derselbe: **/Firmwareordner/.pio/build/[VARIANTE]/firmware.hex**
|
||||
|
||||
[[ https://raw.githubusercontent.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S/master/images/platformio_07_build_finished.jpg | width = 300px ]]
|
||||
|
||||
## 7. Beispiel
|
||||
|
||||
Da wir jetzt wissen, wie man die Firmware selbst kompiliert, können wir auch Änderungen vornehmen.
|
||||
|
||||
Als Beispiel ändere ich hier den Sensor-Pin, welcher normalerweise für den BLTouch Sensor verwendet wird. Wenn man nach [dieser Anleitung](https://github.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S/wiki/BLTouch-Installation-(deutsch)) vorgeht, wird der **PIN 2** verwendet, doch oftmals besteht der Wunsch z.B. PIN 21 zu verwenden, da dieser auf dem Mainboard frei zugänglich ist.
|
||||
|
||||
Also navigieren wir zu **/Marlin/src/pins/ramps/** und suchen hier nach der Datei *pins_ramps.h*. Dort befindet sich ein define 'Z_MIN_PROBE_PIN', welchem man von **2** auf **21** ändern kann. Danach nur noch mit STRG+S abspeichern und die Firmware wie in Abschnitt 5 beschrieben kompilieren.
|
||||
|
||||
[[ https://raw.githubusercontent.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S/master/images/platformio_08_pin21.jpg | width = 800px ]]
|
||||
|
||||
**Fertig!**
|
Reference in New Issue
Block a user