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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.