Netaddict



Sie befinden sich hier: Netaddict.de » blinkenlights » Debian auf dem FriendlyARM

Debian auf dem FriendlyARM

FriendlyARM

Das FriendlyARM-Board ist als Umgebung für Embedded-Entwickler gedacht. Aber auch der normale Anwender findet dafür zahlreiche Einsatzgebiete, die vom Car-PC bis hin zur Steuerung der Hausautomatisation reichen. Das Betriebssystem Debian GNU/Linux bietet die nötige Flexibilität für alle Anwendungsfälle. Die Installation ist einfach durchzuführen, wenn man weiß, welche Klippen es zu umschiffen gilt.

Beim FriendlyARM handelt es sich um ein in China gefertigtes Entwicklungskit mit einem ARM9 Mikrocontroller der Firma Samsung. Das Board gibt es ohne Zubehör zu kaufen oder optional im Paket mit einem 3,5 oder 7-Zoll-Touchscreen, einem VGA-Modul und mit verschiedenen Flash-Speichergrößen. Der Autor dieses Beitrags hat sich für die Variante Micro2440-SDK mit 7-Zoll-Display und 256 Megabyte eingebautem Flash-Speicher entschieden. Auf diesem ist ab Werk eine chinesische Qtopia-Umgebung vorinstalliert. Weitere Dokumentation und Software wie z. B. fertige Android-Images sind als Download über die Internetseite des Herstellers 1) oder über die Seite FriendlyARM.net 2) zu beziehen. Im Lieferumfang des FriendlyARM befinden sich diverse Kabel und ein paralleler JTAG-Adapter. Ein passendes Netzteil fehlt und muss zusätzlich beschafft werden. Es muss fünf Volt und zwei Ampere liefern. Falls der eigene Rechner über keine serielle Schnittstelle verfügt, ist zusätzlich ein USB-seriell-Adapter notwendig. Weiterhin ist eine ausreichend große SD- oder SDHC-Speicherkarte erforderlich. Empfohlen wird eine Kapazität von einem Gigabyte oder mehr.

Bild 1: FriendlyARM SDK-Board mit Display zerlegt. Von oben nach unten: SDK-Board, Display, Touch-Screen

Der erste Kontakt

Für die Arbeiten am FriendlyARM sind eine serielle, sowie eine USB-Verbindung zum Rechner erforderlich. Zur Kommunikation werden eine Terminalsoftware und ein spezielles Upload-Werkzeug eingesetzt. Auf dem Arbeitsrechner wird ein debianbasiertes GNU/Linux OS wie Ubuntu vorausgesetzt. Die serielle Verbindung zwischen Rechner und FriendlyARM stellt man über das mitgelieferte serielle Kabel her. Hier findet erforderlichenfalls der USB-seriell-Adapter Verwendung. Für die parallel erforderliche USB-Verbindung, muß das beiliegende USB-Kabel mit einem Typ A und einem Typ B-Stecker verwendet werden. Den Geräteanschluss (Typ B - quadratische Grundform) steckt man am FriendlyARM an und das andere Kabelende in einen freien USB-Steckplatz am Rechner. Für die folgenden Arbeiten öffnet man zwei Shell-Fenster. Eines für die Arbeiten am Rechner, folgend als Arbeitsrechnerterminal bezeichnet und eines zur Kommunikation mit dem FriendlyARM, folgend als FriendlyARM-Terminal bezeichnet. Die Kommunikation mit dem FriendlyARM erfolgt über eine Terminal-Emulationssoftware, welche man aus den Paketarchiven installiert. Eine gute Wahl ist das Programm picocom. Dieses installiert man im Arbeitsrechnerterminal nach:

# sudo apt-get install picocom

Anschließend wechselt man in das FriendlyARM-Terminal und startet picocom:

# picocom -b 115200 /dev/ttyUSB0

