2016-04-11 9 views
0

Ich freue mich darauf zu lernen, einen typischen Linux-Gerätetreiber zu schreiben. Kann mir jemand Anleitung geben, wie kann ich alle Aspekte eines typischen Linux-Gerätetreibers lernen? Die Beispiele, die ich im Internet sehe, sind viel zu einfach, sie senden einfach eine "Hallo Welt" msg vom Benutzerbereich zum Kernel-Treibermodul und geben "hallo" zurück. Ich möchte fast alle Bereiche auf eine einfache Art und Weise berühren, einem würde man einen echten Weltfahrer gegenüberstellen. Würde ich eine echte Hardware benötigen, um meine Anforderungen zu erfüllen? Kann der Speicher des Systems nicht die Hardware-Peripherie simulieren und ich kann sie als Hardware behandeln und sie mit dem Kernel-Treiber steuern, der gute Operationen abdeckt? Irgendwelche Beispiele/Anleitungen dafür?Schreiben Ende-zu-Ende-Linux-Gerätetreiber

+1

Lesen Sie das Linux-Gerätetreiber-Buch. Es ist kostenlos und hat gute einfache Beispiele. Es ist ein wenig veraltet, aber wird dich auf jeden Fall weiterbringen. https://lwn.net/Kernel/LDD3/ – Joe

Antwort

0

Beispiel Treiber steuern in der Regel nicht echte Hardware. Die QEMU Antwort hier ist eine gute Ausnahme, denke ich.

Es hängt davon ab, auf welchen Typ von Treiber Sie sich konzentrieren möchten. Die meisten Klassen von Treibern, die mit dem Kernel vertrieben werden, haben einige einfachere Treiber, von denen Sie lernen können. Nbd zum Beispiel ist für Block-Subsystem und Loop-Geräte:

https://github.com/torvalds/linux/blob/c05c2ec96bb8b7310da1055c7b9d786a3ec6dc0c/drivers/block/nbd.c

Blick auf den kleinsten Dateigrößen in einem Treiber/xyz Verzeichnis und gehen, bis der Code zu komplex ist.