Aus Linux-Magazin 08/2006

Software-Entwicklung für Motorolas Linux-Smartphones

Linux-Smartphones wie das Motorola A780 lassen sich im Gegensatz zu Geräten mit proprietären Systemen fast beliebig anpassen und erweitern. Mit den Entwicklungswerzeugen des Open-EZX-Projekts, die für eine ganze Gerätefamilie taugen, kann jeder sein eigenes Betriebssystem zusammenmixen.

Handys und Smartphones mit Linux sind leider die Ausnahme, auch wenn das freie Betriebssystem im Embedded-Bereich allgemein längst keine Seltenheit mehr ist. Motorola setzt bei der EZX-Smartphone-Familie jedoch auf den Pinguin. Das in [1] vorgestellte und bedauerlicherweise kaum noch erhältliche Modell A780 war zwar das einzige in Deutschland verkaufte Gerät dieser Familie, in Amerika und Asien gibt es jedoch eine Hand voll Typen und mindestens ein weiteres Smartphone befindet sich in der Entwicklung.

Hersteller Motorola stellt den Linux-Entwicklern jedoch keine Compiler oder Werkzeuge zur Verfügung – diese Aufgabe hat inzwischen die Community rund um das Open-EZX-Projekt [2] übernommen und Compiler, Bibliotheken und andere Entwicklungswerkzeuge zusammengestellt.

Über Kreuz gelegt

Die Smartphones aus der EZX-Reihe verwenden einen Arm-Prozessor, dessen Befehlssatz sich von den sonst in PCs üblichen x86-kompatiblen CPUs unterscheidet. Daher müssen alle Programme für die EZX-Smartphones mit einem Crosscompiler für Arm-Prozessoren übersetzt sein. Eine solche Cross Compile Toolchain namens Ezx-crosstools bietet Sam Revitch auf [3] an.

Das Paket umfasst jedoch keine Quellen von Compiler, Bibliotheken, Tools und Kernel, sondern lediglich die für die EZX-Plattform nötigen Patches sowie das »build.sh«-Skript. Das Skript lädt Quellpakete aus dem Internet, patcht und übersetzt sie. Die Umgebungsvariable »RESULT_TOP« im Build-Skript entscheidet darüber, wo es im Dateisystem die fertige Toolchain ablegt. Dieses Verzeichnis sollte später im Suchpfad der Shell liegen.

Zum Schluss versucht das Build-Skript noch das Testprogramm »hello.c« zu übersetzen. Das funktioniert in der Version 0.5 jedoch nicht, die Toolchain ist aber trotzdem einsatzbereit. Da dieses Problem auch beim Übersetzen von einigen anderen Programmen wie etwa »gpsd« auftritt, hat Antonio Ospite unter [4] ein Patch veröffentlicht, um das Problem zu beseitigen.

Entwicklungsumgebung

Neben den Crosscompiler-Tools bietet Sam Revitch auf seiner Homepage [5] auch das EZX-Development-Kit Ezx-devkit an. Es handelt sich größtenteils um mittels Reverse Engineering ausgetüftelte Headerdateien der Qtopia- und EZX-Bibliotheken. Diese Arbeit war nötig, da Motorola kein Linux-SDK für die Qtopia-basierte und um einige Spezialfunktionen erweiterte Oberfläche zur Verfügung stellt. Dazu ist Motorola jedoch auch nicht verpflichtet, da der Hersteller Qtopia lizenziert hat.

Das EZX-Development-Kit sorgt dafür, dass sich herkömmliche Linux-Programme nahtlos in die grafische Oberfläche der Smartphones einfügen. Beispiele dafür sind das im Development-Kit enthaltene Programm »USBMode« sowie das Beispielprogramm von [6], das den Aufbau und die Verwendung einzelner GUI-Elemente veranschaulicht. Die mit den GUI-Elementen verknüpften »ioctl()«-Aufrufe zeigen zudem die Kommunikation mit dem Betriebssystem, etwa zum Steuern der Tastaturbeleuchtung. Weitere Programme und Quellen zum Selbststudium gibt es im Motorola-Fanforum [7].

Software nachinstallieren

Für die Installation zusätzlicher Programme ist beim Motorola A780 der Dateimanager zuständig, als Paketformat verwendet der Hersteller MPKG. Die Bedienung ist einfach, mit einem Klick auf das MPKG-Paket beginnt der Dateimanager automatisch mit der Installation. Hinter dem MPKG-Paketformat verbirgt sich ein gepacktes Tar-Archiv, das nur umbenannt ist und eine spezielle Verzeichnis- und Dateistruktur enthält. Weitere Informationen zu Motorolas Paketformat liefert [8].

Alessandro Barreiros Maurici portierte die »libSDL« auf die EZX-Plattform, womit nun Spiele wie “Doom”, “Quake”, “Scumm-VM” und “Supertux” auf dem Linux-Smartphone eine neue Heimat gefunden haben. Allerdings kämpfen die Entwickler noch mit Problemen, etwa mit der begrenzten Anzahl an Tasten beim Motorola A780.

Für betagte DOS-Spiele wie “Day of the Tentacle” oder “Maniac Manson” scheint das Motorola A780 jedoch wie geschaffen zu sein, denn die Displaygröße des Smartphone entspricht mit 320 mal 240 Pixeln der damaligen Bildschirmgröße am Computer. Weitere Spiele sind im Motorola-Fanforum veröffentlicht, sie lassen sich jedoch erst nach einer kostenlosen Registrierung herunterladen.

