Elektor Internet Radio

Entwicklungsumgebung unter Linux

Voraussetzungen

Einige essentielle Werkzeuge sind erforderlich um die Binaries zu erstellen. Folgende Befehle können unter Debian / Ubuntu benutzt werden, um sicherzustellen, dass diese Werkzeuge verfügbar sind:

$ sudo apt-get install build-essential
$ sudo apt-get install automake
$ sudo apt-get install autoconf

wxWidgets installieren

Aktuell gibt es mit der GUI Oberfläche des Nut/OS Configurators noch Probleme unter GTK. Um diesen aus dem Weg zu gehen, werden wir in dieser Anleitung die Kommandozeilen-Version verwenden. Damit ist die Installation von wxWidgets nicht zwingend notwendig, wird aber dennoch empfohlen, um ein weiteres GUI Werkzeug, den Nut/OS Discoverer zu erstellen. Benötigt wird mindestens die Version 2.8.

Verwenden Sie folgenden Befehl um wxWidgets zu installieren:

$ sudo apt-get install libwxgtk2.8-0 libwxgtk2.8-dev wx2.8-headers wx-common

Lua installieren

Beachten Sie, dass wir die Version 5.0 verwenden. Ob spätere Versionen funktionieren, wurde noch nicht überprüft.

Der folgende Befehl installiert die notwendigen Pakete:

$ sudo apt-get install lua50 liblua50 liblua50-dev liblualib50 liblualib50-dev

Doxygen und GraphViz installieren

Diese Pakete werden nur zum Erstellen der API Dokumentation benötigt und können auch weggelassen werden. Zur Installation dient folgender Befehl:

$ apt-get install doxygen doxygen-doc graphviz

GNU arm-elf Toolchain installieren

Leider stehen aktuelle Versionen nur selten als Binärpakete zur Verfügung. Die folgende Anleitung ist sehr knapp gehalten und mag nicht unbedingt zum Erfolg führen. Im Web werden Sie sicher genauere Beschreibungen oder gar fertige Installationen finden.

Erstellen Sie am besten zuerst ein neues Verzeichnis und wechseln Sie in dieses:

$ mkdir toolchain
$ cd toolchain

Nun holen Sie die benötigten Source Packages. Sie finden diese aber auch auf der CD im Verzeichnis tools/unix.

$ wget ftp://gcc.gnu.org/pub/binutils/releases/binutils-2.18.tar.bz2
$ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.2.2/gcc-core-4.2.2.tar.bz2
$ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.2.2/gcc-g++-4.2.2.tar.bz2
$ wget ftp://sources.redhat.com/pub/newlib/newlib-1.16.0.tar.gz

Entpacken Sie die Pakete mit:

$ tar -xjf binutils-2.18.tar.bz2
$ tar -xjf gcc-core-4.2.2.tar.bz2
$ tar -xjf gcc-g++-4.2.2.tar.bz2
$ tar -xzf newlib-1.16.0.tar.gz

Nun setzen wir zwei nützliche Umgebungsvariable und erstellen im Voraus ein bin/ Verzeichnis, welches wir zu der Variable PATH hinzufügen:

$ export target=arm-elf
$ export prefix=/usr/local/$target
$ sudo mkdir -p $prefix/bin
$ export PATH=$prefix/bin:$PATH

Zuerst werden die binutils installiert:

$ cd binutils-2.18
$ mkdir build-$target
$ cd build-$target/
$ ../configure --target=$target --prefix=$prefix --enable-interwork --enable-multilib \
    --disable-nls --disable-shared --disable-threads --with-gcc --with-gnu-as --with-gnu-ld
$ make
$ sudo make install
$ cd ../..

Als nächstes erstellen wir einen sog. Bootstrap Compiler:

$ cd gcc-4.2.2
$ mkdir build-$target
$ cd build-$target/
$ sudo ../configure --target=$target --prefix=$prefix \
    --disable-nls --disable-shared --disable-threads \
    --with-gcc --with-gnu-ld --with-gnu-as --with-dwarf2 \
    --enable-languages=c,c++ --enable-interwork \
    --enable-multilib --with-newlib \
    --with-headers=../../newlib-1.16.0/newlib/libc/include \
    --disable-libssp --disable-libstdcxx-pch \
    --disable-libmudflap --disable-libgomp -v
$ mkdir -p libiberty libcpp fixincludes    
$ make all-gcc
$ sudo make install-gcc
$ cd ../..

Mit diesem Compiler können wir die Laufzeitbibliothek erstellen:

$ cd newlib-1.16.0
$ mkdir build-$target
$ cd build-$target/
$ ../configure --target=$target --prefix=$prefix --enable-interwork --enable-multilib
$ make
$ sudo make install
$ cd ../..

In einem letzten Schritt erstellen wir den endgültigen Cross-Compiler:

$ cd gcc-4.2.2/build-$target
$ make
$ sudo make install
$ cd ../..

Nut/OS installieren

Das Nut/OS Source Code Package befindet sich auf dieser CD im Verzeichnis firmware

»ethernut-4.5.2.tar.bz2

Erstellen Sie am einfachsten in Ihrem Homeverzeichnis ein neues Directory ethernut in das Sie das Paket kopieren, um es dort zu entpacken, zu konfigurieren und zu installieren. Unbedingt empfehlenswert ist es, einen symbolischen Link in das Quellcode Verzeichnis zu verwenden.

$ tar xjf ethernut-4.5.2.tar.bz2
$ ln -s ethernut-4.5.2 nut
$ cd nut/
$ ./configure
$ make
$ sudo make install
$ cd ..

Nut/OS konfigurieren

Falls Sie die GUI Version des Nut/OS Configurators erstellt haben, probieren Sie diese aus, indem Sie den Anweisungen der

»Installation unter Windows

folgen. Wie bereits erwähnt, gibt es mit dieser Oberfläche unter Linux GTK noch Probleme und wir werden hier die Kommandozeilen-Version verwenden.

$ nutconfigure -bnutbld -cnut/conf/eir10b.conf -lnutbld/lib \
  -marm-gcc create-buildtree

Nut/OS Libraries erstellen

Wechseln Sie ins Build Verzeichnis und erstellen Sie die Libraries mit:

$ cd nutbld/
$ make clean
$ make install
$ cd ..

Webradio Quellcode installieren

Sie können nun mit dem Nut/OS Configurator ein Sample Directory anlegen:

$ nutconfigure -anutapp -bnutbld -cnut/conf/eir10b.conf \
  -lnutbld/lib -marm-gcc create-apptree
$ echo "# Elektor Internet Radio" >nutapp/UserConf.mk  

Entpacken Sie dann in dem neu erstellten Verzeichnis nutapp den Quellcode des Webradio Programms.

»webradio-1.2.0.zip

Webradio Firmware erstellen

Wechseln Sie in das Verzeichnis nutapp/webradio und geben Sie die beiden folgenden Befehle ein:

> make clean
> make install

Damit wird die Binärdatei webradio.bin erstellt und nach nut/bin/arm7tdmi innerhalb des Nut/OS Installationsverzeichnisses kopiert. Diese beiden Befehle müssen Sie nach jeder Änderung des Quellcodes wiederholen.

Copyright 2008 egnite GmbH