Ich habe vor einiger Zeit mal mit einem „Netduino“ herumgespielt. Für ein embedded System ist das eine ungewöhnlich komfortable Sache.Es handelt sich dabei um ein ARM System mit dem Anspruch, ähnlich einfach wie ein Arduino zu sein.
Auf des Desktop bin ich kein großer Freund vom Visual Studio. Im ebedded Bereich ist das aber mit weitem Abstand die komfortabelste und problemloseste Umgebung die ich kenne. Software installieren, Netduino an den USB Port anschließen und los geht’s. Inclusive eines komfortablen deployments und debuggers.
Mich persönlich hat jedoch der Overhead der .Net Umgebung gestört. Zu diesem Zeitpunkt gab es noch keinen JIT Compiler für die ebedded Variante (hat sich das geändert?). Ein einfaches Port-Bit setzen hat etwa 5,5 Mikrosekunden gedauert. Zugegeben, es waren ausgesprochen komfortable logische Port-Pins mit vielen Möglichkeiten. Aber es war einfach zu langsam. Über 350 Takte nur um einen Port zu setzen, das ist als würde man seine Pommes Frittes mit dem Lastwagen abholen. Damit konnte ich noch nicht mal einen einfachen digitalen Dreh-Encoder ohne Schrittverluste abfragen. Deshalb habe ich dieses schöne Projekt nicht weiter verfolgt.
Vor einem Jahr bin ich auf die mbed Umgebung gestoßen. Sie erlaubt ebenfalls einen extrem einfachen Einstieg. Einfach ein online Konto einrichten und die einfache aber ausreichende Entwicklungsumgebung läuft im Browser. Der Compile Button löst einen Browser Download der Binärdatei aus, welche man direkt in dem Controller speichern kann, der sich über den USB Port als Massenspeicher anmeldet.
http://developer.mbed.org/platforms/ST-Nucleo-F401RE/
Der Source Code wird in C++ erstellt – kein Problem, ich habe über 20 Jahre mit C und C++ gearbeitet. Als routinemäßiger Java Mann lag mir das C# vom Netduino aber eher. Die Hoffnung war, dass der C++ Compiler besseren Code erzeugt.
Also einfach mal ein kleines Programm geschrieben – Port auf 1 gesetzt, zurück auf 0 und das ganze in eine Schleife gepackt und das Oszilloskop dran gehangen. Hier komme ich nun auf Zeiten von 260 Nanosekunden zum setzen und zurücksetzen. Die Schleife selber erzeugt übrigens keine messbare Verzögerung.
Ein kurzer Blick in das Datenblatt – der F401RE hat einen Takt von 84 MHz – dann sind das ca. 22 Takte. Das ist ein sehr viel besserer Wert. Ein schöner Nebeneffekt: ein Board kostet gerade mal 8 Euro. Dafür bekommt man einen 32 Bit ARM Prozessor mit 84 MHz Takt, ordentlich RAM und Flash Speicher sowie einen 12 Bit A/D Wandler.
Der Nachteil: der einfache Einstieg über den Browser ist gleichzeitig die größte Beschränkung für die Entwicklung. Debugging ist nicht. Ich habe verschiedene Entwicklungsumgebungen ausprobiert und habe für Debugging-Zwecke eine freie Version von Keil behalten. Diese ist aber in keiner Weise mit der Visual Studio Entwicklung vergleichbar. Schade – aber man kann nicht alles haben.
Jetzt habe ich schon mal eine schöne Lösung, ich muss mir nur noch ein Problem dafür suchen…