Tag-Archiv für 'Linux'

FOX Board G20

Für die Nutzung in Robotik-Experimenten war ich einige Zeit auf der Suche nach einem Starter-Kit als Kontrollplatine. Das System sollte rechenstark sein, wichtige Standardschnittstellen wie USB und Ethernet unterstützen, mit Linux laufen und mehrere, frei nutzbare Ein- und Ausgänge besitzen. Mit dem FOX Board G20 habe ich jetzt ein solches System gefunden.

Trotz des modularen Aufbaus aus dem Netus G20 CPU-Modul und einer Basisplatine mit Schnittstellen kann man das FOX Board G20 als Single Board Computer (SBC) auffassen. Single Board Computer sind Computersysteme, bei welchen alle notwendigen elektronischen Komponenten auf einer Leiterplatte zusammengefasst sind. Sie werden zumeist für Mess-, Steuer- oder Regelungszwecke genutzt. Der Sandwich-Aufbau des FOX Board ermöglicht den Neuentwurf der Basisplatine für spezifische Anwendungen und bietet damit eine erhöhte Flexibilität.

foxg20

Das Netus G20 CPU-Modul beinhaltet eine ARM9-basierte CPU, genauer den Mikrocontroller AT91SAM9G20 von Atmel mit einer Taktfrequenz von 400Mhz. Mit 64 MByte RAM und 8 MByte Flashspeicher ist das CPU-Modul gut ausgestattet. Bei Abmessungen von 40×40mm für das CPU-Modul und 66×72 mm für die Trägerplatine ist das Board sehr kompakt. Die Möglichkeit microSD-Karten direkt einzustecken erlaubt die flexible Verwendung in vielen Anwendungen. Für die Nutzung in Robotik-Projekten spricht die Tatsache, dass auf der Trägerplatine viele Signale über nachbestückbare Stiftleisten direkt zugänglich sind. Bei Nutzung der Standard-Software sind von den 80 Pins dann 28 vollständig frei als Ein- oder Ausgang (GPIO) nutzbar, die restlichen Pins stellen Schnittstellenfunktionen wie SPI oder I2C zur Verfügung. Natürlich kann das Board aber auch anders konfiguriert werden.

Die Softwareunterstützung für das System ist gut, der verwendete Mikrocontroller wird vom Linux-Kernel standardmäßig unterstützt. Als Laufzeitsystem sind auf Debian und Gentoo basierende Images für die microSD-Karte verfügbar. Mit 150 Euro für Basisplatine und CPU-Modul ist es auch gerade so noch erschwinglich, das komplette Starterkit mit ein paar Zusatzteilen wie Netzteil, Gehäuse und microSD-Karte und ähnlichen Dingen ist für ungefähr 240 Euro erhältlich. Ein besonderes Plus ist die aktuelle Dokumentation im Wiki von ACME Systems, welche die wichtigsten Fragen zum Start mit dem Modul klärt.

Speicherverbrauch unter Linux messen

Bei der Entwicklung oder Leistungsbewertung von Software ist die Bestimmung des Speicherverbrauchs eines Prozesses eine häufige Aufgabe. Durch die Nutzung von dynamisch geladenen Bibliotheken und die gemeinsame Nutzung von Speicherseiten durch mehrere Prozesse ist die genaue Bestimmung der verbrauchten Ressourcen eine Frage der Zählweise. Bei der Verwendung von bekannten Linux-Werkzeugen wie ps, htop oder top wird zumeist die Gesamtmenge aller durch einen Prozess verbrauchten virtuellen Speicherseiten gezählt. Die Bestimmung ist unabhängig davon, ob die zu Grunde liegenden physikalischen Speicherbereiche eventuell durch mehrere Prozesse gleichzeitig genutzt werden. Die gemessene Speichermenge wird dabei als Resident Set Size (RSS) bezeichnet. Durch die mehrfache Zählung wird die Auslegung der Speicherausstattung einer Maschine erschwert.

