Aus Raspberry Pi Geek 12/2021

Selbst kompilierte Firmware auf Tastaturen flashen (Seite 4)

Auf einem Raspberry Pi mit dem normalen 32-Bit-Pi-OS bleibt Ihnen zum Installieren des QMK-Kommandozeilen-Tools nur die Installation via Pythons Pip. Dazu müssen wir dieses (und eben Git) erst einmal installieren. Danach rufen Sie Pip auf (Listing 3).

Listing 3

Pip und Git

$ sudo apt install git python3-pip
$ python3 -m pip install build qmk

Es gibt auch den Befehl pip selbst, aber unter Pi OS beziehungsweise Debian 10 “Buster” müssen Sie pip3 aufrufen, weil pip die Python-2-Variante startet. In Pi OS/Debian 11 “Bullseye” gibt es nur noch die Python-3-Variante, die hier wieder pip heißt. Aus diesem Grund verwendet Listing 3 in der zweiten Zeile einen generischen Befehl, der unabhängig von der verwendeten Betriebssystemversion funktioniert.

Je nach Pi-OS- beziehungsweise Debian-Version (zum Beispiel bei Version 10) müssen Sie dem Suchpfad in der Umgebungsvariable $PATH noch den von Pip verwendeten Installationspfad hinzufügen [19]. Listing 4 zeigt das für die standardmäßig verwendete Shell Bash.

Listing 4

Pfad ergänzen

$ echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc

Einen ersten Lauf von qmk setup sehen Sie in den Abbildungen 4 bis**7, die allerdings nur die relevanten Stellen der relativ langen Ausgabe zeigen. Der Aufruf klont einerseits das Git-Repository von QMK (es heißt qmk_firmware) in Ihr Home-Verzeichnis oder optional ein anderes angegebenes Verzeichnis (Abbildung 4).

Abbildung 4: Ausgabe von <code>qmk setup</code> (Start): Klonen des Git-Repositorys.

Abbildung 4: Ausgabe von qmk setup (Start): Klonen des Git-Repositorys.

Weiter überprüft es, ob alle notwendigen Pakete installiert sind (Abbildung 5). So installiert es – sofern nicht schon vorhanden – unter anderem die Pakete gcc, gcc-avr, gcc-arm-none-eabi, avr-libc, binutils-avr und binutils-arm-none-eabi (Abbildung 6). Diese werden zum Kompilieren von Code für die gängigen Hardwarearchitekturen von Mikrocontrollern auf Tastaturen (ARM und AVR) wie auch nativem Code benötigt.

Abbildung 5: Ausgabe von <code>qmk setup</code> (Fortsetzung): Erkennen fehlender Abh&auml;ngigkeiten.

Abbildung 5: Ausgabe von qmk setup (Fortsetzung): Erkennen fehlender Abhängigkeiten.

Abbildung 6: Ausgabe von <code>qmk setup</code> (Fortsetzung): 2&nbsp;GByte Software aus Paketen installieren.

Abbildung 6: Ausgabe von qmk setup (Fortsetzung): 2 GByte Software aus Paketen installieren.

Weiter installiert es die Pakete avrdude, dfu-util und dfu-programmer, die alle zum Flashen von Code auf Mikrocontroller dienen beziehungsweise mit dem von der Hardware verwendeten Bootloader korrelieren. Weiter richtet die Routine Tools wie Unzip und Wget ein, die man typischerweise zum Herunterladen und Auspacken von Archiven benötigt.

Der Mischmasch aus Sprachen zum Beispiel in Abbildung 4 kommt daher, dass QMK Tool anscheinend nicht lokalisiert wurde und entsprechend kein Deutsch spricht, das Kommando git aber schon. Zeigt qmk setup am Ende den Satz QMK is ready to go (Abbildung 7), können Sie mit dem Kompilieren von Firmware loslegen.

Abbildung 7: Ausgabe von <code>qmk setup</code> (Ende): Download eines Projekts, das nicht im Git liegt. Zum Schluss sind nun alle Abh&auml;ngigkeiten erf&uuml;llt.

Abbildung 7: Ausgabe von qmk setup (Ende): Download eines Projekts, das nicht im Git liegt. Zum Schluss sind nun alle Abhängigkeiten erfüllt.

