IoT Software oder embedded Software für Anfänger

Im Vergleich zu typischen Computern basiert die Software bei Internet of Things Modulen auf einem embedded System. Typischerweise unterscheidet man hier zwischen dem üblichen Betriebssystem eines Computers und der Firmware bei einem Internet of Things Modul. Das typische Betriebssystem verfügt über ausreichend Speicher und Ressourcen, sodass man zusätzliche Hardware anschliessen und mittels Treiber entsprechend betreiben kann.  Da Internet of Things Module von der Hardware massgeblich zum Steuern, Messen und Regeln ausgelegt sind beruht die grundlegende Funktion nicht auf Daten zu bevorraten, sondern entsprechend auf Endgeräte durchzureichen.  Dementsprechend klein ist sowohl der Arbeitsspeicher (ROM) als auch der eigentliche Speicher (RAM). Um entsprechend Ressourcen zu sparen wird daher für Internet of Things Modul die Firmware massgeschneidert erstellt. Grundlegend nutzt man hier den modulieren Aufbau der jeweiligen Firmware.

Der modulare Aufbau einer Internet of Things Firmware

Ganz gleich für welche Plattform man sich auch entscheidet ob

  • Espressif
  • eLua / NodeMCU
  • freeRTOS

um nur die bekanntesten zu nennen, man findet stets einen identischen modularen Aufbau. Typischerweise unterscheidet man hierbei zwischen grundlegenden Modulen die dem jeweiligen Internet of Things Modul die wichtigsten Grundlagen bereitstellt. Man spricht dabei auch von einem Kernel. Der Kernel ist der zentrale Bestandteil der die Prozessabläufe im Betriebssystemkern steuert. Der Kernel ist dabei in folgende Schichten untergliedert:

  1. Schnittstelle zur Hardware vom Prozessorkern für weitere Geräte, Speicher, usw.
  2. Speicherverwaltung, beispielsweise zur Verwaltung der jeweiligen Speichersektoren
  3. Prozessverwaltung, um Prozesse zu steuern oder gegebenenfalls auszulagern
  4. Geräteverwaltung, um mit weiteren Geräten über Schnittstellen zu kommunizieren
  5. Dateisystemverwaltung, um Datei zu schreiben, zu lesen oder zu löschen

Da es sich bei den vorgenannten Plattformen um offene Betriebssysteme handelt kann man grundlegend auf jede Schicht des Kernels zugreifen. Typischerweise werden allerdings die Kernel Schichten 1 bis 3 gänzlich durch den Hersteller des Prozessor / Prozessorkern erfüllt. Die Schichten 4 und 5 (Geräteverwaltung sowie die Dateisystemverwaltung) hingegen können durch die Firmware, bzw. ein entsprechendes SDK entsprechend geändert und optimiert werden.

Das SDK Software Development Kit für Internet of Things Module

Wie der Name bereits erläutert handelt es sich bei einem SDK um eine Entwicklungsumgebung um die Firmware für ein Internet of Things Modul zu manipulieren, bzw. zu erstellen. Allerdings sollte man sich hier von grafischen Oberflächen, sowie Drag und Drop gänzlich verabschieden. Die typischen Werkzeuge reduzieren sich dabei auf einfache Editoren / Texteditoren zum schreiben von Programmabläufen so Konsolen wie

  • Terminal unter Mac OS X und Linux
  • Eingabeaufforderung unter Windows

Vom Ablauf her erstellt man zunächst die gewünschten Programmabläufe mittels einem Editor und erstellt, je nach SDK mittels der Konsole die gewünschte Firmware.

Espressif SDK oder NodeMCU LUA oder eLUA SDK

Grundlegend bieten beide ESP8266 SDK eine nahezu identische Leistungsfähigkeit. Zwar häufen sich auch hier mittlerweile gewisse Stimmen die das Eine oder das Andere verurteilen. Schlussendlich gilt hier, wie auch bei typischen Computern

Jeder soll das nutzen was für ihn das beste Werkzeug bildet

Diesbezüglich wird nachfolgend lediglich auf den massgeblichen Unterschied zwischen Espressif SDK und NodeMCU / LUA SDK eingegangen. Für jene die bereits in C involviert sind wird womöglich das ESpressif SDK die erste Wahl sein. Obgleich weitaus mehr Code Beispiele für das Espressif SDK im Internet zu finden sind, empfiehlt sich für Neueinsteiger das NodeMCU LUA SDK. Im Vergleich zum Espressif SDK wird beim NodeMCU LUA SDK kein zusätzlicher Compiler benötigt. Das LUA Script ist direkt ausführbar und muss nicht mittels einem Compiler in den notwendigen Maschinencode übersetzt werden. Die jeweiligen Compiler sind für Mac OS X und Linux auf der Internetseite der GNU Compiler Collection zu finden. Für Windows Anwender bedarf es hierzu MinGW oder Cygwin.

Des Weiteren gibt es für NodeMCU LUA bereits einen entsprechenden online einen komfortablen Build Service um sich die jeweilige Firmware ganz einfach zu erstellen. Es müssen dabei lediglich die jeweilig,

  1. benötigten NodeMCU LUA Pakete ausgewählt werden
  2. eine gültige Emailadresse eingegeben werden

und in wenigen Augenblicken bekommt man die individuelle Firmware überstellt. Diesbezüglich benötigt man zum Einstieg keineswegs das NodeMCU SDK. Im Folgenden wird daher nicht weiter auf das NodeMCU eingegangen, hierzu findet sich bereits ausreichend Dokumentationen im Internet. Da zum Erstellen einer Espressif Firmware stets das SDK benötigt wird sei hier auf die Dokumentation von Espressif sowie dem ESP8266 RTOS SDK verwiesen.

Welche Module man im Bezug einer NodeMCU Firmware benötigt richtet sich nach dem jeweiligen Anwendungszweck des ESP8266 WLan Modul. Die jeweiligen Module werden anschaulich durch die NodeMCU Dokumentation erläutert. Nachdem man sich die entsprechende NodeMCU Firmware erstellt hat muss nun die Firmware entsprechend auf den ESP8266 geschrieben werden. Die jeweiligen Schritte, sowie das Vorbereiten des Host Systems / Computer oder Mac wird hier beschrieben.