Falls man keinen USB-Adapter benutzt, heißt der richtige Port am Rechner /dev/ttyS0 oder /dev/ttyS1. Schaltet man den FriendlyARM ein, werden, während das vorinstallierte Linux bootet, diverse Meldungen sichtbar.

Das U-Boot

Der vorinstallierte Bootloader supervivi des FriendlyARM, bietet keine Unterstützung für das Booten von USB-Medien oder SD-Speicherkarten. Soll dies möglich sein, muss er ausgetauscht werden. Der Austausch eines Bootloaders kann in der Regel problemlos durchgeführt werden. Es wird jedoch darauf hingewiesen, dass es sich dabei um einen nicht unerheblichen Eingriff am Gerät handelt, der ausdrücklich auf eigene Gefahr geschieht. Als Bootloader im Embedded-Bereich hat sich U-Boot 3) seit langem bewährt. Er wird als fertiges Binary bezogen 4). Das Archiv wird anschließend auf dem Arbeitsrechnerterminal entpackt:

# unzip u-boot_20100701.zip

Im Archiv sind drei Varianten des U-Boot enthalten. Für Boards mit 256 Megabyte oder mehr internem Flashspeicher ist die Datei u-boot-256M.bin bestimmt. Im Unterverzeichnis „tools“ befindet sich das USB-Uploadtool s3c2410_boot_usb. Dieses wird mit nachfolgendem Befehl ausführbar gemacht:

# chmod +x tools/s3c2410_boot_usb

Um U-Boot zu installieren, stellt man den Schalter [S2] am FriendlyARM auf NOR um. Damit bootet beim Einschalten das BIOS des FriendlyARM. Auf dem Terminal B ist jetzt ein Auswahlmenü, wie in Bild 2 abgebildet, sichtbar.

Bild 2: Auswahlmenü des Bootloaders supervivi

Im Hauptmenü drückt man die Taste [Q], daraufhin wird eine Kommandozeile zur manuellen Befehlseingabe angezeigt. Auf dem Arbeitsrechner stellt man mit dem Befehl ls fest, wie groß die hochzuladende U-Boot-Image-Datei u-boot-256M.bin ist. Die Größe in Byte muss beim Upload angeben werden. Dem FriendlyARM wird mitgeteilt, dass über das USB-Kabel nun Daten übertragen werden und er diese in den RAM, an die Speicherstelle 0x32000000 schreiben soll.

load ram 0x32000000 242360 u

Die Zahl 242360 ist in diesem Beispiel die Größe der Datei u-boot-256M.bin in Bytes. Ist das USB-Upload-Kabel noch nicht angeschlossen, wird dies mitgeteilt, es muss dann angeschlossen werden. Sollte die Meldung trotz angeschossenen Kabels auftreten, hilft es meist, das Kabel ab- und erneut anzustecken. Der Upload des neuen Bootloaders wird mit einem entsprechenden Hinweis erwartet. Man startet auf dem Arbeitsrechner das USB-Upload-Tool und übergibt als Parameter den Namen der Bootloader-Datei.

# sudo tools/s3c2410_boot_usb u-boot-256M.bin

Falls die Meldung Error downloading program erscheint, braucht dies nicht weiter zu beunruhigen, auf dem seriellen Terminal des FriendlyARM sieht man, dass der Upload trotzdem geklappt hat. Dort wird U-Boot mit folgendem Befehl gestartet.

go 0x32000000

Der Befehl weist den FriendlyARM an, er soll an die Speicherstelle 0x32000000 in den RAM springen und den dort liegenden Code ausführen. Nach Ausführung des Befehls, wird eine Kommandozeile sichtbar, die mit dem Prompt MINI2440 # beginnt. Das USB-Upload-Kabel kann nun entfernt werden. Bis jetzt hat man noch keine permanenten Änderungen am FriendlyARM vorgenommen. Würde man das Gerät ausschalten wäre alles wie ursprünglich, da U-Boot aktuell nur im RAM vorhanden ist und von dort ausgeführt wird. Um ihn permanent zu installieren, muss er in den NAND-Speicher geschrieben werden. Dazu leert man den NAND und überprüft ihn auf defekte Blöcke. NAND-Flash-Speicher haben fertigungsbedingt immer defekte Blöcke, näheres kann man im Internet 5) nachlesen. Der geladene U-Boot ermöglicht es, nachzusehen, welche Blöcke ab Werk als defekt markiert sind.

nand bad

Die angezeigten Blöcke sollte man sich notieren, um sie später mit den tatsächlich gefunden defekten Blöcken vergleichen zu können. Der Flashspeicher wird nun komplett geleert. Das vorinstallierte Qtopia ist danach überschrieben, wie auch alle anderen Daten die im NAND-Flash lagen.

nand scrub

Die Antwort auf die Sicherheitsfrage, ob alles gelöscht werden darf, muss mit der Taste [Y] und der Eingabetaste bestätigt werden, wobei auf der Kommandozeile nichts zu sehen ist und die Eingabe blind erfolgt. Nach kurzer Zeit ist der Speicher geleert. Jetzt erstellt man die Liste der defekten Blöcke neu. Dieser Vorgang kann mehrere Minuten dauern, man darf nicht ungeduldig sein und den Vorgang abbrechen, nur weil kein Fortschritt sichtbar ist. Dieser Arbeitsschritt ist sehr wichtig, würde man ihn nicht ausführen, würden beim späteren Kernelstart Fehlermeldungen generiert, da der Kernel über die defekten Blöcke im NAND stolpert.

nand createbbt

Auch hier muss man die Taste [Y] wieder ohne Anzeige auf der Kommandozeile drücken und mit der Eingabetaste bestätigen. Da der NAND defekte Speicherbereiche haben kann, ist es erforderlich, dynamische Partitionen anzulegen, welche die defekten Blöcke berücksichtigen. U-Boot wird mit nachfolgendem Befehl dauerhaft in den NAND-Speicher geschrieben:

dynpart 
dynenv set u-boot_env
nand write.e 0x32000000 u-boot

Der Bootloader auf dem FriendlyARM erfüllt mehrere Aufgaben. Er ist auch dafür verantwortlich, daß die eingebaute Netzwerkkarte eine Hardware-Adresse (MAC) erhält. Diese kann man beliebig wählen. Um Konflikte zu vermeiden, hat es sich jedoch bewährt, eine Adresse aus einem Adressraum zu nehmen, deren Hersteller seit langem nicht mehr existiert. Eine vollständige Liste aller vergebenen Adressbereiche findet sich auf der Seite der IEEE 6). Eine Anleitung im Internet 7) empfiehlt den Adressbereich des Herstellers Prime Computer zu verwenden, welcher mit 08:00:2F beginnt, die restlichen drei Bytes sind frei wählbar. Falls mehrere FriendlyARMs im Netz sind, muß für jedes Gerät natürlich eine individuelle MAC-Adresse gesetzt werden.

set ethaddr 08:00:2F:00:13:37

An dieser Stelle zieht man einen Arbeitsschritt vor und setzt die Umgebungsvariablen für den Linux-Start. Die Variable bootargs enthält ein init=/bin/sh, damit man beim ersten Start, wenn das System noch nicht fertig eingerichtet ist, eine Shell erhält. Außerdem steht die Option mini2440=1tb für ein Display mit sieben Zoll, besitzt man eines mit 3,5 Zoll, muß es an dieser Stelle mini2440=3tb lauten. Die einfachen Hochkommata beim Setzen der bootcmd Variablen sind erforderlich, da die Befehle sonst sofort ausgeführt werden. Der letzte Befehl schreibt die Umgebungsvariablen in den dafür vorgesehenen Speicherbereich des NAND.

