Wer hat noch keines? Moderne Smartphones sind aus unserem Alltag nicht mehr wegzudenken, auch statten viele Firmen ihre Mitarbeiter mit diesen Geräten aus. Für die Handy-Hersteller ist es Fluch und Segen: wer den Smartphone-Zug verpasst hat, tut sich heute schwer, wie Nokia belegt. Neue Player haben dieses Feld besetzt und teilen die Filetstücke unter sich auf: Auf der einen Seite Apple mit dem proprietären iOS und auf der anderen Seite das Linux-basierende Android von Google. Obwohl die Wachstumsraten von Apple beeindruckend sind, hat Android klar die Nase vorn. Je nach Marktforschungsinstitut liegt der Marktanteil mittlerweile bei 50 bis 60 %.

Dank seiner Offenheit kann jeder Entwickler auf Android setzen. Das weckt natürlich auch Begehrlichkeiten in der Industrie. Hat man sich in den vergangenen Jahren mit nicht besonders schönen oder gar umständlichen Betriebssystemen und Oberflächen auseinander setzen müssen, ist nun ein System in Reichweite, das eine schnelle Umsetzung von ansprechenden Benutzeroberflächen verspricht. Als Hardware-Plattformen kommen dabei schon bekannte ARM-Architekturen in Frage, die sich seit langem im industriellen Umfeld bewährt haben.

Bild 1: Aufbau von Android aus der Sicht des Entwicklers.

Bild 1: Aufbau von Android aus der Sicht des Entwicklers.Atlantik Elektronik

Unter der Haube

Im Prinzip ist Android ein Software-Stack für mobile Endgeräte, der ein Betriebssystem, Middleware und die wichtigsten Applikationen enthält (Bild 1). Android basiert auf einem speziell angepassten Linux-Kernel 2.6, der grundsätzliche Dienste wie Speicher- und Prozessverwaltung, Netzwerk-Stack und Gerätetreiber bereitstellt. Android wird von der Open Handset Alliance entwickelt und spezifiziert. Wichtigstes Mitglied der Open Handset Alliance ist Google.

Auf einen Blick

Freundlicher Androide: Obwohl Google das Android-System für Handys konzipiert hat, eignet es sich auch für industrielle Applikationen. Mit den passenden Treibern für Ethernet und diverse serielle Schnittstellen entstehen so ansehnliche Touch-Steuerkonsolen.

Wichtigste Bestandteile von Android sind die virtuelle Maschine (VM) Dalvik und die dazugehörenden Android-Java-Klassenbibliotheken (basierend auf Apache Harmony). Während Programme für echte Linux-Systeme meist in C oder C++ geschrieben werden, erstellt man Programme für Android meist in Java. Es ist zwar auch möglich, direkt C-Code für Android zu programmieren, das ist in der Praxis aber nur für geschwindigkeitskritische Programme oder Bibliotheken sinnvoll. Um nativen Code aus der VM heraus aufzurufen, gibt es das Java-Native-Interface (JNI).

Im Gegensatz zur normalen Java-VM kann Dalvik allerdings keinen Java-Bytecode interpretieren, sondern benötigt vorher noch einen Zwischenschritt: das Werkzeug „dx“ (Dalvik Cross-Assembler) erzeugt den notwendigen Dalvik-Bytecode. Für den Einsatz in mobilen Geräten wurde Dalvik auf Geschwindigkeit und kleinen Speicherhunger getrimmt.

Java-Entwicklung

Zur Entwicklung eigener Programme benötigt man neben dem Java-SDK auch das Android-SDK. Beides ist in der Eclipse-basierten Entwicklungsumgebung Digi-ESP von Digi International bereits voll integriert. Zusätzliche Hilfeseiten und Beispielprojekte sorgen für einen schnellen Einstieg in die Android-Programmierung.

Jede Android-Applikation läuft als eigener Linux-User in ihrem eigenen Prozess, in ihrer eigenen Instanz der Dalvik-VM. Aus Performance-Gründen wird aber die VM nicht jedes Mal neu gestartet, sondern von einem Prozess namens Zygote geklont. Das gesamte Konstrukt soll die Sicherheit des Systems erhöhen, da jede Applikation nur auf die Komponenten zugreifen kann, die zu ihr gehören. Zwar können Anwendungen auch auf Gerätedaten wie die Kontakte, SD-Karte oder die Kamera zugreifen, allerdings müssen die Rechte hierfür bereits bei der Installation der Anwendung eingeholt und erteilt werden. Zur Inter-Applikations-Kommunikation hat Android eine angepasste Version von Binder an Board, die sich um diese Belange kümmert.

