Zum Inhalt

Embedded Linux

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
Quelle: https://linuxfoundation.org
Quelle: https://yoctoproject.org

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.