Kompilieren der Firmware

Das lokale Kompilieren einer Firmware auf Basis einer im QMK Configurator online zusammengestellten Tastaturbelegung geht schnell von der Hand: Sie rufen einfach qmk compile JSON-Datei auf. Qmk übersetzt daraufhin in einem Rutsch alles, was notwendig, aber noch nicht kompiliert ist.

Das bedeutet auch, dass beim ersten Aufruf von qmk compile pro Hardwarearchitektur alle für die gewünschte Firmware-Variante relevanten Bestandteile von QMK neu entstehen (Abbildung 8). Bei späteren Aufrufen erstellt Qmk nur jene Bestandteile neu, die sich in der Zwischenzeit geändert haben oder direkt von der Tastenbelegung abhängig sind. Die kompilierte Firmware findet sich in verschiedenen Formaten im Unterverzeichnis .build/ unterhalb von qmk_firmware/.

Abbildung 8: Beim ersten Kompilieren werden viele Grundbausteine von QMK &uuml;bersetzt.

Abbildung 8: Beim ersten Kompilieren werden viele Grundbausteine von QMK übersetzt.

Als Beispiel dient im Folgenden das Preonic-Keyboard des Autors (Abbildung 9). Da er Emacs benutzt, ist [Strg]+[X][Strg]+[S] (Speichern der aktuellen Datei) eine sehr häufig benutzte Tastenkombination. Er tippt diese mit dem kleinen Finger auf [Strg]+, dem Zeigefinger auf [X]+ und dem Mittelfinger auf [S]+. Im klassischen ortholinearen Tastaturlayout befinden sich [X]+ und [S] aber direkt untereinander, was zu verknoteten Fingern führt.

Abbildung 9: Das Preonic-Keyboard des Autors mit der um eine Taste verschobenen untersten Buchstabenreihe.

Abbildung 9: Das Preonic-Keyboard des Autors mit der um eine Taste verschobenen untersten Buchstabenreihe.

Deswegen hat der Autor die unterste Buchstabenreihe der (englischen) Preonic-Tastatur um eine Taste verschoben, sodass [/] ans linke Ende der Tastenreihe rutscht. Die zugehörige JSON-Datei mit diesem Layout findet sich im Download-Bereich zu diesem Artikel und heißt abe-r4-one-off.json. Sie können Sie mit der grünen Pfeil-nach-oben-Schaltfläche in den QMK Configurator laden, um sie im Detail anzusehen oder als Basis für eine eigene Tastenbelegung zu verwenden. Listing 5 zeigt das Ergebnis der Kompilierung mittels qmk compile abe-r4-one-off.json im Verzeichnis qmk_firmware/.build/.

Listing 5

Ergebnis der Kompilierung

$ ls -l qmk_firmware/.build
total 2600
drwxr-xr-x 5 abe abe    4096 Sep  7 01:46 obj_preonic_rev3/
drwxr-xr-x 9 abe abe    4096 Sep  7 01:46 obj_preonic_rev3_abe-r4-one-off/
-rwxr-xr-x 1 abe abe   54432 Sep  7 01:51 preonic_rev3_abe-r4-one-off.bin*
-rwxr-xr-x 1 abe abe 1671572 Sep  7 01:51 preonic_rev3_abe-r4-one-off.elf*
-rw-r--r-- 1 abe abe  153107 Sep  7 01:51 preonic_rev3_abe-r4-one-off.hex
-rw-r--r-- 1 abe abe  837211 Sep  7 01:51 preonic_rev3_abe-r4-one-off.map

Die Dateien mit den Endungen .bin und .hex sind die, die später auf die Tastatur geflasht werden. Sie unterschieden sich nur im Format: Die .bin-Datei liegt im Binärformat vor; beim .hex-File handelt es sich um eine Textdatei, die jedes Byte in Form zweier hexadezimaler Ziffern darstellt. Je nach Tastatur, deren Bootloader und Flash-Programm benötigt man das eine oder das andere Format. QMK scheint immer beide zu kompilieren, auch wenn es weiß, wie eine Tastatur typischerweise geflasht wird – vermutlich um alternative Flash-Methoden zu unterstützen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 9 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben