Auswahl
Projekte
Impressum
lang:en   lang:de

 
 
 
hardware staff... PTXdist ist eigentlich ein Entwickungsumgebung für Linux basierte embedded Systeme. D.h. es erstellt auf einem Host-System ein komplettes, lauffähiges Betriebssystem plus Root-Filesystem mit allen gewünschten Applikationen.
Unter der Haube ist es aber hauptsächlich eine Entwicklungsumgebung mit der man automatisiert Software aus ihren Quellen erstellen lassen kann.
Im Vordergrund steht hier immer die Reproduzierbarkeit. Also genau das richtige, um meine Microcontroller-Projekte für jedermann nachvollziehbar mit ihrer Firmware zu versorgen.

Vorbereitung

Meine Software liegt im Quellcode vor. Um diese in den Zustand zu übersetzen, wie sie der Prozessor braucht, benötigt man eine Toolchain, also einen Compiler, Assembler und Linker. Darüber hinaus wird auch noch eine Basisbibliothek benötigt, um beispielsweise auf die internen Geräte des Prozessors zugreifen zu können.
Es gibt diverse Möglichkeiten, eine solche Toolchain zu bekommen. Evtl. kann man sie einfach von irgendwoher binär beziehen und installieren. Oder man baut sie sich selber. Und diesen Weg werde ich hier für Linux/GNU als Entwicklungsumgebung beschreiben.
Aber keine Angst, es steht jetzt keine Kommando-Orgie ins Haus, bei der man nach und nach die einzelnen Teile konfiguriert, baut und installiert. Auch wenn dies seinen Reiz hat, wenn man wissen will wie es geht.

PTXdist

Ich gehe hier einen etwas anderen Weg und benutze eine Umgebung, die das Bauen für mich übernimmt. Eigentlich ist das eine Umgebung, die für Linux-Zielsysteme deren Root-Filesysteme aus den Quellen baut. Aber all diese Dinge hängen von einer Cross-Toolchain ab. Und ob diese Cross-Toolchain nun für ARM, PowerPC oder Atmega ausführbaren Code erzeugt, spielt keine Rolle. Also lassen wir uns damit eine Atmega Toolchain bauen.

Woher und wie installieren?

PTXdist bekommt man recht einfach auf seinen Linux-Rechner (sorry, Windows-Anhänger sind derzeit noch außen vor): Einfach dieser Anleitung folgen.
Oder kurz zusammen gefasst:
~$ wget http://www.pengutronix.de/software/ptxdist/download/v1.99/ptxdist-1.99.10.tgz
~$ wget http://www.pengutronix.de/software/ptxdist/download/v1.99/ptxdist-1.99.10-patches.tgz
~$ tar xf ptxdist-1.99.10.tgz
~$ tar xf ptxdist-1.99.10-patches.tgz
~$ cd ptxdist-1.99.10
~/cd ptxdist-1.99.10$ ./configure
~/cd ptxdist-1.99.10$ make
~/cd ptxdist-1.99.10$ sudo make install

AVR Toolchain

Das mit der Toolchain ist auch nicht so schwer, denn das macht ebenfalls PTXdist. PTXdist arbeitet grundsätzlich auf Projektbasis. Also benötigen wir nun ein Toolchain-Projekt. Und dieses Projekt heißt OSELAS.Toolchain. Dafür folgt man dieser Anleitung. Dort baut man anstelle der Demonstrations-Toolchain die

avr/avr_gcc-4.3.2_libc-1.6.2_binutils-2.19.ptxconfig
Oder kurz zusammen gefaßt:

~$ wget http://www.pengutronix.de/oselas/toolchain/download/OSELAS.Toolchain-1.99.2.tar.bz2
~$ tar xf OSELAS.Toolchain-1.99.2.tar.bz2
~$ cd OSELAS.Toolchain-1.99.2
~/OSELAS.Toolchain-1.99.2$ ptxdist select ptxconfigs/avr/avr_gcc-4.3.2_libc-1.6.2_binutils-2.19.ptxconfig
~/OSELAS.Toolchain-1.99.2$ ptxdist go
Jetzt braucht man nur noch etwas Geduld, denn je nach Rechenleistung kann das 20 Minuten bis einige Stunden dauern. Wer sich auskennt, kann eine solche Toolchain vielleicht auch passend binär zu seiner Distribution direkt installieren.
Die fertige Toolchain wird nach /opt/OSELAS.Toolchain-1.99.2 installiert. Das lokale Verzeichnis kann danach wieder entfert werden.
~/OSELAS.Toolchain-1.99.2$ cd ..
~$ rm -rf OSELAS.Toolchain-1.99.2
Zu beachten ist hier: Fast alle PTXdist-Projekte enthalten nicht die Quellen, die benötigt werden, um es zu bauen. Stattdessen lädt PTXdist diese aus dem Internet nach, wenn die entsprechenden Quell-Archive noch nicht auf dem Entwicklungsrechner vorliegen. Es wird also ein Internetzugang benötigt und das Programm wget.
Weiterhin kann es passieren, daß vereinzelt Pakete im Netz nicht mehr an ihrer ursprünglichen Adresse zu finden sind. PTXdist erzeugt dann eine Fehlermeldung und bricht ab. Eine Lösung für dieses Problem ist, das Paket selber im Internet zu suchen und von einen anderen Ort laden. Hat man PTXdist so eingestellt, daß es einen globalen Ordner für die Quellarchive verwendet (siehe ptxdist setup), kann man das manuell geladene Archiv dort ablegen und PTXdist wird es dann verwenden und nicht erneut versuchen es vom alten Ort zu laden.
Sollte ein Paket nicht mehr verfügbar sein, bitte ich um einen Hinweis. Dann kann ich entweder die Internetadresse korrigieren oder das Paket auf meiner Seite bereitstellen.

Hinweis: Getestet habe ich die AVR-Systeme jeweils genau mit dieser von PTXdist gebauten Toolchain. Ob das Ergebnis mit einer anderen Toolchain ebenfalls brauchbar ist, kann ich nicht beurteilen, nicht testen und somit auch nicht kommentieren.