Vom ersten Jahr existierte bereits eine Linux-Distribution auf Basis von Yocto auf dem Prototypen. Für eine neue SD-Karte konnte allerdings kein Image davon erstellt werden, da das Script zum Erstellen nicht mehr funktioniert hat. Außerdem waren die Kernel-Treiber und der python-Server nicht im Image dabei, sondern mussten händisch darauf kopiert und geladen oder gestartet werden. Deshalb haben wir eine neue Linux-Distribution mit diesen Erweiterungen erstellt.
Ausgangslage
- Linux-Distribution auf Basis von Yocto
- Script zum Erstellen nicht funktionell
- Eigene Treiber und python-Server nicht im Image
- Kein Web-Debug-Service wie in SSL
- Fehlende Treiber und Firmware für USB-Wifi-Stick
- Alte Kernel-Version (4.14.73) und Treiber
- Kann nur unter Ubuntu 18.04 LTS (oder ähnlich älteren OS) ohne Probleme erstellt werden
Alte Basis, neue Distribution
Es wurde eine neue Distribution auf Basis der Distribution aus SSL erstellt:
- Weiterhin Kernel 4.14.73-LTSI mit RT-Patch
- Web-Debug-Service und fpgaregion aus SSL
- Eigene Rezepte für die eigenen (fertig entwickelten) Treiber, das FPGA-Design und den python-Server
- Neues, stabileres Script zum Erstellen von Image und/oder SDK
- Eigener device-tree „socfpga_cyclone5_de0_hexapod.dtb“. Dieser erlaubt das Hinzufügen von dtso-files über den Web-Service (Ähnlich zu DE1-Device-Tree nur mit anderen Timing-Parametern für Ethernet, da sonst extrem langsam). Außerdem haben die de0-device-trees zwischen den Linux-Kernel-Versionen unterschiedliche Namen, dieser sollte mit jeder Kernel-Version funktioniert.
Zusätzlich wurden in der Kernel-Config einige Treiber für USB-Wifi-Sticks mit Realtek-Chips aktiviert. Dafür wird außerdem das Rezept linux-firmware ins Image installiert. Und neue Software wie wpa-supplicant und wpa-cli wird auf dem Image installiert.
Die Änderungen für die Wifi-USB-Sticks sind aktuell nur im feature-branch "rework-yocto", da mit der gesamten linux-firmware das Image viel größer wird und der vorhandene USB-Wifi-Stick mit diesem alten Treiber und Firmware nicht optimal funktioniert. Zum Beispiel wird Hot-Plugging des Sticks nicht unterstützt. Erst mit dem in neueren Kernel-Versionen überarbeiteten Treiber funktioniert der Stick besser. Leider unterstützt der Edimax-Stick den Access-Point-Modus grundsätzlich nicht (also auch neue Treiber und Firmware helfen nicht).
Alles neu
Da mit den alten Kernel-Treibern der USB-Wifi-Stick nur bedingt funktioniert, gibt es einen weiteren feature-branch „new-yocto“ mit einer weiteren Distribution auf Basis von einer neuen Yocto-Version:
- Yocto Release 4.2 (mickledore), dementsprechend neues Poky mit vielen neuen Rezepten und neue Layer (meta-intel-fpga, …)
- Basis ist grundsätzlich wieder von SSL, aber nicht alle Rezepte aktiv, da Überarbeitungen notwendig
- Kernel 5.15 LTS (auch 6.1 verfügbar, aber für beide keine LTSI- oder fertige RT-Patch-Versionen/Rezepte verfügbar)
- Damit aktuellere Kernel-Treiber und linux-firmware (für USB-Wifi-Stick)
- Anpassungen an den Rezepten an die neue Syntax
- Kleine Anpassungen an den Treibern notwendig (Aufgrund von Kernel-API-Änderungen)
- Erstellbar zum Beispiel unter Ubuntu 20.04 LTS oder Fedora 36/37
Diese Distribution ist noch WIP und bootet zwar, ist aber noch wenig getestet. Der Edimax USB-Wifi-Stick funktioniert damit besser (zum Beispiel Hot-Plugging funktioniert jetzt). Außerdem wird aktuell keine Ethernet-MAC-Adresse gesetzt und weitere Rezepte sind noch deaktiviert oder (teilweise) auskommentiert. Damit wurde auch noch kein FPGA-Design vom Projekt getestet. Auch die README ist nicht aktuell. Und beim Starten landet man in U-Boot und muss manuell den Befehl "run bootcmd_mmc0" eingeben.