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ß!
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.
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.
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.
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?).
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.