> ## Content Index
> Fetch the complete content index at: https://hagen.ghost.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# Wohlstandsverwahrlosung
- URL: https://hagen.ghost.io/wohlstandsverwahrlosung/
- Published: 2026-10-25T03:50:29.000Z
- Updated: 2026-10-25T03:50:29.000Z
- Author: Hagen Felix Piotraschke
- Tags: MCU

Diesmal ein Beitrag mit einem konkreten Beispiel aus meiner alltäglichen Arbeit der letzten Jahre, einem sogenannten GNSS-Datenlogger, manchmal auch noch unter der früheren Bezeichnung „GPS-Logger“ aus jenen Jahren geläufig, als zunächst nur Satelliten des US-amerikanischen NAVSTAR GPS unsere Erde umkreisten.

Doch dieses Beispiel soll nur illustrieren, worum es mir im folgenden Text wirklich geht: Mikrocontroller (MCU) möglichst stets so zu verwenden, wie es ihrer 'Natur' am besten entspricht!

Das Beispiel des GNSS-Datenloggers kann dies ebenso gut verdeutlichen wie auch sein Gegenteil, die heutzutage leider immer öfter zutage tretende Überfrachtung von MCU-Installationen mit Aufgaben, für die man ggfs. besser gleich einen klassischen Computer (PC etc.) nutzen sollte.

Der Fortschritt legt hier seine Fallstricke aus, denn die Leistungszuwächse heute üblicher MCU-Hardware und bereits äußerst komfortable Programmierhilfsmittel ermöglichen mittlerweile sogar völlig unbedachte Lösungsansätze, die noch vor einigen Jahren gänzlich undenkbar gewesen wären.

Damit zum konkreten Beispiel.

Ein GNSS-Logger kann diversen Zwecken dienen, wobei der häufigere wohl darin liegen dürfte, für jede vom GNSS-Empfänger berechnete Position jeweils nur einzelne Werte aufzuzeichnen (Längen-/Breitengrad, Zeit, sichtbare/genutzte Satelliten, Kurs, Geschwindigkeit usw.) — in meiner Arbeit hingegen war es viel öfter erforderlich, die komplette Datenausgabe des GNSS-Empfängers vollständig und unverändert auf einen Datenträger (SD-Speicherkarte etc.) zu schreiben, um diese Datenmenge zu einem späteren Zeitpunkt genauer auswerten bzw. untersuchen zu können.

Das können manchmal recht üppige Datenmengen sein, innerhalb einer Stunde durchaus auch etliche Megabytes (MB).

Für die alten Hasen der MCU-Welt trotzdem nur eine relativ leichte Übung, denn niemals würde ihnen der Gedanke kommen, es trotz der heute so viel stärkeren Möglichkeiten anders anzugehen als seit jeher: Nimm den rohen Datenstrom so, wie er ankommt, und schiebe ihn unverändert weiter bis zum Datenträger.

**Bytestream, Byte-Array, Filehandle.**

Früher ging es gar nicht anders, und auch heute noch ist es der einzig vernünftige Weg.

Dessen Vorteil ist zwar auch der geringere Anspruch an MCU-Ressourcen (Rechenleistung/Stromverbrauch, Arbeitsspeicher usw.), vorrangig jedoch die Vermeidung von Risiken, die bei anderen Lösungsansätzen beinahe unvermeidlich sind.

Wiederum am konkreten Beispiel: Man könnte versucht sein, bei der GNSS-Datenausgabe nur an die Textzeilen im üblichen NMEA-Format zu denken.

Besteht ggfs. eine Laufzeitumgebung nebst zugehörigem Programmierwerkzeug, um Textzeilen separieren und anhand ihrer ersten Textzeichen zuordnen zu können (vom GNSS-Empfänger z. B. NMEA-Zeilen mit „$GNGGA,“ erwartend), könnte das bereits der tödliche Fehler sein.

Die im obigen Bild gezeigte Ausgabe eines GNSS-Empfängers von u-blox zeigt den ganz besonderen Fallstrick, wenn seriell nicht nur Textzeilen ankommen, sondern die von u-blox seit jeher gewohnte wilde Mischung von Text- und Binärnachrichten im selben Datenstrom: Das allein kann vielleicht schon bewirken, eine auf „$GNGGA“ lauernde MCU-Firmware einfrieren bzw. abstürzen zu lassen.

Noch tückischer hingegen das Risiko, sich mit einer gar zu großen Aufschichtung von Software (Ausführungsplattform, Drittanbieter-Bibliotheken usw.) letztlich doch solche Probleme wie Speichermangel, -leckagen bzw. -überläufe einhandeln zu können, welche ja eigentlich in klassischen MCU-Anwendungen traditionell viel seltener als bei 'richtigen' Computer-Betriebssystemen sind.

Gerade deswegen, weil es für MCU-Einsteiger inzwischen schon so komfortabel geworden ist, könnte man sich beispielsweise dazu verlocken lassen, als Laufzeitumgebung auf seiner MCU das mittlerweile sehr beliebte MicroPython mit ggfs. noch einigen zusätzlichen Python-Bibliotheken zu verwenden.

Um so die mit „$GNGGA,“ beginnenden NMEA-Textzeilen separieren zu können, genügen vielleicht nur wenige eigene Programmzeilen, und alles läuft — bis das erste binäre UBX hereingrätscht.

Lange Rede, kurzer Sinn: Der Fehler läge dann nicht in der schuldigen Bibliothek oder Laufzeitumgebung, sondern zwischen den Ohren des Entwicklers, der ohne Not seiner MCU etwas abverlangen will, was gar nicht ihre Domäne ist.

---

*„... MicroPython eine Speicherbereinigung nutzt. Aus praktischer Sicht versucht MicroPython dann, wenn Speicherplatz zugewiesen werden muss, einen ausreichend großen dynamischen Speicher zu finden. Gelingt dies nicht, versucht MicroPython dann, ungenutzte oder redundante Objekte im Speicher zu löschen. Dies ist ein Prozess, der normalerweise in Millisekunden gemessen wird. Alternativ kann ein Entwickler gelegentlich gc.collect() ausführen, um den Speicher in vorher festgelegten Intervallen zu bereinigen und so sicherzustellen, dass die Speicherbereinigung nicht innerhalb maßgeblicher Codeabschnitte erfolgt.“*

[https://www.mouser.de/de/blog/unterschiede-zwischen-python-und-micropython](https://www.mouser.de/de/blog/unterschiede-zwischen-python-und-micropython?ref=hagen.ghost.io)

---

*„MicroPython supports many standard Python libraries, supporting more than 80% of the features of Python's most used libraries.“*

[MicroPython - Wikipedia![](https://storage.ghost.io/c/66/0c/660c9b80-e8f0-40f5-b8af-97df820adf6f/content/images/icon/wikipedia-906aaea6-f029-4faf-b7ec-1c6d120a201e.ico)Wikimedia Foundation, Inc.Contributors to Wikimedia projects![](https://storage.ghost.io/c/66/0c/660c9b80-e8f0-40f5-b8af-97df820adf6f/content/images/thumbnail/120px-MicroPython_new_logo.svg-df824f0d-bd39-40d0-94ae-47adf54e4ec8.png)](https://en.wikipedia.org/wiki/MicroPython?ref=hagen.ghost.io)

---