setenv bootargs noinitrd mini2440=1tb rootfstype=ext2 root=/dev/mmcblk0p2 rw rootwait rootdelay=1 console=ttySAC0,115200 console=tty0 init=/bin/sh
setenv bootcmd 'mmcinit; ext2load mmc 1:2 0x32000000 /boot/uImage; bootm'
saveenv

Am FriendlyARM wird abschließend der Schalter [S2] in die Stellung NAND gebracht, um den normalen Start vom NAND-Flash oder SD-Speicherkarten wieder zu ermöglichen.

In Stücke geschnitten

Auf der Speicherkarte legt man eine Partition für das Dateisystem und eine Partition für Auslagerungsdateien an. Zum Partitionieren der SD-Speicherkarte bietet sich das grafische Tool Gparted, oder ein Kommandozeilenprogramm wie cfdisk an. Als erste Partition erstellt man eine Auslagerungspartition (swap), deren Größe mit 256 Megabyte ausreichend bemessen ist. Die zweite Partition enthält später den Kernel und das Root-Dateisystem. Sie wird mit ext2 formatiert und erstreckt sich hinsichtlich ihrer Größe auf den Rest des Mediums. Es wird empfohlen, dieser Partition eine Bezeichnung (label) zuzuweisen, da Ubuntu dieses als Namen für den Mountpoint benutzt und automatisch unter /media einhängt. Für die Root-Dateisystem-Partition verwendet der Autor als Bezeichnung rootfs. Es wird im weiteren angenommen, daß die Rootfs-Partition unter /media/rootfs eingehängt ist.

Bild 3: Partitionsaufteilung der SD-Speicherkarte

Werkzeugkiste

Für das Debian-System benötigt man einen Kernel. Man kann ihn auf dem Arbeitsrechner cross-kompilieren oder man verwendet den vom Autor dieses Beitrags fertig übersetzten Kernel, der hier verlinkt ist. Um für den FriendlyARM selbst Software kompilieren zu können, wird eine sogenannte Cross-Compile-Umgebung benötigt. Man braucht also einen Kompiler, der einen für die ARM-Architektur ausführbaren Code erzeugen kann. Zum Glück gibt es die nötige Software im Debian Paketarchiv. Man installiert auch gleich die mkimage, womit ein Kernelimage für U-Boot konvertiert wird. Zusätzlich benötigt man Ncurses für das Konfigurationsinterface des Kernels und die Quellcode-Verwaltungs-Software git.

# sudo apt-get install gcc-4.5-arm-linux-gnueabi uboot-mkimage libncurses5-dev git-core 
# export CROSS_COMPILE=arm-linux-gnueabi-
# export ARCH=arm

Die beiden Export-Zeilen gelten nur temporär für die aktuelle Sitzung, sie legen den Kompiler und die Architektur fest.

Kernel backen

Als Kernel verwendet der Autor die modifizierte Version des Entwicklers buserror. Die Quelltexte liegen in einem GIT-Repository, welches man sich auf den Rechner herunterlädt. Je nach Internetanbindung dauert dieser Vorgang einige Minuten.

# git clone git://repo.or.cz/linux-2.6/mini2440.git
# cd mini2440
# make mini2440_defconfig
# make menuconfig

In der Kernelkonfiguration wählt man, wie auf Bild 4 zu sehen ist, zusätzlich unter filesystem das Dateisystem ext2 aus und läßt es statisch mit in den Kernel einbauen. Profis können selbstverständlich noch weitere Änderungen vornehmen. Für Nutzer von besonderen USB-Tastaturen am FriendlyARM kann es zum Beispiel nötig sein, unter den Special HID drivers die entsprechende Option zu aktivieren, bei der Cherry-Tastatur des Autors war dies notwendig. Nach dem Verlassen der Konfiguration übersetzt man das Kernel-Image und konvertiert es anschließend für den Bootloader u-boot.

Bild 4: Kernelkonfiguration

# make && make modules
# mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d arch/arm/boot/zImage uImage

Stiefel schnüren

