xr232random 1.2.0

Installation

Schnellstart

Für eilige oder erfahrene Benutzer sei folgender Shell-Auszug gegeben. Die Hardware XR-232 ist an der ersten seriellen Schnittstelle angeschlossen, und eine Shell ist geöffnet. Alle anderen springen bitte zur nächsten Headline „Voraussetzungen“.

linux~/ # tar -xvzf xr232random-1.2.0.tar.gz
linux~/ # cd xr232random-1.2.0
linux~/ # cat COPYING
linux~/ # make
linux~/ # make xrutil
linux~/ # su
linux~/ # insmod xr232random.ko
linux~/ # cat /dev/xr232random0
[A#$i¥¥®¾¨²¶¥£¢££¢§¦DA! ...
linux~/ # ./xrutil -h
linux~/ # ./xrutil -b 57400
linux~/ # ./xrutil -p hex
0e 47 4f f9 5a c1 d0 23 ...

O.K. Alles läuft, viel Spaß!

Voraussetzungen

Hardware

Software und Betriebssystem

Empfohlene Werkzeuge zum Übersetzen seien der GNU C-Compiler GCC, make, sowie die GNU Binutils. Bezug via Paketmanager oder direkt von http://www.gnu.org/.

Die serielle Schnittstelle sollte mit dem UART 16550D ausgestattet, oder zumindest verwandt mit der 16550-Serie sein.

Die Quelldaten zum aktuellen Kernel können über http://www.kernel.org/, oder passend zum Betriebssystem über den Packetmanager bezogen werden.

Die XR-232 Hardware gibt es auf der Webseite von Julien Thomas.

Quellcode übersetzen

Leider gibt es noch keine einfache Installation über den Paketmanager, so muss die Installation von Hand vorgenommen werden, was aber auch kein Problem darstellt: Nach dem Download der komprimierten Datei xr232random.tar.gz entpackt man die Sourcen via:

linux~/ # tar -xvzf xr232random-1.2.0.tar.gz
...
linux~/ # cd xr232random

Ein Aufruf von 'ls' sollte dann in etwa folgende Dateien auflisten:

linux~/ # ls
COPYING
Makfile
dl
xr232random.c
xrutil.c
xrstats.c

Die für die Erstellung (Kompilierung) des Devices wichtige Dateien sind das Makefile, sowie xr232random.c. Durch die Eingabe von 'make' wird die Kompilierung von xr232random.c gestartet, und das Device xr232random.ko erstellt:

linux~/ # make
...

Beim Übersetzen werden einige Dateien erzeugt, die im weiteren Verlauf irrelevant sind, diese können durch folgende Eingabe entfernt werden:

linux~/ # make clean

Hat der Befehl 'make' keine Fehlermeldungen ausgegeben, befindet sich der neu erstellte Gerätetreiber xr232random.ko nun im selben Verzeichnis:

linux~/ # ls
...
xr232random.c
xr232random.ko
...

Falls xr232random.ko widererwartens nicht aufgelistet ist, ist wohl beim 'make' ein Fehler aufgetreten. Dann gilt es die Fehlermeldung zu analysieren, und entsprechend darauf zu reagieren. Insbesondere ist zu Prüfen, ob die Systemvoraussetzungen erfüllt sind. Falls gar kein fortkommen, hilft eventuell eine E-Mail an den Autor jochen_brenner@gmx.de: Fehlermeldung angeben, beschreiben was passiert, Betriebssystem und Kernelversion ('uname -a') angeben, und nicht böse sein, wenn der Autor in diesem speziellen Fall keine Lösung parat hat.

Den Gerätetreiber starten

Während die bisherigen Schritte im User-Modus ausgeführt werden konnten (und auch sollten), muss der Gerätetreiber mit Rechten des Superusers gestartet werden:

linux~/ # su
Passwort: *****
root:/home/user/xr232random #

Nach dem Wechsel zum Superuser erfolgt der Start des Gerätetreibers durch folgende Eingabe:

root:/home/user/xr232random # insmod xr232random.ko
root:/home/user/xr232random # 

Das war es schon! Gratulation.
Ob wirklich alles geklappt hat? Wenn sonst keine Fehlermeldung kam: Ja. Eine erste Überprufung erfolgt mit dem Befehl 'lsmod', der alle laufenden Module auflistet:

root:/home/user/xr232random # lsmod
...
xr232random
...

Entfernt wird der Treiber mit dem Befehl 'rmmod xr232random'
 
Alternativen zum Start des Gerätetreibers
Oben Beschriebene Start-Prozedur hat den Nachteil, dass das Device nur vom Superuser betrieben werden kann. Eine einfache (zugegebenermaßen etwas 'dreckige') Abhilfe, bietet das beigelegte Shell-Skript 'dl', welches beim Start ebenfalls den Gerätetreiber lädt, aber anschließend noch entsprechende Nutzerrechte für 'normale' Benutzer setzt. Das Hilfprogramm 'dl' muss dafür ausführbar sein (chmod)

root:/home/user/xr232random # chmod u+x dl
root:/home/user/xr232random # ./dl i

Genauso einfach kann der Gerätetreiber via './dl r' entfernt werden. Noch eleganter ist der Start des Gerätetreibers, wenn das Programm 'sudo' installiert ist, dann muss nämlich nicht explizit in den Modus des Superusers gewechselt werden:

linux~/ # ./dl is

Der so eingebundene Gerätetreiber kann via './dl rs' entfernt werden.
Der aller eleganteste Weg den Gerätetreiber einzubinden ist das Laden beim Systemstart. Da Linux auch hier sehr viele Wege zur Verfügung stellt, soll der interessierte Leser an dieser Stelle auf einschlägige Bücher, Dokumentationen oder eigene Erfahrungswerte zurückgreifen.

Der erste Zugriff

Da es sich bei xr232random um einen Linux-Gerätetreiber handelt, unterstützt er natürlich die nativen Linux-Befehle. So kann an dieser Stelle ein erster Test mit dem Linux-Befehl 'cat' erfolgen:

linux~/ # cat /dev/xr232random0
[J#$i¥¥®¾¨²¶¥£¢££¢§¦DA! ....

Ausnahmsweise ist es mal Positiv, wenn hier eine wirre Zeichenfolge auf der Konsole ausgedruckt wird, gelegentlich begleitet von Piepsern aus dem PC-Speaker. Gratulation, es ist geschafft, das Device läuft!!!

Falls nichts passiert, außer ein blinkender Cursor in der nächsten Zeile, dann liegt offensichtlich ein Problem vor. Dann ist zunächst zu prüfen, ob die Hardware an der richtigen Schnittstelle angeschlossen ist und die Stromversorgung stimmt. Ggf. ist ein Veruch an der zweiten seriellen Schnittstelle via '# cat /dev/xr232random1' durchzuführen. Als letzter Fehler könnten seitens der Software noch mangelnde Leserechte auf das Device in Frage kommen (mittels 'chmod a+r /dev/xr232random0' kann das Device allen Usern zugänglich gemacht werden). Sofern in einem der vorigen Schritte ein Fehler auftrat, ist dieser natürlich als aller erstes zu beheben. Ansonsten könnte es sich fast nur noch um einen Fehler der Hardware selbst handeln (kalte Lötstelle?).

Das eigene Programm

Jetzt ist es vermutlich Zeit, das eigene Programm für den frisch installierten Gerätetreiber zu schreiben, oder die Hardware auf Herz und Nieren zu prüfen. Dem Quellcode liegen hierfür die Tools 'xrutil' und 'xrstat' als Vorlage für eigene Projekte bei. Diese Tools und ein weiteres einfaches Beispielprogramm sind im Menüpunkt 'Beispiele' genauer erklärt.