Das von Matt Mackall geschriebene Programm smem ist ein Werkzeug, das verschiedene Berichte über die Speichernutzung auf einem Linux-System erstellen kann. Im Gegensatz zu den bereits genannten Werkzeugen kann smem die Proportional Set Size (PSS) bestimmen. Die PSS ist eine weitere Messgröße für den Speicherverbrauch eines Programms, bei welcher die durch Bibliotheken genutzte Speichermenge gleichmäßig auf die nutzenden Applikationen aufgeteilt wird. Wird eine Bibliothek durch drei Programme genutzt, wird jeweils nur ein Drittel des durch die Bibliothek verbrauchten Speichers für die PSS der nutzenden Programme einkalkuliert. Neben der Bestimmung der PSS ist zusätzlich die Bestimmung der Unique Set Size (USS) möglich. Die USS eines Prozesses ist die Speichermenge, die nur durch diesen Prozess genutzt wird. Wird der entsprechende Prozess entfernt, wird auf dem System diese Speichermenge frei.
smem-by-pss-small
smem ist in Python geschrieben und benötigt mindestens Version 2.6.27 des Linux-Kernels, da erst dieser die notwendige Datei pagemap mit der Zuordnung von virtuellem zu physikalischem Speicher für jeden Prozess in /proc enthält. Neben der Auflistung von RSS, PSS, USS und verbrauchtem Swap-Speicher für Prozesse und Nutzer mit verschiedenen Filterkriterien beherrscht smem auch die Ausgabe von Torten- und Balkengrafiken als PNG, SVG, JPG und EPS. Das Programm ist allerdings im Moment noch nicht in allen Distributionen enthalten.

Diplomarbeit

Seit heute schreibe ich offiziell an meiner Diplomarbeit. In den nächsten vier Monaten werde ich das Thema “Entwicklung einer Prüfsoftware auf einer embedded i.MX31-Plattform mit Betriebssystem Linux” bearbeiten. Es geht darum, für ein Embedded-Board mit i.MX31-Mikrocontroller und sehr vielen unterschiedlichen Schnittstellen (CAN, Ethernet, USB als Host und als Client, mehrere Displayschnittstellen) und Onboard-Peripherie (verschiedene Flashspeicher, RTC und produktspezifische Schaltkreise) eine Software zu schreiben, die alle Komponenten ansteuert und auf Funktionalität testet. Das Ganze passiert in der Nähe von Ravensburg, deswegen wohne ich auch seit sechs Wochen zeitweise in Weingarten.

Sony Ericsson W850i mit Linux

Ich habe mir eine neues Mobiltelefon zugelegt, da mein altes Telefon defekt war. Meine Wahl fiel auf das Sony Ericsson W850i, da ich gute Erfahrungsberichte mit Telefonen von Sony Ericsson aus dem Freundeskreis erhalten hatte und ich bei Recherchen heraus fand, dass diese Handys von Linux gut unterstützt werden.

sony_ericsson_w850i

Zur Kommunikation eines Rechners mit dem Telefon kann man drei Varianten benutzen, zwei Varianten mit USB-Verbindung und eine Variante mit Bluetooth.

  1. Anstecken des Telefons mit dem beiliegenden USB-Kabel und Auswählen von Dateiübertragung im Telefon. In diesem Modus kann man Multimediadateien auf das Telefon kopieren, das als Mass-Storage-Device wie ein USB-Stick arbeitet. Auch die Installation von Java-Programmen ist so möglich. Einfach die *.jar-Dateien auf das Handy kopieren und dort im Dateimanager installieren. Ich habe gestern so gleich ohne Probleme Bloover, ein Werkzeug für mobile Bluetooth-Scans, installiert.
  2. Anstecken des Telefons mit dem USB-Kabel und auswählen von Telefonmodus. In diesem Modus wird ein USB-Modemdevice zur Verfügung gestellt, weitere Tests habe ich hier nicht gemacht.
  3. Kommunikation über Bluetooth. Bei der Installation von Bluetooth sind einige Sachen zu beachten, ich habe mich an dieser Bluetooth-Anleitung für Ubuntu orientiert.

Zur Synchronisation des Telefons mit anderen Rechnern benutze ich OpenSync. Für Ubuntu Edgy Eft habe ich deshalb ein weiteres Repository in /etc/apt/sources.list hinzugefügt:

deb http://www.in.fh-merseburg.de/~jahn/opensync-0.21/ edgy main

Aus diesem Repository habe ich libopensync*, msynctool und multisync-gui installiert. Zur Synchronisation mit dem Telefon benutze ich Evolution und IrMC (funktioniert auch für Bluetooth) in einer Syncronisationsgruppe (Konfiguration mit msynctool oder multisync-gui). Die Man-Page von msynctool erklärt ziemlich treffend wie zur Synchronisation vorzugehen ist. Wichtig ist, dass als Befehl zum Synchronisieren

msynctool –sync Gruppenname –filter-objtype note

mit dem Filter für Notizen verwendet wird, da sonst das Synchronisieren sofort fehlschlägt. Zur Konfiguration gibt es im Opensuse-Wiki noch mehr Informationen.

Mit dem Telefonwechsel war ein vollständiger Nummernwechsel verbunden. Die neuen Telefonnummern sind im Impressum vermerkt.

Umstieg von Gentoo auf Ubuntu

Ich habe diese Woche meine zwei Rechner mit Ubuntu 6.10 (Edgy Eft) installiert und damit Gentoo auf diesen Rechnern abgelöst. Die Installation verlief auf beiden Rechnern problemlos, nur der Dialog zur Platten-Partionierung war etwas hackelig, durch Neupartitionierung war das Problem aber zu lösen.

Das Installieren der Updates verlief zügig und ohne sichtbare Fehler. Auf dem Thinkpad mit SuperSavage-Grafik funktionierte Direct-Rendering Out-of-the-Box, beim Desktop musste ich noch die proprietären fglrx-Treiber von ATI installieren und konfigurieren. Bis jetzt fand sich sämtliche Software, die ich brauchte, in den verfügbaren Quellen.

Der Umstieg von Gentoo zu Ubuntu hatte folgende Gründe:

  • Gentoo ist im Moment nicht mehr so trendy wie noch vor zwei Jahren, viele Entwickler verlassen das Projekt und widmen sich anderen Distributionen. Die Pakete scheinen deswegen nicht mehr überall so gepflegt wie ich mir das vorstelle.
  • Da bei Gentoo aus dem Quellcode installiert wird benötigen Updates lange Compilerläufe, die mir persönlich jetzt zu lange dauern. Updates bei Bibliotheken können wenn Abhängigkeiten zu OpenOffice, Firefox oder X auftreten in wahre Compile-Marathons ausarten. Manchmal erscheinen dann weitere Updates bevor der letzte Compile-Lauf beendet ist.
  • Die Paketverwaltung bei Gentoo ist für Nutzer ausgelegt die Fehler und Sicherheitsmängel durch Updates auf neue oder neueste Programmversionen lösen. Das reine Fixen von Sicherheitsmängeln oder Fehlern bei Beibehaltung des Featureumfangs scheint bei Gentoo nicht unbedingt Priorität zu haben. Viel Entwicklerarbeit basiert auf den jeweilig neueste Softwarerevisionen. Ich möchte in Zukunft vor allem ein stabiles System mit halbwegs aktuellen Versionen.
  • Konfiguration ist bei Gentoo immer noch viel Handarbeit. Ich finde es sehr nützlich die Kommandozeile benutzen zu können, habe aber auch nichts gegen automatisierte, graphische Lösungen wo sie sinnvoll, funktional und effektiv sind. Bei Ubuntu erhoffe ich mir weniger Administrationsaufwand.

