Nach dem ganzen Vorgeplänkel soll es nun mit dem Beagleboard wirklich ernst werden. Das heißt ich will meine eigenen Programme compilen und vor allem testen, wie Multimedia-Software vom DSP des OMAP-Prozessors profitiert. Davor liegt allerdings noch eine kleine aber langwierige Hürde, nämlich das Setup der Entwicklungsumgebung.
Wer die Angstrom-Distribution verwendet, muss dazu Openembedded installieren, eine Umgebung, die mit dem Build-Tool Bitbake auf einem Host-Computer (normalerweise ein PC) für nahezu beliebige Embedded-Targets cross-compilen kann. Bitbake ist in den Repositories vieler Distributionen vorhanden, allerdings hatte ich ein Problem mit dem Tool in Ubuntu 9.10 ,,Karmic Koala“, sodass ich es stattdessen von Hand installiert habe. Dazu genügt es, das Paket herunterzuladen, es zu entpacken und dann als Administrator »python setup.py install« auszuführen.
Die Openembedded-Umgebung checkt man am besten direkt aus dem Git-Repository aus, zum Beispiel in ein Unterverzeichnis »OE« im Home-Directory:
cd mkdir OE cd OE git clone git://git.openembedded.org/openembedded.git openembedded
Nun fehlt noch die Konfigurationsdatei, die festlegt, für welches Target-System Angstrom übersetzt werden soll. Am einfachsten kopiert man die Beispieldatei an den dafür vorgesehenen Ort und editiert sie:
mkdir -p build/conf cp openembedded/conf/local.conf.sample build/conf/local.conf
In der Datei selbst habe ich die folgenden Variablen geändert:
MACHINE = "beagleboard" BBFILES := "/home/oliver/OE/openembedded/recipes/*/*.bb" DISTRO = "angstrom-2008.1" TMPDIR = /home/oliver/OE/tmp
Die letzte Zeile der Datei, die mit »REMOVE_THIS_LINE« beginnt, muss entfernt werden, sonst schlägt der Build-Prozess fehl.
Auf der Anleitungsseite zu Openembedded und Angstrom findet sich ein Link zu einem kleinen File namens »source-me.txt«, das wichtige Umgebungsvariablen für den Build-Prozess setzt. In dieser Datei habe ich nur die erste Zeile so geändert, dass sie auf meinen Openembedded-Tree verweist.
export OETREE=/home/oliver/OE
Sind alle Voraussetzungen erfüllt, kann nun mit »bitbake base-image« die Übersetzung starten. Fehlen noch Komponenten, beschwert sich Bitbake beim Anwender. Zum Beispiel musste ich die Variable »/proc/sys/vm/mmap_min_addr« setzen und ein paar Utilities auf dem Host-System nachinstallieren. Die letzte Anforderung, »makeinfo« zu installieren, konnte ich auf Ubuntu mit dem Paket »texinfo« erfüllen.
Wer nicht über den neuesten Computer verfügt, braucht nun etwas Geduld. Auf meinem Homecomputer mit Athlon 2800+ und 1 GByte RAM dauerte die Übersetzung mit Schlafpausen mehrere Tage. Es empfiehlt sich in jedem Fall, die Python-Extension Psyco zu installieren, die den Vorgang zumindest geringfügig beschleunigt.
UPDATE: Etwas Zeit spart es auch, in der local.conf (s.o.) die erzeugten Locale-Dateien auf die wirklich gewünschen zu begrenzen, zum Beispiel:
GLIBC_GENERATE_LOCALES = "en_US.UTF-8 en_GB.UTF-8 de_DE.UTF-8"