Treibersuche

Ein Ziel des Open-EZX-Projekts ist ein komplett freier Software-Stack. Ein großer Schritt dahin ist ein angepasster Kernel 2.6.16.5, der bereits auf dem A780 bootet, jedoch nicht die gesamte Hardware unterstützt. Derzeit portiert die Community die offenen Treiber des Originalkernels 2.4 auf Kernel 2.6 und sucht Ersatz für Closed-Source-Module. Hier kommt den Entwicklern zugute, dass der Kernel 2.6 einige Chips direkt unterstützt. Beim Originalkernel 2.4 verwendet Motorola eine merkwürdige Mischung aus Kernelmodul und Userspace-Programm für den Betrieb des Bluetooth-Adapters, während mit Kernel 2.6 die Bluez-Treiber die Aufgabe komplett übernehmen. Für die Kamera und den Soundchip hingegen gibt es noch keine freien Treiber.

Abbildung 1: Das Beispielprogramm von [6] zeigt die Verwendung grafischer Elemente und ihre Verknüpfung mit Funktionen des Betriebssystems, etwa zum Ein- und Ausschalten der Tastaturbeleuchtung.

Abbildung 1: Das Beispielprogramm von [6] zeigt die Verwendung grafischer Elemente und ihre Verknüpfung mit Funktionen des Betriebssystems, etwa zum Ein- und Ausschalten der Tastaturbeleuchtung.

Eigener Kernel

Einer der Vorteile des selbst übersetzten Kernels 2.6 ist, dass sich zum Beispiel der USB-Port in den Host-Modus oder zu einer seriellen Schnittstelle umschalten lässt. Zudem erlauben es die Cryptofunktionen des Kernels, eine verschlüsselte Partition für private Daten, Termine, Adressen und Telefonnummern zu betreiben. Die nötigen Patches wollen die Open-EZX-Entwickler später in den Standardkernel einbringen.

Beim Test neuer Kernel stoßen die Entwickler jedoch an die Grenzen des von Motorola verwendeten Bootloaders, einer angepassten Version von »blob«. Hier fehlt die Möglichkeit, einen selbst gebauten Kernel oder ein komplettes System von der Micro-SD-Karte zu starten, zudem gibt es keine Auswahlmöglichkeit für alternative Kernel.

Ist das Smartphone jedoch per Kabel mit dem PC verbunden und läuft dort das Programm »boot_usb«, bootet das A780 über die USB-Schnittstelle. Für einen mobilen Testbetrieb fernab des Entwicklungsrechners eignet sich die USB-Bootmethode nicht, dazu benötigt das Smartphone die Firmware im internen Flash.

Abbildung 2: Durch die Portierung der »libSDL« taugt das Motorola A780 sogar als Spielekonsole. Die Bedienung von "Scumm-VM" ist dank des großen Displays mit Touchscreen sehr angenehm.

Abbildung 2: Durch die Portierung der »libSDL« taugt das Motorola A780 sogar als Spielekonsole. Die Bedienung von “Scumm-VM” ist dank des großen Displays mit Touchscreen sehr angenehm.

Zögerliche Freigabe

Wie viele andere Unternehmen zuvor ist es auch Motorola bei der Einführung des A780 nicht gelungen, die Vermarktung des Linux-Smartphone und die GPL unter einen Hut zu bekommen. Erst auf Druck der Community gab die Firma nach und nach die Software frei. Inzwischen hat sich Motorolas Verhalten geändert, mit [9] gibt es sogar eine eigene Open-Source-Homepage des Herstellers, auf der neben diversen Programmen und Bibliotheken auch die Kernelquellen für die aktuellen Modelle sowie für ein zukünftiges veröffentlicht sind.

Ob und wann Motorola weitere Smartphones in Deutschland anbietet, die auf der EZX-Plattform beruhen, ist (wohl sogar dem Hersteller) unbekannt, die Veröffentlichung von Quellen für ein erst geplantes Geräts lassen aber hoffen, dass Linux-Smartphones auch bei Motorola eine Zukunft haben. Mit dem EZX-Development-Kit sind die Entwickler schon heute dafür gerüstet. (mdö)

Infos

[1] Stefan Schmidt, Mirko Dölle, “Große Klappe”: Linux-Magazin 06/06, S.82

[2] Open EZX : [http://www.openezx.org]

[3] Crosscompiler-Toolchain: [http://lsb.blogdns.net/ezx-crosstool/]

[4] Toolchain-Patch: [http://people.openezx.org/stefan/patches/update_to_crosstool-0.42_and_PATH_MAX_fix.diff]

[5] EZX-Development-Kit: [http://lsb.blogdns.net/ezx-devkit/]

[6] Beispiel zur GUI-Programmierung: [https://www.linux-magazin.de/Service/Listings/2006/08/openezx]

[7] Motorola-Fanforum: [http://www.motorolafans.com]

[8] MPKG-Paketformat: [http://wiki.openezx.org/MPKG]

[9] Motorolas Open-Source-Seite: [https://opensource.motorola.com]

Der Autor

Der Autor studiert Informatik an der Technischen Universität Braunschweig. Er ist seit Beginn des Open-EZX-Projekts dort als Entwickler tätig.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 2 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben