Programmierung der PCI-Experimentierkarte unter Linux Von Heinrich Kolter Die gute Nachricht gleich vorweg : Unter Linux lassen sich generelle Hardwareinstallationen wie I/O-Karten, A/D- und D/A-Messkarten ganz einfach und ohne Probleme mit GNU-C programmieren. Linux gehört heutzutage ins Portfolio und ist somit "State-of-the-Art". Jedoch ist aller Anfang schwer, so auch bei diesem umfangreichen Betriebssystem. Seit den ersten Anfängen hat Linux einen weiten Weg zurückgelegt. Anfangs ein reines Spezialisten-System, schlich es sich langsam, aber stetig in das Bewusstsein der User. Selbst im kommerziellen Einsatz scheint sich Linux als Alternative immer mehr zu etablieren, nicht zuletzt bei Lotus-Notes, wo AOL mit Lotus kooperieren will. Hier werden hohe Summen investiert, um neue Suchmaschinen bzw. Datenbanken unter Notes auf Linux zu portieren. Linux ist schon seit langem eine echte Alternative zu herkömmlichen Betriebssystemen. Erst recht zu Windows-NT. Grund dafür ist nicht nur der stabile und flexible Kern allein. Vielmehr geben die kompletten Systeme, so genannte Distributionen, den Anwendern jede Menge Tools und zum Teil mächtige Applikationen mit an die Hand. Die Grundlage für die meisten Linux-Entwicklungen bildet die GNU General Public Licence, eine Software-Lizenz, die sicherstellt, dass jeder den Quellcode weiterentwickeln darf und dass die Arbeit der Autoren auch gewürdigt wird. Aufgrund des freien Copyrights gibt es in vielen Bereichen mehrere Programme, die bestimmte Aufgaben erfüllen, so dass der Anwender und Programmierer hier nicht einmal auf bestimmte Programme beschränkt sind. Mit X11 und KDE sind professionelle, grafische Oberflächen in den Paketen bereits enthalten. Zusammen mit der vom Hersteller der Distribution beigelegten Software wird das System zum wahren Multitalent für alle PC-Anwender und Programmierer. Wenn Sie von Windows auf Linux umsteigen wollen, sollte auf dem PC zunächst eine Linux-Testinstallation parallel zu Windows 95/98 laufen (am besten auf einer zweiten Back-Up Platte). So können Sie sich in das neue Betriebssystem einarbeiten, sich von seiner Stabilität und Leistungsfähigkeit überzeugen und haben gleichzeitig noch das vertraute System zur Verfügung. Voraussetzung dafür sind zwei freie Partitionen auf der Festplatte: eine für das Linux-System selbst, eine weitere (kleinere) für die Linux-Swap-Datei. Sie können Linux dann entweder von DOS aus über das Programm LOADLIN.EXE oder über den Linux-eigenen Bootmanager Lilo (Linux Loader) starten. Mit Lilo erhalten Sie beim PC-Start ein Menü, um zwischen Windows und Linux zu wählen. Von Linux aus können Sie auf Windows-95/98- (FAT, FAT32) oder NT-Partitionen (NTFS - nur lesend) zugreifen und die dort abgelegten Daten benutzen. Wenn Sie bislang mit Microsoft Office gearbeitet haben, macht es keine Schwierigkeit, die damit erstellten Dokumente weiterzuverwenden. Die für Linux verfügbaren Office-Pakete StarOffice, WordPerfect und Applixware besitzen Importfilter für alle wichtigen MS-Dokumentformate. Mit dem Wine-Emulator (Gratis-Download unter http://www.winehq.com, rund 2 MB) lässt sich sogar die eine oder andere Windows-Software unter Linux zum Laufen bringen. Zurück zur Programmierung der PCI-Experimentierkarte. Bei Linux gibt es zum Glück keine getarnten Zugriffsmechanismen, wie sie beispielsweise bei MS-Windows alltäglich sind. Im Gegenteil: Linux bzw. Linux-Anwendungen sind eben alle offen zugänglich und zudem oft noch kostenlos. Vergessen Sie die umständliche Programmierung, die Ihnen andere (MS-)Betriebssysteme abverlangen. Der Hardwarezugriff ist dermaßen einfach, dass jeder ANSI-C Programmierer sofort Erfolg hat. Mit Befehlen wie ioperm und iopl kann die I/O-Port-Welt geöffnet werden, ohne dass zusätzliche Device-Treiber erforderlich sind oder nichteinsehbare, kryptische Includes dazugebunden werden müssen, die angeblich die Programmierung vereinfachen sollen - aber oft nur blauen Dunst vorgaukeln. Die Programmierweise ist ähnlich wie bei einem ANSI-C-Compiler unter DOS, lässt aber neben 8-bit-Zugriffen auch 16-bit und 32-bit Zugriffe zu. Um in den direkten Genuss der Portprogrammierung zu kommen, wird lediglich ein offenes Include aus dem Verzeichnis /asm dazugebunden, und schon stehen die Befehle outb(Wert, Adresse) und inb(Adresse) zur Verfügung. Die Compilierung kann mit XWPE unter KDE oder mit gcc auf der Linux-Konsole bash erfolgen. Auch andere C-Compiler können den Code compilieren und haben keinerlei Verständigungsprobleme, wie sie bei anderen Betriebssystemen geradezu üblich sind. Programmier-Einsteigern sollte ein Komplettpaket wie Debian oder S.u.S.E. ans Herz gelegt werden. Beispielsweise sind ab S.u.S.E. Paket 6.2 alle notwendigen Programme für die erfolgreiche Compilierung des hardwarenahen C-Codes enthalten. Nach der ca. 45-minütigen Installation von S.u.S.E.s Linux kann bereits das erste C-Programm eingegeben und compiliert werden. Natürlich ist die Eingabe unter KDE wesentlich angenehmer als mit einem einfachen Emac-Texteditor auf Konsolenebene, macht in der Sache aber das Gleiche. Ideal ist die Multitasking-Fähigkeit von Linux, da neben der stilvollen Eingabe unter KDE auch ein bash-Fenster auf dem Desktop geöffnet werden kann. So ist es möglich, den Source im Fenster abzuspeichern, um ihn im bash-Fenster anschließend manuell mit gcc zu compilieren. Demnach verpasst man einerseits keine Compilerfehler und ist andererseits sofort in der Lage, das lauffähige Programm in seiner realen Umgebung auszutesten. Bei einem Absturz des Testprogramms kann das bash-Fenster auf der KDE-Oberfläche einfach manuell geschlossen werden, um es anschließend wieder aufzurufen. Linux und KDE müssen dazu nicht einmal verlassen werden. Die Oberfläche bleibt weiterhin stabil und kann der nächsten Eingabe zur Abänderung des Sourcecodes dienen. Hiermit werden die Stärken von Linux ganz klar und deutlich. Kurzum: C programmieren unter Linux macht wieder Spass! Gerade "ältere" Programmierer, die wie ich schon über 20 Jahre lang bei der Sache sind, werden sich hier wieder fast wie zu Hause fühlen, denn unter Linux kommen so manche Abfolgen und Befehlsstrukturen, wie sie früher mit CPM oder später unter DOS alltäglich waren, wieder zum Vorschein. Gleichwohl ist festzustellen, dass Linux von Unix herrührt und doch noch eine Menge zu lernen ist. Die Entwicklung und Verbreitung von Linux ist einzigartig. Seit 1991 wird Linux von einer ungezählten Schar Computer-Freaks in der ganzen Welt entwickelt. Das Ganze geschah und geschieht überwiegend in der Freizeit, nur so zum Spaß und gänzlich ohne Bezahlung. Nicht einmal der Riese Microsoft verfügt über eine solche Anzahl an motivierten und begabten Betriebssystem-Entwicklern. Fehler im System werden über das Internet sofort an den jeweiligen Programmierer weitergegeben und beseitigt. Dies erklärt die schnelle Weiterentwicklung und letztlich die Stabilität des Systems, da alle User ein eigenes Interesse daran haben, dass das System fortwährend verbessert wird. Der Betriebssystem-Kernel, der dann jeweils von Linus Thorvald freigegeben wird, läuft somit sagenhaft stabil. Dass Linux auf dem Vormarsch ist, steht wohl außer Frage, denn IBM wird das Betriebssystem Linux und Open Source auf allen wesentlichen Plattformen unterstützen. Die Datenbank DB2 UDB für Linux ist bereits seit Mitte 1999 verfügbar. Im Laufe des Jahres sollen Schlüsselprodukte des WebSphere-Application-System den Linux-Anwendern zur Verfügung stehen. Der Markt für dieses besonders stabile und weniger Speicherplatz als Windows-NT verbrauchende Betriebssystem dürfte im Jahr 2002 (wie Cliff Miller, Präsident der Pacific Hi-Tech erklärte) ein Volumen von über 20 Milliarden US-Dollar erreichen.