Generell bin ich mit Gentoo nicht unzufrieden gewesen, meine Ziele und Anforderungen haben sich aber dahingehend geändert, dass ich ein System möchte bei dem Stabilität vor Aktualität steht.

Natürlich hat der Wechsel auch ein paar Nachteile:

  • Subjektiv erscheint mir Ubuntu ein wenig langsamer als mein Gentoo, allerdings nicht soviel, dass ich es als störend empfinde. Hier kann man aber sicher noch ein paar Anpassungen vornehmen. Der empfundene Unterschied kann auch daher herrühren, dass ich gleichzeitig von XFCE auf Gnome gewechselt bin.
  • In Liferea werden anscheinend keine https-Anfragen unterstützt. Hier werde ich eventuell ein Nichtdistributionspaket installieren.
  • Das angesammelte Wissen über die Erstellung von ebuilds ist jetzt nutzlos, das Wissen zum Erstellen eigener Pakete für Ubuntu muss ich mir neu aneignen.

Bis jetzt scheint mir der Wechsel aber eine gute Entscheidung.

The Code Linux

Bei Google Video findet sich eine interessante Dokumentation über Linux und Open Source Software. Das ganze heißt The Code Linux und dauert ungefähr eine Stunde. Die Dokumentation stellt die Konzepte Freier Software vor und lässt eine Vielzahl von Kernel-Entwicklern zu Wort kommen. Bis auf wenige Teile sind die Interviews in Englisch.

Chemitzer Linux-Tage 2007

Am 3. und 4. März finden die wieder einmal Chemnitzer Linux-Tage statt. Eine Eintrittskarte kostet wie in den letzten Jahren 5 EUR bzw. ermäßigt 3 EUR und ist an beiden Veranstaltungstagen gültig. Karten können ohne Anmeldung direkt beim Besuch der Veranstaltung erworben werden. Die Veranstaltung umfasst an beiden Tagen jeweils 6 Vortragsstränge und viele Präsentationen.

Chumby

Chumby (Bilder hier), ein kompaktes Gerät das sich wie ein Wecker verhalten kann, ist ein Eingebettetes System mit WLAN-Anschluss. Das Hardware-Layout für das Gerät ist frei und sollte bei Anmeldung zugänglich sein. Leider wird in den Bedingungen der Anmeldung zu viel von Payment geredet, so das ich mich nicht angemeldet habe.

Hauptzweck des Gerätes soll sein, kleine Applikationen, die in Adobe Flash entwickelt, sind anzuzeigen. Beispielapplikationen sind ein Wecker, Wetteranzeige, Flickr-Bilder, Google-News usw.

Technisch setzt das Gerät auf einen Freescale iMX21 266MHz ARM9 controller, hat 32MB SDRAM, 64 MB NAND FLASH, einen 320×240 3.5-inch Touchscreen mit 12Hz, Stereo 2W Lautsprecher, einen Audio-Ausgang und Mikrophone-Eingang, einen USB-Anschluss und eine WLAN-Karte.

Auf dem Gerät läuft Linux 2.4.20, eine Toolchain und die Kernelquellen sind auch verfügbar. Weitere Experimente habe ich noch nicht durchgeführt, da ich keine Hardware besitze. Chumby Industries scheint aber Probeexemplare unter das Volk zu bringen oder bringen zu wollen, auf der Seite gibt es ein entsprechendes Angebot für “alpha-geek hacker”

Was mir bei Analyse der Chumby-Seiten fraglich geblieben ist, ist das Format der Images für Chumby und das integrierte System zum Digital-Rights-Management. Ziel ist wohl, einen Abomechanismus mit dem Gerät zu verkaufen.

Irgendwann im März soll es das dann auch zu kaufen geben. Das könnte durchaus ein Hype werden, wenn der angestrebte Preis von 150$ erreicht wird und es auch ohne Abo geht.

Asus WL-500g Premium mit OpenWrt Kamikaze

Ich habe zu Testzwecken einen WLAN-Router von Asus erworben. Es handelt sich um das Modell Asus WL-500g Premium mit 8 MB Flash-Speicher und 32 MB RAM sowie zwei USB-Ports. Preislich liegt das Gerät bei ungefähr 70 Euro bei Ebay. Der WLAN-Router lässt sich mit OpenWRT unter Linux betreiben.

asus_wl_500g_premium

Betrieben wird das Gerät von mir unter der neuen Entwicklungsversion von OpenWrt mit dem Namen Kamikaze.
Die Quellen dafür bekommt man durch einen Checkout aus dem Subversion-Repository.

svn co https://svn.openwrt.org/openwrt/trunk/

Anschließend führt man im trunk/-Verzeichnis die Konfiguration des Firmware-Build-Prozesses mit

make menuconfig

aus und baut die Firmware mit

make

Um den Router zu Flashen benötigt man einen tftp-client, es wird atftp empfohlen. Unter Gentoo installiert man

emerge atftp

Nun muss man als Erstes den Router in den Diagnose-Modus versetzen:

  1. Entfernen der Versorgungsspannung.
  2. Drücken des RESET-Tasters (nicht der rote EZSETUP) mit einem Stift/Feinschraubenzieher während des Einschaltens für ein paar Sekunden.
  3. Loslassen des RESET-Tasters.

Man erkennt das der Router im Diagnosemodus ist daran, dass die POWER-LED langsam blinkt. Der Router befindet sich nun im Bootloader CFE (Common Firmware Environment). Nun führt man folgendende Eingaben in dem Verzeichnis durch, in dem das Image der Firmware liegt ( z.B. trunk/bin )

# atftp
connect 192.168.1.1
mode octet
trace
timeout 1
put openwrt-brcm-2.4-squashfs.trx

Das Image wird jetzt auf den Router übertragen.

Achtung: Nach Übertragung muss der Router noch mindestens 6 Minuten eingeschaltet bleiben, da das Image erst nach dem übertragen in den Flash geschrieben wird. Der Router startet nach Beenden des Schreibvorgangs nicht automatisch neu: Man wartet also lieber ein wenig länger und führt dann einen Reset durch.

Nun sollte man sich mit telnet auf 192.168.1.1 verbinden können und mit passwd ein root-Passwort für die Nutzung von ssh setzen können. Das Default-Passwort für root ist nicht gesetzt, der Zugang über ssh funktioniert aber erst nach dieser Aktion.
Wenn alles funktioniert bekommt man einen Prompt und ein kleines eingebettes Linux-System für wenig Geld:

# uname -a
Linux OpenWrt 2.4.34 #2 Thu Feb 15 20:47:24 CET 2007 mips unknown

Um den vollständigen Leistungsumfang des Gerätes nutzen zu können muss man noch ein paar spezielle Aktionen durchführen, zum Beispiel muss noch die volle Menge des Speichers nutzbar gemacht werden.

Chemnitzer Linux-Tage 2005

Am Wochenende waren wieder einmal die Chemnitzer Linux-Tage, wie in den letzten Jahren natürlich auch wieder gut besucht und sehr interessant.

Neben dem Kernthema Linux gab es unter anderem eine Vorstellung der Chemnitzer Robotik AG zu sehen, bemerkenswert fand ich ihre Präsentation zur Eurobot 2005, einem Wettbewerb autonomer Roboter. Der deutschlandweite Vorauscheid Eurobot Deutschland findet im April auf der Hannover-Messe statt.

Gefallen hat mir auch die Einführung zu Linux auf WLAN/DSL-Routern, mehr Informationen dazu findet man bei OpenWRT.

Etwas merkwürdig fand ich den Vortrag zu Plan 9, einem System das zwar sehr interessante Ansätze zum Betriebssystementwurf bietet (z.B. vollständige Transparenz lokaler und nichtlokaler Ressourcen), allerdings für den Endnutzer aufgrund einer fehlenden Anwendungsbasis und Inkompatibilität zu Linux/Unix nicht zu empfehlen ist.