.Net Micro Framework: C# auf einem Microcontroller!

In diesem Beitrag vergleiche ich die Eigenschaften vom .Net Micro Framework mit dem normalen .Net Framework. Was kann es, was nicht, was gibt es zusätzlich?

Eigenschaften vom .Net Micro Framework

Screenshot Visual StudioDas .Net Micro Framework beinhaltet nur eine Untermenge vom .Net Framework.
Einige Namespaces sind nicht vorhanden oder nicht vollständig verfügbar. Größtenteils ist das zu verschmerzen, weil die wenigsten Funktionen davon überhaupt von einem Microcontroller gebraucht werden. Das wichtigste ist verfügbar. Je nach Board ist sogar ein SQLite-Server verfügbar. Leider fehlen LINQ und, noch wichtiger, Generics.

Der .Net-Code wird interpretiert.
Das hört sich zunächst kritisch an. Bei näherem Hinsehen relativiert sich jedoch diese Problematik:

  • Die Methoden vom Framework werden nativ ausgeführt. Somit sind viele kostenintensive Prozesse des Programms nicht von diesem Nachteil betroffen.
  • Einige Methoden wurden speziell auf die Anforderungen für Microcontroller angepasst. So gibt es beispielsweise eine zweite Math-Klasse mit Trigonometrie-Methoden, die mit Integer-Werten arbeiten und daher auf einem Microcontroller schneller ausgeführt werden können.
  • Falls es zu Performance-Problemen kommt, können eigene Code-Abschnitte nativ implementiert werden und aus dem C#-Code aufgerufen werden.
  • Die Prozessorleistung ist auf den gängigen Controllern sowieso ausreichend groß, weswegen für die meisten Anwendungen dieses theoretische Performance-Problem nicht relevant ist.

Input / Output wird zu .Net-Code.
Die Abstraktion der Hardware ist sehr schön gelungen. Die Ports werden als Objekte zur Verfügung gestellt. Dazu werde ich in Kürze einen separaten Beitrag verfassen und einige Funktionen beschreiben.

Interrupts.Net Microcontroller
Wird ein Interrupt ausgelöst (z. B. weil an Pin 4 jetzt 3,3V anliegen), wird dafür ein .Net-Event gefeuert. Die Hardware-Welt wird so tatsächlich mit der High-Level-C#-Welt verbunden.
Beachten musst du dabei, dass diese .Net-Events Ressourcen verbrauchen. Werden also mehr Interrupts ausgelöst als abgearbeitet werden, kann es zu einem Überlauf kommen. So wirklich kritisch ist das jedoch nicht. Ich habe eine Logik für den Empfang von Kommandos einer Infrarot-Fernbedienung mit Interrupts implementiert und es funktioniert problemlos. Daher denke ich, dass das für die meisten Anwendungen keine Einschränkung darstellt und freue mich lieber über die gute Handhabung.

Garbage Collection
Tatsächlich gibt es auch einen Garbage Collector im .Net Micro Framework. Dieser wird in regelmäßigen Abständen angestoßen. Bei zeitkritischen Anwendungen kann es daher zu Problemen kommen, wenn zu einem ungünstigen Zeitpunkt der GC anfängt aufzuräumen und somit der eigentliche Programmablauf warten muss. Einfach mal im Hinterkopf behalten!

Multi Threading
Alle 20 ms wird der Thread gewechselt. So einfach ist das. 😉

Visual Studio
Weniger eine direkte Eigenschaft vom Micro Framework ist die Tatsache Visual Studio als IDE nutzen zu können. Gerade mit C# ist das eine königliche Entwicklungsumgebung. Top Refactoring, IntelliSense…

Zusammenfassung

Das .Net Micro Framework bietet eine tolle Möglichkeit, Anwendungen in C# für einen Microcontroller zu entwickeln. Die genannten Einschränkungen sind für fast alle Anwendungen nicht relevant und alles was sinnvoll ist, lässt sich in der gewohnter Entwicklungsumgebung umsetzen. Das kommt auch der Einarbeitungszeit und der Entwicklungsgeschwindigkeit zugute.


Zurück zum NetMf-Tutorial-Index

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert