Entwicklung von Gerätetreibern

July 18

Entwicklung von Gerätetreibern

Ein Gerätetreiber ist ein Stück Software, das erleichtert die Interaktion zwischen Anwendungsprogrammen und ein Hardware-Gerät an den Computer angeschlossen. Ein Gerätetreiber ist sowohl Hardware-als auch gerätespezifisch. In einigen Fällen kann die Durchführung eines Treibers in logische und physische Schichten, so dass einen Teil des Codes durch eine ähnliche Klasse Geräte, wie Drucker oder Monitor geteilt werden getrennt werden. Das Betriebssystem (OS) definiert spezifische Mechanismen, die Anwendungen zu erfahren über die Verfügbarkeit und die Fähigkeiten eines Hardwaregeräts ermöglichen und Programm Verhaltensweisen seiner Funktionen integrieren.

Anweisungen

1 Studieren Sie die Handbücher, die die Mechanismen bereitgestellt durch das Hardware-Gerät seine Funktionen steuern zu beschreiben. Interaktionen haben in der Regel die Form von Signalen, die Befehle zugeordnet, die unterstützte Verhaltensweisen zu produzieren.

2 Erlernen Sie die Grundlagen des Schreibens eines Gerätetreibers für Ihr Ziel-Betriebssystem. Dies stellt eine generelle Vorstellung des Prozesses zu folgen, um Hardware-Services zugänglich zu machen. Die Treiberframework gibt die Details der Verwendung von Ausnahmen, die auf der Kernel-Ebene in der Regel nur für das Betriebssystem bedienen zu können.

3 Schreiben Sie einen einfachen Shell-Treiber, der die grundlegenden Mechanismen um einen Gerätetreiber mit einer Anwendung verbinden ermöglicht. Die meisten Frameworks bieten Beispiele und Lernprogramm Code, die eine einfache Implementierung produzieren, die als Grundlage für Ihren Treiber verwendet werden können. Diese Shell sollte die Mechanismen zum richtig starten und Herunterfahren der Fahrer vor und nach bestimmten Aufrufe bieten.

4 Bestimmen Sie die einfachste mögliche Hardwarefunktion, die Sie implementieren können. Diese Übung stellt die Grundlagen der Programmierung einer Interaktion, überprüfen, dass die Hardware ordnungsgemäß an den Computer angeschlossen ist und zu kommunizieren. Es ist üblich, mit einer einfachen unidirektionalen Anfrage zu starten, die einen Licht oder akustische Mechanismus zur Bestätigung der erfolgreichen Übermittlung der Nachricht aktiviert. Dabei lernen Sie, wie zu initiieren, zu senden und eine Interaktion mit dem Gerät zu schließen.

5 Gehen Sie komplexere Interaktionen eine zu einem Zeitpunkt an, aufbauend auf die vorherigen Schritte gewonnenen Erkenntnisse. Beispiele sind Operationen, die auf eine Daten-Antwort an den Treiber entweder synchron oder asynchron zurückgegeben werden warten. Diese Interaktionen können verlangen, Implementieren von Mechanismen, die Ausführung zu blockieren, bis eine Rückmeldung empfangen wird oder die Eingabe eines Staates, das Erhalt einer Antwort und Reaktion zu einem späteren Zeitpunkt ermöglicht.

6 Implementieren von Datenmanipulationen Ergebnisse in Form von der aufrufenden Anwendung erwartet. Einige Treiber-Frameworks ermöglichen die Trennung von Code in Kernel und Ebenen. Benutzerebene, wo Anwendungen arbeiten, ist stärker eingeschränkt, aber weniger in der Lage zu System führen Instabilität. Wenn das Betriebssystem dieses Feature unterstützt, sind diese Manipulationen Kandidaten auf Benutzerebene umgesetzt werden, wenn sie keine Kernel-Ebene Ausnahmen erfordern.

7 Die Daten an die Anwendung zurück und schließen Sie richtig Ressourcen, die vom Treiber verwendet wurden. In einigen Fällen kann ein Treiber direkte Interaktion mit dem Gerät durch die Anwendung unterstützen. In diesem Fall muss der Fahrer halten Mittel bis zum Herunterfahren zu einem späteren Zeitpunkt ausdrücklich angewiesen.

Tipps & Warnungen

  • Es ist einfacher, die grundlegenden Konzepte und Muster der serielle ein-/Ausgabe (e/a) Verarbeitung lernen mithilfe der Benutzer-Level-System-Schnittstellen zur Interaktion mit einfachen Textdateien. Kernel-Level-Treiber I/O-Schnittstellen sind im Wesentlichen ähnlich.
  • Ein virtueller Gerätetreiber ist eine besondere Variante der Treibersoftware, die Dienste emuliert, die von Hardware ohne Verbindung zu einem physischen Gerät bereitgestellt werden könnten.
  • Softwarefehler im Code geschrieben auf der Kernelebene tragen ein hohes Risiko der Instabilität des Systems zu erstellen. Es ist wichtig, dass Softwarelogik werden sorgfältig entwickelt und getestet von einem qualifizierten Softwareingenieur, die Verringerung des Risikos durch sorgfältige Teststrategien kann.