Skip to content

Erzeugen einer eigenen MicroPython Firmware

casjengu edited this page Mar 26, 2022 · 5 revisions

Erzeugen einer eigenen MicroPython Firmware

Diese Kurzanleitung richtet sich an Entwickelnde, die Anpassungen an der, hier im Repository zur Verfügung gestellten, MicroPython-Firmware vornehmen wollen.

Voraussetzung zum Durchführen dieser Anleitung:

  • PC mit installierter VirtualBox-Umgebung inklusive Oracle VM VirtualBox Extension Pack (Download hier)
  • Putty oder ein ähnliches SSH-Tool für den Zugriff auf die VM
  • WinSCP oder eine alternative SFTP-Software (wie z.B. FileZilla)

Alle Skripte, die im Ordner frozen des Repositories zu finden sind, sind aufgrund der Einsparung von Arbeitsspeicher direkt in die Micropython-Firmware integriert worden. Man spricht hierbei vom "Einfrieren von Modulen". (Weitere Informationen: Frozen Modules)
Hierbei handelt es sich größtenteils um die Handhabung der Netzwerk- und MQTT-Verbindung, welche im Normalfall nicht angepasst werden muss.

Dennoch kann eine Anpassung der Firmware aus folgenden Gründen notwendig sein:

  • Anpassung der Logik für die Netzwerk- und MQTT- Initialisierung
  • Direkte Integration weiterer Bibliotheken zur Einsparung von Arbeitsspeicher
  • Fehlerbehebung und Aktualisierung der vorhandenen, eingefrorenen Module

Für das Erzeugen einer eigenen Firmware wird die esp-open-sdk-Werkzeugkette benötigt.
Der Prozess des Baus dieser Werkzeugkette, lässt sich aus folgenden, beiden GitHub-Projekten ableiten:

Des weiteren ist hier ein englisches Video zu finden, welches diesen Prozess veranschaulicht.

Um sich den Bau der Werkzeugkette zu sparen, wurde ein Systemabbild auf Basis von Ubuntu Server 20.04 LTS für VirtualBox erstellt, welches die vorkompilierte Werkzeugkette bereits enthält:
Download: https://cloudstorage.elearning.uni-oldenburg.de/s/BnjBsXTpgFCeXMH
Download (Mirror Nextcloud): https://nextcloud.wiredlesslan.eu/index.php/s/aB7MeBAzGaXad53

Binden Sie dieses Image in VirtualBox ein.
Sollte VirtualBox auf Ihrem System noch nicht vorhanden sein, können Sie sich hier alle erforderlichen Dateien herunterladen.
Voraussetzung sind für die erfolgreiche Einbindung das Vorhandensein des VirtualBox Extension Packs sowie eine, im BIOS aktivierte, Hardware-Virtualisierung.
Eine Anleitung zur Aktivierung der Hardware-Virtualisierung, falls noch nicht geschehen, lässt sich hier finden: Hardware-Virtualisierung aktivieren

Prüfen Sie nach der Einbindung der VM in VirtualBox, ob in den Netzwerk-Einstellungen für den Adapter 1 die Port-Weiterleitung auf den Port 2522 aktiviert ist:
virtualbox_port_forwarding

Sollte dies nicht der Fall sein, erstellen Sie eine entsprechende Regel.
Dies wird der Port sein, mit dem sie per Putty oder WinSCP auf die VM zugreifen können.

Starten Sie die VM und warten Sie, bis diese vollständig hochgefahren ist. Öffnen Sie nun WinSCP und verbinden sich per SFTP mit der VM:

IP-Adresse lautet 127.0.0.1 (localhost).
Benutzername lautet micro. Das Kennwort entspricht dem Benutzernamen.

Navigieren Sie innerhalb des Programms WinSCP zum Ordner /home/micro/esp-open-sdk/micropython-1.16/ports/esp8266/modules.
Hier befinden sich alle Module, die beim Erzeugen der Firmware, in diese "eingefroren" werden:

Nehmen Sie Ihren Wünschen entsprechend Anpassungen vor, indem Sie Module von Ihrem PC mittels WinSCP hinzufügen oder vorhandene Module löschen/anpassen.

Nun können Sie sich mit dem Terminal der virtuellen Maschine verbinden. Dies können Sie entweder über Putty machen oder direkt über VirtualBox.
Über Putty geben Sie folgende Daten, wie im Bild zu sehen, ein:

Bei der Benutzernamen- und Passwort-Abfrage geben Sie jeweils micro ein.
Um den Erzeugungsprozess der Firmware zu starten, führen Sie folgende Befehle im Terminal aus:

cd /home/micro/esp-open-sdk/micropython-1.16/ports/esp8266/
make

Die Firmware sollte nun erstellt werden. Dieser Prozess kann circa eine Minute dauern.
Nach Abschluss dieses Prozesses befindet sich die erstellte Firmware mit dem Namen firmware-combined.bin im Verzeichnis /home/micro/esp-open-sdk/micropython-1.16/ports/esp8266/build-GENERIC.

Übertragen Sie diese Datei mithilfe von WinSCP auf Ihren Rechner. Diese Firmware können Sie nun verwenden, um Ihren ESP8266 Mikrocontroller hiermit zu konfigurieren.
Eine Anleitung hierzu befindet sich bereits im Wiki: Überschreiben der MicroPython-Firmware

Nachdem Sie Ihre Firmware übertragen haben, können Sie die das Verzeichnis build-GENERIC mithilfe des folgenden Terminal-Befehls löschen:

make clean

Damit können Sie gewährleisten, dass beim nächsten Erstellprozess der Firmware kein Problem aufgrund von Altdaten aus dem vorherigen Prozess auftritt.

Wenn Sie eine Firmware auf Basis zukünftiger MicroPython-Firmware-Versionen bauen wollen, laden Sie sich die aktuellste Source-Code Distribution von der offiziellen Website herunter: Micropython Downloads

Übertragen Sie den entpackten Ordner in das Verzeichnis /home/micro/esp-open-sdk.

Der Erzeugungsprozess ist analog zu dem für Version 1.16.
Ersetzen Sie für den cd-Befehl die Versionsnummer 1.16 durch die entsprechende Versionsnummer der von Ihnen heruntergeladenen Source-Code Distribution.

Warnung:
Die Kompatibilität der Module zu einer neueren Micropython-Firmware kann nicht gewährleistet werden, sofern im Repository selbst keine aktuellere Firmware-Basis angeboten wird.

Auch kann es sein, dass die, zur Verfügung gestellte, esp-open-sdk-Werkzeugkette für zukünftige Versionen nicht mehr aktuell genug ist.
(Stand 17.10.2021: Erfolgreicher Test mit MicroPython 1.17)

In diesem Fall muss eine aktualisierte Version des Ubuntu-Abbildes inklusive aktualisierter Werkzeugkette zur Verfügung gestellt werden.
(Alternative wäre die Erstellung einer eigenen, aktualisierten Variante der esp-open-sdk-Werkzeugkette)

Clone this wiki locally