Debian macht es einem sehr leicht, ein funktionierendes System zu erzeugen. Dazu verwendet man das Werkzeug Debootstrap. Dieses lässt sich auf jedem Ubuntu oder Debian-System nachinstallieren. Debootstrap ermöglicht das Erstellen eines vollständigen Debian-Ökosystems auf einem beliebigen Pfad im Dateisystem. Bevor Debootstrap aktiv werden kann, muß die Partition rootfs neu eingehängt werden, Ubuntu hängt diese standardmäßig mit eingeschränkten Rechten ein. Für die weiteren Aktionen werden außerdem Root-Rechte benötigt.

# sudo su
# apt-get install debootstrap
# mount -o remount,exec,dev /media/rootfs/
# debootstrap --verbose --arch armel --foreign lenny /media/rootfs http://ftp.de.debian.org/debian

Man kann hier statt Debian lenny (5.0) auch auf Debian squeeze (6.0) wechseln, allerdings gelang es dem Beitragsautor nicht, den X-Server unter Debian 6.0 zu starten. Je nach Internetanbindung dauert der Debootrap-Vorgang einige Minuten. Es werden ca. 140 MB heruntergeladen. Den Kernel und die Module installiert man mit den nachfolgend aufgeführten Befehlen auf die SD-Karte:

# cp uImage /media/rootfs/boot/
# ARCH=arm INSTALL_MOD_PATH=/media/rootfs/ make modules_install
# sync
# umount /media/rootfs/

Das Ausführen von sync nach all diesen Arbeiten stellt sicher, daß alle Daten vollständig auf die Karte geschrieben wurden. Danach wird die Rootfs-Partitionen ausgehängt, die SD-Speicherkarte aus dem Arbeitsrechner entnommen und in den FriendlyARM gesteckt.

Der erste Start

Wechselt man auf die serielle Konsole des FriendlyARM und schaltet diesen ein, kann man den Start des frischen Debian-Systems verfolgen. Auf dem Touchscreen zeigt sich währenddessen ein dicker zufriedener Tux. Ist man auf der Root-Shell angelangt, kann man die Installation fortsetzen. Dazu ist es notwendig, einige Einstellungen zu treffen. Man erzeugt einige Gerätedateien, die Datei /etc/fstab wird bestückt und dem System wird ein frei wählbarer Name gegeben. Um die Installation des Grundgerüstes abzuschließen, wird Debootstrap nochmals aufgerufen.

# mknod -m 0660 /dev/ttySAC0 c 204 64
# mknod -m 0660 /dev/mmcblk0   b 179 0
# mknod -m 0660 /dev/mmcblk0p1 b 179 1
# mknod -m 0660 /dev/mmcblk0p2 b 179 2
# mknod -m 0660 /dev/rtc c 254 0
# mknod -m 0660 /dev/fb0 c 29 0
# echo "proc /proc proc none 0 0" >> /etc/fstab
# echo "/dev/mmcblk0p1 none swap sw 0 0" >> /etc/fstab
# echo "/dev/mmcblk0p2 / ext2 defaults,noatime,relatime 0 1" >> /etc/fstab
# echo "mini2440" > /etc/hostname
# mount /proc
# /debootstrap/debootstrap --second-stage
# echo "T0:2345:respawn:/sbin/getty 115200 ttySAC0" >> /etc/inittab
# echo ttySAC0 >> /etc/securetty

Die Installation dauert eine ganze Weile und es bleibt genügend Zeit, die leeren Colaflaschen aus dem Arbeitszimmer zu schaffen und die Katzen zu füttern ;-). Wenn abschließend die Meldung Base system installed successfully sichtbar ist, war die Installation erfolgreich. Man sorgt abschließend dafür, daß es möglich ist, sich auf der eingebauten seriellen Konsole anzumelden. Jetzt ist die Zeit gekommen, das Ethernetkabel an den FriedlyARM anzustecken, denn für die weiteren Schritte ist eine Netzwerkverbindung erforderlich. Folgender Befehl, läßt das System fertig hochfahren:

# exec /sbin/init

Ein paar Feinheiten fehlen noch. Nach dem Login als root, ist es wichtig ein Passwort festzulegen, die Netzwerkkarte auf dynamische Adressierung mittels DHCP einzustellen und die Zeitzone richtig zu setzen. Um Software aus dem Paketarchiv von Debian installieren zu können, legt man die Paketquellen fest und schränkt die Paketanhängigkeiten auf ein Minimum ein um Speicherplatz zu sparen.

# passwd
# echo "auto eth0" >> /etc/network/interfaces
# echo "iface eth0 inet dhcp" >> /etc/network/interfaces
# dpkg-reconfigure tzdata	
# echo "deb http://ftp.de.debian.org/debian lenny main non-free contrib" > /etc/apt/sources.list
# echo "APT::Install-Recommends \"false\";" > /etc/apt/apt.conf.d/98recommends 

Nach getaner Arbeit folgt der Neustart des Systems. Dieser wird mittels des Befehls reboot ausgelöst. Der Start des U-Boot muss jetzt während des Countdowns innerhalb von drei Sekunden durch Drücken einer beliebige Taste unterbrochen werden, um die bootargs Variable ohne die Initiale Shell zu konfigurieren:

setenv bootargs noinitrd mini2440=1tb rootfstype=ext2 root=/dev/mmcblk0p2 rw rootwait rootdelay=1 console=ttySAC0,115200 console=tty0
saveenv
reset

Nach kurzer Zeit ist eine Login-Shell sichtbar. Das Debian-System ist damit vollständig installiert.

Grafische Oberfläche

Wer einen FriendlyARM mit Display gekauft hat, möchte dieses sicherlich mit einer grafischen Benutzeroberfläche verwenden. Hierzu ist die Installation der nötigen Pakete des X-Servers und die Konfiguration der benutzten Sprachdaten erforderlich.

# apt-get update && apt-get upgrade
# apt-get install xserver-xorg-input-evtouch xorg xserver-xorg-video-fbdev xfonts-base xinit xfonts-75dpi xserver-xorg-input-mouse xserver-xorg-input-kbd udev locales
# dpkg-reconfigure locales

Die Konfiguration des X-Servers ist in Listing 1 8) dargelegt. Sie wird als Datei /etc/X11/xorg.conf abgespeichert. Die fett markierten Zeilen müssen in die bestehende Datei eingefügt werden. Den X-Server startet man durch die Eingabe von X. Der Mauszeiger ist über den Touch-Screen steuerbar. Die Tastatureingabe Strg+C beendet den X-Server wieder. Als sehr kleine Desktop-Umgebung empfiehlt sich Matchbox. Umgebungen wie XFCE oder Gnome überfordern den kleinen FriendlyARM.

# apt-get install matchbox

Da es grundsätzlich keine gute Idee ist, alle X-Anwendungen als Benutzer mit administrativen Rechten auszuführen, legt man sich einen normalen Benutzer an.

# adduser armfriend

Um allen Benutzern das Starten eines X-Servers zu ermöglichen führt man dpkg-reconfigure x11-common aus und wählt den Eintrag anybody. Damit der X-Server beim Bootvorgang automatisch startet, sind zwei Änderungen an der Datei /etc/inittab nötig. Zunächst ändert man den Standardrunlevel von zwei auf fünf. Danach sorgt man dafür, daß der X-Server beim Booten automatisch startet. Die Änderungen sind im Listing 2 9) ersichtlich. Nach einem Neustart mittels reboot, startet die grafische Oberfläche mit Matchbox. Dank des nahezu unerschöpflichen Softwarepools von Debian, kann nun jeder Anwender nachträglich beliebige weitere Software - möglichst ressourcenschonend - installieren.

Exkurse

Gehäuse