Der größte Vorteil von Android gegenüber Embedded-Linux, ist die mitgelieferte Grafikfähigkeit. Bislang mussten sich die Programmierer mit Hilfe von GTK+ oder Qt eigene Oberflächen bauen. Dies wird ihnen nun vom Betriebssystem abgenommen. Natürlich muss der Entwickler die grafische Oberfläche der eigenen Anwendung designen, aber auch nicht mehr. Außerdem hilft die vertraute Oberfläche des Betriebssystems den Anwendern bei der Benutzung des Geräts enorm und stärkt gleichzeitig die Marktakzeptanz.

Leistungsstarke Hardware gesucht

Als Betriebssystem ist Android sehr umfangreich und erwartet daher leistungsstarke Hardware. Es gibt zwar Implementierungen auf älteren ARM-Prozessoren mit wenig Speicher – viel Spaß haben die Anwender damit aber nicht.

Bild 2: Herzstück des Moduls ist ein leistungsstarker Controller von Freescale, den Digi um wichtige Schnittstellen auf dem Modul erweitert hat.

Bild 2: Herzstück des Moduls ist ein leistungsstarker Controller von Freescale, den Digi um wichtige Schnittstellen auf dem Modul erweitert hat.Atlantik Elektronik

Die Connect-Core-Plattform Wi-i.MX53 von Digi (Bild 2) basiert auf einem Freescale i.MX53 ARM Cortex-A8-Chip, der mit bis zu 1 GHz getaktet ist. Ihm stehen auf dem Modul bis zu 2 GByte DDR-SDRAM und bis zu 8 GByte NAND-Flash zur Seite. Eine sinnvolle Ausstattung für Android fängt bei 512 MByte an. Eine Besonderheit der Digi-Module ist das integrierte WLAN, das eine sichere, stabile und leistungsfähige drahtlose Netzwerkschnittstelle garantiert. Durch die direkte Anbindung auf dem Modul und die damit verbundene treiberseitige Integration in das Android-Image, ist ein reibungsloses Zusammenspiel zwischen Hard- und Software gewährleistet.

Aber nicht nur der WLAN-Treiber wurde extra angepasst: Da Android von Haus aus auf drahtlose Anwendungen ausgerichtet ist, haben Software-Entwickler von Digi in Spanien für die Ethernet-Schnittstelle einen eigenen Treiber entwickelt. Außerdem werden die GPIOs, die seriellen I2C- und SPI-Schnittstellen sowie bis zu zwei Displays unterstützt. Die auf dem Modul befindliche CAN-Schnittstelle wird im nächsten Release mit eingebunden.

Anwendungsbeispiele

Moderne HMI (Human-Machine-Interface) sind in immer mehr Applikationen präsent: Ob es um die Steuerung schwerer Bau- oder autonomer Landmaschinen geht oder um die Kontrolle einer komplexen Sortieranlage, stets kommen heute entsprechende Informationssysteme zum Einsatz. Aber auch Applikationen wie Passagier-Displays im öffentlichen Nahverkehr oder vermeintlich einfache Anwendungen wie Durchsagen in Zügen werden entsprechend gesteuert und stellen dem Benutzer ein grafisches Display bereit. Dabei kommen auch immer mehr Touch-Displays zum Einsatz, die eine echte Interaktion mit dem System ermöglichen.

Im konkreten Beispiel hat Digi eine Applikation entwickelt, die für den öffentlichen Nahverkehr in Logroño in Spanien ein Passagierinformations-Display sowie ein Kontrollterminal für den Busfahrer in einem Gerät vereint. Die Android-Applikation verfolgt über GPS den genauen Standort des Fahrzeugs, lädt über eine Internetverbindung die entsprechenden Kartendaten für den Busfahrer aus Google Maps und präsentiert den Passagieren neben dem Streckenverlauf auch ortsbezogene Werbung wie Hinweise auf Lokalitäten/Geschäfte in der Nähe der nächsten Haltestelle.

Starthilfe

Mit Digis umfangreichem Komplettpaket aus Hardware und Software kann jeder Industriekunde in kürzester Zeit sein eigenes Android-Gerät entwickeln und auf den Markt bringen. Wer technische Unterstützung oder Schulungen zum Thema braucht, kann sich an die Atlantik Elektronik wenden.