Gibt es Ressourcen zum Erlernen des Schreibens von Treibern?

26

Ich habe ein gutes Maß an Erfahrung im Design von Hardware und eingebetteten Systemen im Allgemeinen, aber ich habe noch nie einen Treiber für ein Betriebssystem geschrieben.

Ich würde gerne wissen, ob es gute Handbücher gibt, am besten online, obwohl mich gute Bücher interessieren, die mir einen guten Einstieg in das geben, was ich wissen muss, um Treiber für ein Betriebssystem zu entwerfen und zu implementieren.

Hier werden wahrscheinlich Leute auf mich schießen, und obwohl ich gerne eine gute Anleitung sehen würde, egal auf welchem ​​Betriebssystem sie basiert, würde ich gerne eine Anleitung sehen, die auf Windows basiert, hauptsächlich aufgrund der Tatsache, dass die meisten Leute Ich würde ein Produkt verkaufen, würde Fenster haben.

Bitte lassen Sie mich wissen, ob ich zusätzliche Informationen hinzufügen kann, um dies klarer zu machen.

Kortuk
quelle
1
Tolle Frage, mich interessiert auch diese.
Mr. Hedgehog
Ich akzeptierte die allgemeinste Antwort. Um Informationen für jedes Betriebssystem zu erhalten, mochte ich die Antwort. Jobys Antwort war Linux-spezifisch exzellent. Es fiel mir schwer, mich zu entscheiden.
Kortuk

Antworten:

10

Die meisten meiner jüngsten Erfahrungen beim Schreiben von tatsächlichen Betriebssystemtreibern habe ich mit Linux gesammelt, und die beste Referenz für IMO sind die bereits erwähnten Linux-Gerätetreiber, 3rd Edition von Jonathan Corbet, Alessandro Rubini und Greg Kroah-Hartman (2005). Es ist bei Amazon , Safari Books On-Line und auch als kostenloser Download erhältlich .

Weitere Bücher zum gleichen Thema sind Essential Linux Device Drivers von Sreekrishnan Venkateswaran (2008) (ebenfalls in Safari Books Online erhältlich ) und Writing Linux Device Drivers: eine Anleitung mit Übungen (Band 3) von Dr. Jerry Cooperstein (2009).

Für Windows-Gerätetreiber ist das neueste Buch zu diesem Thema (vor zwei Wochen veröffentlicht) der Windows 7-Gerätetreiber von Ronald D. Reeves, Ph.D. (2010). Es ist auch in Safari Books Online verfügbar .

Ein älteres Buch, das sich mit Windows XP befasst, ist: Programming the Microsoft Windows Driver Model, Second Edition , von Walter Oney (2002). Es ist auch in Safari Books Online verfügbar .

Ein weiteres Buch, das vergriffen zu sein scheint, aber in Safari Books Online erhältlich ist, ist die Entwicklung von Treibern mit der Windows Driver Foundation von Penny Orwick und Guy Smith (2007). Ich gehe davon aus, dass es Windows Vista abdecken würde.

Schließlich hat Microsoft Verweise auf viele Blogs usw. , in denen die Treiberentwicklung erörtert wird.

Tcrosley
quelle
Danke, ich würde vorschlagen, dass Sie für Ihren Beitrag auch einen Link zu "Linux Device Drivers" erstellt haben. Ansonsten sehr gründlich.
Kortuk
11

Ein guter Treiber kapselt die Fähigkeiten der Hardware und stellt diese dem Betriebssystem / den Anwendungen auf natürliche Weise zur Verfügung.

Wie dies am besten funktioniert, hängt stark davon ab, auf welches Betriebssystem Sie abzielen und für welche Art von Hardware der Treiber gedacht ist.

Meine Erfahrung ist alles mit Linux und kleinen benutzerdefinierten Echtzeit-Betriebssystemen.

Für Linux würde ich empfehlen, Linux-Gerätetreiber zu lesen . Es bietet eine gute Einführung in die verschiedenen Arten von Linux-Treibern und die Abstraktionen, die das Betriebssystem für sie bereitstellt.

Geräte wie serielle Ports, an denen Daten nacheinander gelesen werden, werden normalerweise von Zeichengerätetreibern mit einem Geräteknoten im Benutzerbereich behandelt, von dem Anwendungen lesen können. catkann aus diesen lesen.

Direktzugriffsgeräte wie Flash-Speicher und Festplatten werden von Blockgeräten verwaltet. ddkann auf diese zugreifen. Schauen Sie sich als gutes Beispiel das Linux-MTD- System an.

Treiber, die nur wenig mit Hardware zu tun haben, müssen mit ziemlicher Sicherheit im Kernel-Space implementiert werden. Sie können ein zur Laufzeit ladbares Kernelmodul erstellen oder Ihren Code statisch im Linux-Kernel ablegen.

Treiber, die auf vorhandenen generischen Treibern wie USB aufbauen, können im Userspace geschrieben werden. Verwenden Sie zum Beispiel libusb .

Toby Jaffey
quelle
4
Linux Device Drivers ist ein gutes Buch. Leider sind diese Dinge sehr betriebssystemspezifisch. Linux ist wahrscheinlich am einfachsten zu schreiben, da es im Quelltextbaum bereits so viele Treiber gibt, die als Referenz dienen. Wenn Sie eingebetteten Code geschrieben haben, um die Peripheriegeräte eines Mikroprozessors anzusteuern, haben Sie wahrscheinlich ein gutes Verständnis für die Grundlagen der Gerätetreiber.
Markrages
Ja, ich entferne meine Kommentare. mein Fehler.
Kortuk
1
Wie bereits erwähnt, ist der Mut eines Treibers, der die eigentliche Hardware steuert, derselbe, unabhängig davon, ob Sie ein Betriebssystem haben oder nicht. Die Hauptunterschiede beim Schreiben von Treibern sind 1) die Schnittstellen müssen in ein Standardmodell (z. B. Öffnen, Schließen, Lesen, Schreiben, Ioctl) für das Betriebssystem passen, und 2) die Methode, in der der Treiber installiert und aktiviert wird.
Tcrosley
1
@tcrosley, Wenn Sie eine Menge Informationen über diese Besonderheiten haben, würde ich gerne eine Antwort dazu sehen.
Kortuk
3

Ich habe noch keine Erfahrung mit dieser Ausgabe, aber ich werde meine zwei Cent geben.

Sie können hier http://www.osr.com/index.html oder hier https://www.osronline.com/index.cfm starten

Hier in Brasilien haben wir einen guten Blog zu diesem Thema. Es ist in Portugiesisch und Englisch geschrieben. Die meisten Artikel sind leider in Portugiesisch.

In diesem Blog gibt es einen portugiesischen Beitrag zu Büchern: http://translate.google.com.br/translate?hl=pt-BR&ie=UTF-8&sl=pt&tl=de&u=http://driverentry.com.br/ Blog /% 3Fp% 3D825 & twu = 1

Ich hoffe ich habe ein wenig geholfen

Daniel Grillo
quelle
Dies ist sehr hilfreich, wenn ich die Frage stelle: "Wo kann ich rechtzeitig online Portugiesisch lernen, um das Schreiben von Treibern zu erlernen?" Vielen Dank für Ihre Mithilfe.
Kortuk
2
Mach dir keine Sorgen um Portugiesisch lernen. Die Links zur Laufwerksentwicklung, die ich bestanden habe, sind auf Englisch. Sogar DriveEntry ist auch in Englisch geschrieben. Leider ist der Post über Bücher in Portugiesisch, aber die Bücher sind in Englisch. Und am wichtigsten sind die Bücher, nicht die Post.
Daniel Grillo