Tag Archives: tinyos

TinyOS-1.x unter Linux (Debian)

Nach meinem ersten naivem Versuch TinyOS unter Gentoo zu installieren musste ich dazulernen. Die vorgefertigten ebuilds unter gentoo haben mir nicht wirklich weiter geholfen.

Da ich schon für meinen Druckertreiber auf rpm-Archive zurückgegriffen habe, gab ich diesmal den Pakten eine Chance. Unter www.tinyos.net/dist-1.1.0 stehen die Archive für TinyOS-1.x zur Verfügung.
Allerdings kamen mit den Archiven auch noch ein paar Probleme einher. Unter gentoo muss man die richtige toolchain für die Entwicklung einsetzen und die Umgebungsvariablen selbst setzen. Mit etwas Glück kann man auch auf den Bestand aus dem CVS zurückgreifen und diesen übersetzen. Da ich hier allerdings nicht so viel probiert habe, belasse ich es bei dieser Aussage und werde nicht weiter in die Richtung gehen,

Der nachfolgende Teil beschreibt wie TinyOS-1.x unter Debian sid bzw. sidux genutzt werden kann. Dazu habe ich die rpm-Archive der aktuellen TinyOS-Version (2.1.1) heruntergeladen (eigentlich reichen hier die tinyos-tools und XXX). Die TinyOS-Archive für die Version 1.x findet man unterhalb von von dist-1.1.0.  Die rpm Dateien werden mit alien in ein brauchbares Format umgewandelt (mit den Skripts) und mit dpkg -i installiert.
Unter snapshots.debian.org findet man die Pakte avr-gcc-XXX, binutils-avr-XXX und avr-libc-XXX. Wenn man diese drei Pakete mit dpkg -i installiert, dann lassen sich die Anwendungen ind /opt/tinyos-1.x bereits kompilieren – allerdings gibt es dann Fehler beim Übersetzen in Assembler-Code.

Deinstalliert man das Paket binutils-avr ohne Berücksichtigung der Abhängigkeiten und installiert  dafür avr-binutils aus dem tinyos-repository, dann funktioniert auch die Übersetzung in Assemblercode.
Unschöner Effekt ist, dass apt-get nach diesen Schritten keine neuen Pakete mehr richtig installieren will. Behelfen kann man sich indem man das orginale Package bearbeitet. Mit Hilfe von ar kann man das Archiv entpacken und die control-Datei anpassen. Wenn man “binutils-avr” durch “avr-binutils” ersetzt und das Archiv wieder zusammenfügt (Anleitung hier: http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/#AEN108), dann gibt es auch keine Probleme mit Abhängkeiten und neue Pakete können installiert werden.

TinyOS und Gentoo

Die Installation von TinyOS unter Gentoo gestaltet sich etwas schieriger als es unter http://naurel.org/stuff/gentoo_howto_tinyos.html angeben ist.
Dennoch hält sich der Aufwand noch in Grenzen.
Die wesentlichen Schritte stehen alle in der genannten Anleitung, daher werde ich auf diese nicht weiter eingehen.

Installation TinyOS-2.x

Nachdem das Subversionrepository ausgecheckt wurde muss einfach nur das eclass-Verzeichnis darin gelöscht werden. Danach kann einfach und wie gewohnt die Installation von TinyOS via emerge gestartet werden.

Was nicht so recht funktionieren wollte war das env-update-Skript. Also habe ich einfachen einen symbolischen von /etc/env.d/tinyos/<version> auf /etc/env.d/99tinyos gelegt und war hat funktioniert.

Installation TinyOS-1.1

Die Installation von Version 1.1 gestaltete sich schon schwieriger. Hierbei habe ging es nicht einfach mit emerge =dev-tinyos/tinyos-1.1.15-r1, da es Probleme mit dem ebuild tos-simdriver in Version 1.1.15 gibt.
Bequem wie man eben ist, habe ich mich dann entschlossen nur das tos-ebuild zu verwenden (alles andere sollte ja schon da sein). Doch leider gibt es hier ein Problem mit der Prüfsumme des tinyos-1.1.15-Archives, das heruntergeladen wird. Ich habe mir also http://www.tinyos.net/dist-1.1.0/tinyos/source/tinyos-1.1.15Dec2005cvs.tar.gz heruntergeladen und in  das ebuild-Verzeichnis für tos verschoben.
Mit

ebuild tos-1.1.15-r1.ebuild digest

wird die Datei in die Manifest Datei aufgenommen. Jetzt habe ich den alten Wert in der Datei entfernt (beginnt mit DIST am Zeilenanfang) und habe das MISC in der neuen Zeile durch ein DIST ersetzt.
Da ich schon verschiedene Probleme hatte, habe ich das Bauen per Hand angestossen:

ebuild tos-1.1.15-r1.ebuild unpack
ebuild tos-1.1.15-r1.ebuild install
ebuild tos-1.1.15-r1.ebuild merge

Und siehe da, es wurde installiert. Ob sich dieser Weg als praktisch erweist, wird sich erst bei der Verwendung von TinyOS-1.x herausstellen.