Für die Version des FriedlyARM mit dem 3,5-Zoll Monitor ist ein Metallgehäuse erhältlich. Als Besitzer des SDK-Boards mit 7-Zoll-Bildschirm muß man sich selbst nach einer Hülle umsehen. Ein passendes Kunststoffgehäuse gibt es beim Elektronikhändler Reichelt (Bestellnummer TEKO AUS11). Mit etwas handwerklichem Geschick und einem kleinen Fräsgerät (einem Dremel o. ä.) lassen sich die notwendigen Öffnungen für alle Anschlüsse in das Gehäuse fräsen. Damit bekommt der FriedlyARM den nötigen WAF 10) um an der Wohnzimmerwand akzeptiert zu werden.

Bild 5: FriendlyARM in freundlicher Verpackung

Empfohlene grafische Anwendungen

Der FriendlyARM hat wenig RAM und auch nicht viel Rechenleistung, deshalb sind schlanke Anwendungen gefragt. Folgende Software aus dem Debian-Paketarchiv ist besonders ressourcenschonend oder ist für Geräte ohne Tastatur empfehlenswert.

  • arora (Webbrowser)
  • chromium (Webbrowser)
  • xlinks2 (Webbrowser)
  • matchbox-keyboard (Bildschrimtastatur)
  • epdfview (PDF-Viewer)

Backup

Von der SD-Speicherkarte können mittels des Imaging-Programms dd Sicherungskopien durchgeführt werden. Dieses Vorgehen erspart eine Neuinstallation, falls die Speicherkarte irgendwann nicht mehr funktionieren sollte, denn grundsätzlich haben Flash-Speicher eine begrenzte Lebensdauer. Im praktischen Einsatz ist bei dem Beitragsersteller, auch bei einer ununterbrochenen Betriebszeit von mehreren Jahren und trotz Verwendung des eher ungeeigneten Dateisystems ext3, kein Mediendefekt vorgekommen. Man kann davon ausgehen, daß die Datenträger für den unkritischen Einsatz im privaten Bereich ausreichend stabil sind.

Kalibrierung

Um den Touch-Screen zu kalibrieren entfernt man das Kommentarzeichen # vor der Option Calibrate in der Datei /etc/X11/xorg.conf und führt anschließend auf dem Terminal des FriendlyARM folgende Befehle aus.

# cp /usr/share/xf86-input-evtouch/empty_cursor.xbm /
# cd /usr/lib/xf86-input-evtouch
# sh calibrate.sh

Der eigentliche Kalibrierungsvorgang erfolgt in zwei Schritten. Zunächst fährt man die äußeren Kanten und Ecken des Touch-Screens ab, bis sich die angezeigten Min- und Max-Werte nicht mehr ändern. Danach steckt man eine USB-Tastatur an und drückt die [Enter] Taste. Das obere linke Kreuz färbt sich rot und es wäre eigentlich erforderlich, auf das Zentrum dieses roten Kreuzes zu tippen, aber der Kalibrierungsvorgang berücksichtigt nicht, daß der 7-Zoll Touch-Screen um 90°nach links gedreht ist. Daher ist es erforderlich, statt dem Kreuz in der oberen linken Ecke das Kreuz in der unteren linken Ecke anzutippen, danach das Kreuz in der Mitte links, statt in der Mitte oben und so weiter. Bild sechs veranschaulicht die Reihenfolge. Die ermittelten Werte werden am Ende in die Datei /usr/lib/xf86-input-evtouch/out.txt geschrieben. Diese Werte überträgt man manuell in die Datei /etc/X11/xorg.conf unter die Sektion InputDevice, weiterhin kommentiert man die Option Calibrate wieder aus. Sollten die X- und Y-Abweichungen der Kreuze größer als +/- 20 sein, ist davon auszugehen, daß die Werte fehlerhaft sind. In der Praxis hat sich gezeigt, daß es auch nach dem Kalibrierungsvorgang notwendig sein kann, die Werte manuell weiter zu optimieren. Dazu startet man den X-Server mit dem Befehl X, sieht sich an wie exakt der X-Coursor unter dem berührten Punkt liegt und korrigiert den entsprechenden Wert.

