Die CPU des Quark ist ein mit maximal 400MHz getakteter 486-Prozessor. Auf dem Chip befinden sich ausserdem 512 kB RAM. Auf dem Quark läuft ein Linux-System, zu dessen Aufgaben es auch gehört, einen Atmel-Microcontroller zu emulieren, wie er auf anderen Arduino-Boards verbaut ist.
Funktionen des Linux-Systems können über API-Funktionen in Arduino-Sketches genutzt werden.
Viele Shields, die man an Arduino-Baords anschließen kann, sollten auch beim Galileo-Board genutzt werden können. Das Board enthält bereits Mico-USB-Anschlüsse, ein Ethernet-Adapter, einen SD-Karten-Schacht und weitere Peripherie. Intel Galileo wurde detailliert beschrieben, in diesem Betrag geht es um Eindrücke, die ich bei der Inbetriebnahme gesammelt habe.
Alles paletti
Ausgangspunkt für die Arbeit mit dem Galileo-Board ist der zugehörige der Getting Started Guide von Intel. Wenn man sich daran orientiert, verläuft die Inbetriebnahme reibungslos. Das Board muss über das mitgelieferte Netzteil in Betrieb genommen werden, es wird ausdrücklich davor gewarnt, eine USB-Verbindung zum Host herzustellen, wenn das Netzteil nicht verbunden ist. Dies ist für Arduino-Bastler etwas ungewohnt und soll sich auch noch als lästig erweisen.1. Ich verwende den bekannten Blink Beispiel-Sketch für einen ersten Test: Die Übertragung zum Galileo funktioniert und die eingebaute LED blinkt wie erwartet im Sekundentakt. Im unteren Teil der IDE sieht man bei der Überteagung die Meldung
starting download script
#!/bin/sh
Args to shell:
Der Prozess verläuft also offensichtlich anders, als man es von Arduinos gewohnt ist: Hier lädt das Linux-System auf dem Board den Sketch vom Host herunter.
2. Da ich noch nie mit einem Ethernet-Shield für den Arduino gearbeitet habe, will ich natürlich wissen, ob man die bestehenden Bibliotheken - wie in Aussicht gestellt - nutzen kann. Tatsächlich: Der Beispiel-Sketch 'WebClient', der mit der Arduino-IDE ausgeliefert wird, funktioniert auf Anhieb. Man muss nur die MAC-Adresse des Ethernet-Adapters eintragen, die man aber sofort auf dem Adapter findet.
Die Flitterwochen sind vorbei
Als nächstes will ich den SD-Karten-Schacht in Betrieb nehmen. Dazu versehe ich eine Micro-SD-Karte mit einem FAT-Dateisystem und lade den ReadWrite-Sketch, der zwar nicht zu den Beispielen der IDE gehört, aber eines der Standardbeispiele für die SD-Bibliothek ist.Hier gibt es die ersten Show-Stopper:
1. Da ich die Karte nicht im laufenden Betreib einstecken will, muss ich das Board ausschalten und dabei darauf achten achten, dass es nicht ausschließlich über USB mit Strom versorgt wird. Also: USB-Kabel abziehen, Netzteil abziehen, Karte einsetzen, Netzteil und dann das USB-Kabel anschließen. Das ist für sich genommen schon lästig. Dann dauert es aber (zumindest unter Mac OS) noch gefühlte Minuten, bis die IDE die serielle Schnittstelle erkennt.
2. Während der Übersetzung erhalte ich eine Fehlermeldung:
Arduino: 1.5.3 (Mac OS X), Board: "Intel® Galileo"
In file included from sketch_feb12b.ino:1:0:
/Applications/Arduino_Intel.app/Contents/Resources/Java/hardware/arduino/x86/libraries/SD/SD.h:5:18: fatal error: string: No such file or directory
compilation terminated.
Wenn man sucht, findet man Hinweise darauf, dass es sich um ein bekanntes Problem mit der Toolchain unter Mac OS handelt. Als Workaround wird empfohlen auf dem Host in der Shell in das Verzeichnis
/Applications/Arduino_Intel.app/Contents/Resources/Java
zu wechseln und wie folgt einen Link anzulegen:
ln -s . hardware/tools/x86/i586-poky-linux-uclibc/usr/include/c++/4.2.1
Dabei ist Arduino_Intel der Name, den man selbst der IDE gegeben hat.
3. Der Sketch wird jetzt übersetzt. Als ich aber versuche den Sketch zu übertragen, wird dieser Vorgang nicht mehr beendet. Alle Reset und Reboot-Buttons helfen da nichts; auch nachdem ich den Host komplett neu gestartet habe und es mit einer neuen Installation der IDE versuche, ändert sich daran nichts mehr. Es lässt sich kein Sketch mehr übertragen. Abhilfe schafft hier ein Firmware Update des Boards, wie er im Getting Started Guide bei der Inbetriebnahme empfohlen wird. Ich hatte diesen Punkt zunächst ignoriert.
4. Der Sketch wird jetzt übertragen. Er soll eine Datei erzeugen, Daten schreiben und die geschriebenen Daten lesen. Bei der Ausführung zeigt der serielle Monitor der IDE Fehler an. Offensichtlich kann die Datei weder geschrieben noch gelesen werden. Auf der Seite der Intel Community findet man den Hinweis, dass es sich hier um einen Bug in der Firmware des Boards handelt: Sketches können mit der SD-Bibliothek auf der SD-Karte keine Dateien anlegen. Es gibt mehrere Möglchkeiten, das Problem zu umgehen. Da mir nicht nach weiteren Abenteuern war, habe ich manuell eine Datei auf der Karte angelegt.
Nachdem diese letzte Hürde gelöst war, ist der Sketch dann fehlerfrei durchgelaufen.
Fazit
Diese Erfahrungen führen zu den ersten vorsichtigen Einschätzungen.
Es ist sicher interessant und - in Abhängigkeit vom Anwendungsfall - nützlich zusätzlich zur Arduino-Welt auch das Liunux-Universum beim Physical Computing zur Verfügung zu haben. Ich werde das auf jeden Fall weiter evaluieren. Mein Begeisterung wurde wieder gedämpft, als ich gelesen habe, wie langsam das Linux-System Microcontrollers emuliert. Der Echzeitfähgikeit hift das sicher nicht. Ob sich das in der Praxis bemerkbar macht, wird sich noch zeigen. In jedem Fall ist die Vorgehensweise von Intel ambitioniert und man kann Nachsicht mit der einen oder anderen Panne haben.
Von meinen drei Stichproben liefen zwei geschmeidig, der Test mit der SD-Karte hat nicht wirklich Spaß gemacht. Sowohl auf dem Host, als auch auf dem Target muss die Software noch nachgebessert werden. Das wundert aber in diesem Entwicklungssadium des Produktes nicht. Dafür, dass ich die Firmware nicht wie empfohlen aktualisiert habe, kann Intel nichts. Beruhigt hat mich aber, dass ich zu allen Problemen bei der Intel Community passende Workarounds gefunden habe, die mich weiter gebracht haben.
Weitere Beiträge findet man auf Golem oder in der c't 23/13. Demnächst erscheint dazu ein Buch.


Keine Kommentare:
Kommentar veröffentlichen