Forum: PC-Programmierung Treiberprogrammierung


von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Hallo,

ich hatte mich schon ein wenig mit der Programmierung von 
Linuxkerneltreibern auseinandergesetzt und auch einen Treiber 
programmiert, der im /proc was zum auslesen bereitstellt.

Ich habe bisher aber noch keine Bücher/Tutorial gefunden, wo erklärt 
wird, wie die Schnittstellen der richtigen Treiber aussehen. Wenn ich z. 
B. einen Druckertreiber schreibe, dann will ich ja auch aus einer 
Anwendung heraus Datei->Drucken wählen können.

Wo finde ich Infos, wie zu üblichen Anwendungen kompatible Treiber 
programmiere?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Druckertreiber sind Treiber, die üblicherweise nicht direkt von 
Anwendungen angesprochen werden, sondern über das vom jeweiligen 
Betriebssystem genutzte Drucksystem, bei Dir vermutlich auch CUPS.

Auch bei anderen Treibern, mit denen eine Interaktion mit einer gewissen 
Anzahl verschiedener Geräte möglich sein kann, wird eine 
Abstraktionsebene verwendet, so mit SANE bei der Ansteuerung von 
Scannern.

von imon (Gast)


Lesenswert?

Die  Informationen welche du brauchst liegen im Kernel unter 
Documentation/
das ist ein guter Punkt anzufangen, um nach Informationen zu suchen.
Abgesehen davon wirst du am anfang selten Treiber fuer kommplett neue 
Bussysteme schreiben, also kannst du dich davon insperieren lassen was 
die anderen machen. Guck dir einfach die Treiber an welche es schon 
gibt, je nach Bus gibt es auch einen dummy Treiber welcher dazu gedacht 
wurde denn zu Kopieren und mit denn, spezifischen Inhalt fuer deine 
Hardware zu füllen.

Eine allgemein gültige Antwort wirst du nicht finden, es wird auch immer 
Programme geben welche nicht alle möglichkeiten deines Treiber ausloten.
Aber zum start reicht zu sehen was machen die anderen und das heist 
leider oft, read the Source... und ein verständnis dafür entwickeln wo 
die Sourcen liegen. Meistens willst du einen Chardevice erstellen, das 
misc device ist zum beispiel sehr einfach zu Implementieren, die Treiber 
hierfuer werden unter drivers/misc gesammelt drivers/spi oder 
drivers/i2c sind anallog hierzu.

von Andreas B. (andreas_b77)


Lesenswert?

Stefan Helmert schrieb:
> ich hatte mich schon ein wenig mit der Programmierung von
> Linuxkerneltreibern auseinandergesetzt und auch einen Treiber
> programmiert, der im /proc was zum auslesen bereitstellt.

Sehr gut, dann beherrschst du schon die wichtigsten Grundlagen.

> Ich habe bisher aber noch keine Bücher/Tutorial gefunden, wo erklärt
> wird, wie die Schnittstellen der richtigen Treiber aussehen. Wenn ich z.
> B. einen Druckertreiber schreibe, dann will ich ja auch aus einer
> Anwendung heraus Datei->Drucken wählen können.

Druckertreiber ist wie schon gesagt ein eher schlechtes Beispiel, denn 
moderne Drucker sind entweder über USB oder Ethernet angeschlossen, da 
braucht es keine speziellen Treiber im Kernel mehr. Die eigentlichen 
Druckertreiber, die die Daten aufbereiten, sind in CUPS.

Bücher gibt es doch auch diverse, im Netz (aber auch als gedrucktes 
Buch) verfügbar ist etwa Linux Device Drivers 
http://lwn.net/Kernel/LDD3/ . Das Problem bei Büchern über Linux 
Kernel-Programmierung ist, dass sie prinzipiell veraltet sind – zum 
Einstieg taugen sie, dann ist es leichter, sich im Kernel selbst zu 
informieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.