Bild 6: Reihenfolge beim Kalibrierungsvorgang

Weitere Systeme Debianisieren

Diese Anleitung lässt sich grundsätzlich auf viele mit Linux betriebene Embedded-Geräte übertragen. Der Bootloader U-Boot wird auch in vielen kommerziellen Produkten eingesetzt. Sobald man sich seriellen Zugriff auf ein solches Gerät verschafft hat und man somit die Einstellungen des U-Boot manipulieren kann, ist der Weg für eigene Software meist schon frei. Dem Autor des Beitrages ist es anhand der hier beschriebenen Arbeitsschritte gelungen, Debian auf einen günstigen Tablet-PC 11) zu installieren.

Dateien

Listing 1

/etc/X11/xorg.conf
# xorg.conf (X.Org X Window System server configuration file) 
# 
# This file was generated by dexconf, the Debian X Configuration tool, using 
# values from the debconf database. 
# 
# Edit this file with caution, and see the xorg.conf manual page. 
# (Type "man xorg.conf" at the shell prompt.) 
# 
# This file is automatically updated on xserver-xorg package upgrades *only* 
# if it has not been modified since the last upgrade of the xserver-xorg 
# package. 
# 
# If you have edited this file but would like it to be automatically updated 
# again, run the following command: 
#   sudo dpkg-reconfigure -phigh xserver-xorg 
 
Section "InputDevice" 
	Identifier      "Generic Keyboard" 
	Driver          "kbd" 
	Option          "XkbRules"      "xorg" 
	Option          "XkbModel"      "pc104" 
	Option          "XkbLayout"     "de" 
EndSection 
 
Section "InputDevice" 
	Identifier      "Configured Mouse" 
	Driver          "mouse" 
EndSection 
 
Section "Device" 
	Identifier      "Configured Video Device" 
	Option          "UseFBDev"       "true" 
	Driver          "fbdev"
EndSection 
 
Section "Monitor" 
	Identifier      "Configured Monitor" 
EndSection 
 
Section "Screen" 
	Identifier      "Default Screen" 
	Monitor         "Configured Monitor" 
EndSection 
 
Section "InputDevice" 
	Identifier	"Touchpad0" 
	Driver		"evtouch" 
	Option		"Device"	"/dev/input/event1" 
	Option		"CorePointer"		"true" 
	Option		"SendCoreEvents"	"true" 
	Option		"Rotate"		"CW" 
	Option		"MoveLimit"	"10" 
	Option		"MinX"		"118" 
	Option		"MinY"		"78" 
	Option		"MaxX"		"864" 
	Option		"MaxY"		"951" 
	Option		"x0"	"0" 
	Option		"y0"	"0" 
	Option		"x1"	"0" 
	Option		"y1"	"3" 
	Option		"x2"	"0" 
	Option		"y2"	"-3" 
	Option		"x3"	"0" 
	Option		"y3"	"0" 
	Option		"x4"	"0" 
	Option		"y4"	"0" 
	Option		"x5"	"15"
	Option		"y5"	"-2"
	Option		"x6"	"-10" 
	Option		"y6"	"2" 
	Option		"x7"	"0" 
	Option		"y7"	"3" 
	Option		"x8"	"20" 
	Option		"y8"	"1"
#	Option		"Calibrate"	"1"
EndSection

Listing 2

/etc/inittab
...
id:5:initdefault:
...
x:5:once:/bin/su freex -l -c "/usr/bin/startx" > /dev/null 2>&1
...

Fotos

weitere Informationsquellen im Internet

 

 
XHTML 1.1 CSS 2 Creative Commons License
Netaddict Version 6.0 - © 1996-2017 by netaddict.de - Kontakt