Firmware

Aus homeautomation.x-api.de
Wechseln zu: Navigation, Suche

Mit Firmware wird die Software bezeichnet, die mit einem Gerät an den Anwender ausgeliefert wird. Im eigentlichen Sinn des Wortes ist es nur die Software, die auf dem Gerät selbst fest eingespeichert ist und ggf. durch ein sog. Update verändert werden kann. Es werden hier aber auch die Softwareanteile dazu gerechnet, die ein Gerät spezifisch bedienen, also z.B. eine spezielle APP auf einem Smartphone für die Wartung eines bestimmten Gerätes.

Aber auch die Software, mit der Standardgeräte (Smartphones, Tablets, PCs, Smart Watches, Wearables, etc.) in die dezentrale Heimautomatisierung integriert werden, fallen hier unter den Begriff Firmware. Damit wird die Unterscheidung zu der Software getroffen, die ein Anwender selbst entwickeln kann, um seine Heimautomatisierung an individuelle Vorstellungen anzupassen. Die Gestaltung einer entsprechenden Programmierschnittstelle ist wiederum ein Bestandteil der Firmware.

Entwicklungsumgebung

Allgemeines

Heutzutage werden von den meisten Mikrocontroller-Herstellern die Software-Entwicklungssysteme kostenlos zur Verfügung gestellt. Hat sich ein Gerätehersteller auf den Einsatz eines bestimmten Mikrocontrollers bzw. einer bestimmten Mikrocontroller-Familie festgelegt, so ist das zugehörige Entwicklungssystem sicher eine sehr gute Wahl für die Softwareentwicklung.

Für die Ausbildung und/oder im Rahmen eines universell anwendbaren Projektes ist die Festlegung auf einen bestimmten Mikrocontroller und das zugehörige Entwicklungssystem allerdings der falsche Weg. Hier ist der richtige Ansatz, ein bestimmtes Entwicklungssystem gut zu beherrschen und das für die Softwareentwicklung mit beliebigen Mikrocontrollern einzusetzen. Sehr gute Ansätze sind dabei u.a. die Konzepte von Arduino und PlatformIO. Beide lassen sich auch mit anderen Freeware-Entwicklungssystemen wie Eclipse oder mit Programm-Editoren wie Visual Studio Code kombinieren.

Es soll im Rahmen dieses Projektes keine Bewerbung eines bestimmten Entwicklungssystems oder Mikrocontrollers passieren. Das beste Entwicklungssystem ist immer das, mit dem der Anwender am besten umgehen kann und das er ohne unverhältnismäßig großen Aufwand für die Programmierung beliebiger Mikrocontroller anpassen kann. Hier werden die Entwicklungssysteme (bzw. Konzepte) vorgestellt, mit denen der eine oder andere Teilnehmer am Projekt der dezentralen Heimautomatisierung gute Erfahrungen gemacht hat.

Verwaltung/Organisation der Software

Ein großes Problem beim Einsatz typischer Software-Entwicklungssysteme (IDE) ist deren Fixierung auf eine bestimmte Verwaltung der Programme bzw. Programmteile und Bibliotheken. Das fällt einem meistens erst dann auf, wenn man denselben Quellcode (Source) für verschiedene Anwendungen bzw. Mikrocontroller einsetzen möchte und von dem Grundsatz "es darf nur einen Quellcode geben" nicht abweichen möchte. Bei Visual Studio und Eclipse kann man immerhin die Quellcodedateien über Verlinkung integrieren und damit eine eigene Verwaltungsstruktur aufbauen. Allerdings wird es dabei auch kompliziert, wenn diese Entwicklungssysteme mit anderen Ressourcen (Arduino oder PlatformIO) kombiniert werden. Denn auch damit sind bestimmte Verwaltungsstrukturen verbunden. Und wer möchte schon sein Versionsverwaltungssystem an die Struktur einer IDE anpassen?

Sloeber/Eclipse

Nach ersten Erfahrungen mit der Arduino IDE fehlten mir die Möglichkeiten, an die ich mich bei der Programmierung in C# mit Visual Studio 2010 gewöhnt hatte (ich brauchte bis heute noch kein Update, was aus meiner Sicht ein besonderes Lob für eine Software ist). Da freute ich mich sehr über eine vollständige Entwicklungsumgebung, die Eclipse und Arduino unter der Bezeichnung Sloeber kombinierte. Vor vielen Jahren hatte ich mich, trotz mit Visual Studio vergleichbarer Eigenschaften, gegen Eclipse entschieden, weil es auf meinem PC einfach zu langsam war. Aber inzwischen hat die Geschwindigkeit typischer PCs derart zugenommen, dass ich auch mit Eclipse sehr gut arbeiten kann. Um eine eigene Verwaltungsstruktur, insbesondere die Anbindung an GitHub, für die Software nutzen zu können, musste ich allerdings ein paar Klimmzüge machen, die hier beschrieben sind. Leider funktioniert das verwendete Konzept nur unter Linux.