2009-06-10 8 views
8

Ich möchte Treiber in C in Linux os, obwohl ich denke, es ist sehr hart. Kann ich Hinweise dazu bekommen, wie ich anfangen soll oder welche Bücher ich folgen soll? Treiber können von meinem USB-Anschluss zur Grafikkarte sein !!Wie man Treiber kodiert?

Ich weiß, wo ich nach Büchern suchen kann, möchte ich wissen, was das Grundwissen, mit dem ich anfangen sollte. Brauche ich Hardware-Kenntnisse und welche spezifischen Bücher sind gut für Anfänger wie mich?

+9

Beginnen Sie nicht mit jedem Satz mit "!!". ;-) –

Antwort

4

versuchen amazon !! Dort gibt es viele Bücher für Fahrer. einige haben Proben 2 !!

+5

Warum der Downvote? Ich mag, wie der Stil der Frage entspricht. – aib

+1

Weil es nicht * hilfreich * ist, denke ich. – Roddy

7

"Linux Device Drivers" (das O'Reilley Buch) von Rubini und Corbet ist das endgültige Buch für Linux Device Drivers.

Cool! Siehe die kostenlose PDF-Version in Roddys Antwort & kristinas Kommentar!

+1

Die dritte Ausgabe ist auch kostenlos online verfügbar unter http://lwn.net/Kernel/LDD3/. – kristina

3

Bevor Sie mit der Entwicklung von Treibern beginnen, sollten Sie zunächst außergewöhnliche C-Kenntnisse und wahrscheinlich etwas Linux-Kernel-Know-how erwerben. Das Entwickeln von Treibern ist nicht trivial und könnte Sie abschrecken, wenn Sie nicht daran gewöhnt sind, auf niedriger Ebene zu programmieren.

Ich könnte The C programming Language empfehlen, wenn Sie nicht an C gewöhnt sind, wie es ist, meiner Meinung nach, der Grund auf C, wenn Sie etwas Programmierhintergrund haben.

+4

Solid C-Fähigkeiten sind sicherlich eine gute Idee, aber die Kernel- und Treiberentwicklung ist nicht beängstigend. Der Einsatz ist höher, wenn Sie einen Fehler machen. :-) –

0

Schauen Sie sich die Quelltexte der aktuellen Treiber an. Ich habe meinen USB-Rndis-Treiber geschrieben, indem ich nur die Kommentare über den Codes gelesen habe.

Holen Sie sich die Kernel-Quelle und schauen Sie sich das Verzeichnis/drivers an. USB-Treiber sind in USB-Verzeichnis, jedoch USB-Treiber zum Netzwerk sind in/net/usb resident.

Sie können viel lernen, indem Sie die Kommentare lesen.

2

Treiber stark in Komplexität unterscheidet sie je nach Gerät. USB-Treiber sind auf der einfachen Seite des Spektrums; GPU-Treiber sind massiv komplex und selbst die Autoren dieser Treiber wissen normalerweise nicht alles, was sie tun. Meine Empfehlung wäre, sich auf Treiber für Hardware zu konzentrieren, die Ihnen persönlich am Herzen liegen, anstatt zu versuchen, ein Alleskönner zu sein. es wird auf lange Sicht einfacher sein.

Alle anderen Antworten auf Dokumentationsquellen und verschiedene Dinge zu lesen sind genau und Sie sollten wirklich eine von ihnen akzeptieren.

Viele der komplexeren Treibergemeinschaften haben ihre eigenen domänenspezifischen Informationen. Wenn Sie einen GPU-Treiber schreiben möchten, haben die DRI/DRM- und Mesa-Communities eigene Wikis und Mailing-Listen, die Ihnen sehr helfen, sowie ihre eigene Dokumentation. http://dri.freedesktop.org/ ist ein guter Startplatz, ebenso wie http://wiki.x.org/.

Hoffe, das hilft!

Verwandte Themen