it-swarm.com.de

Wie soll ich mit dem Schreiben von Gerätetreibern beginnen?

Ich möchte lernen, wie man Gerätetreiber schreibt, weil ich denke, dass es Spaß machen würde. Ich benutze ein Mac OS X Macbook, habe aber auch einen Ubuntu-Rechner (läuft auf einem Mac Min). Ich bin ziemlich vertraut mit C und lese gerade dieses Buch . Ich habe einige Links online gefunden, wie Mac Dev Center . Ich mache das, weil es Spaß machen würde. Ich denke, es wäre eine echte Befriedigung, wenn Hardware aufgrund der von mir geschriebenen Software funktioniert.

Ich denke, was ich möchte, sind einige Tipps oder Ratschläge und Anleitungen, und kennt jemand eine Liste von Geräten, die keine Treiber haben, oder kann ich einen Treiber für etwas schreiben, das bereits unterstützt wird? Wertschöpfung). Was ist ein gutes Gerät für den Einstieg? Beiß ich mehr ab, als ich kauen kann? Ich habe keine Angst vor Low-Level-Programmierung oder Assemblierung oder dem erforderlichen Aufwand. Ich hätte wirklich gerne eine Herausforderung!

63
Bjorn Tipling

Für Linux könnten Sie sich das O'Reilly Linux Device Drivers -Buch zulegen oder PDFs online lesen. Meiner Meinung nach ist es einer der besseren Texte zum Thema.

The Linux Kernel Module Programming Guide ist eine weitere gute Ressource.

Möglicherweise möchten Sie auch ein Buch speziell für den Linux-Kernel herunterladen. Zu diesem Zweck habe ich eine Kopie von Robert Loves Linux Kernel Development (2nd Edition) ( rd Edition unterwegs) mitgenommen.

34
jschmier

Das Schreiben eines Gerätetreibers kann ziemlich einfach oder fast beliebig kompliziert sein. Ich war zum Beispiel an einem Projekt beteiligt, bei dem sechs von uns fast drei Jahre gebraucht haben, um EINEN Fehler in einem Gerätetreiber zu beheben. Natürlich haben wir Dutzende anderer Fehler beseitigt, als wir danach gesucht haben ... der Code hat sich immens verbessert. Es stellte sich heraus, dass es sich um einen Patch mit acht Leitungen handelte, der konservativ etwa eine Million Dollar kostete.

Aber als Nebenprojekt dazu habe ich in einer Woche einen Ethernet-Treiber aus dem Chip-Datenblatt geschrieben und eine weitere Woche gebraucht, um ihn zu debuggen. Ich musste es seitdem nicht mehr anfassen.

Es gibt keine Möglichkeit, allgemein zu sagen, wie viel Arbeit ein Fahrer leisten wird. Ein GPU-Treiber könnte Hunderte von Millionen kosten, ein Treiber für eine einzelne LED kostet höchstens ein paar Stunden Arbeit.

26
Andrew McGregor

Wenn Sie Linux-Gerätetreiber entwickeln möchten, sollten Sie unbedingt das frei verfügbare O'Reilly-Buch Linux Device Drivers, Third Edition lesen.

Um nicht unterstützte Hardware-Teile zu finden, für die Sie einen Treiber schreiben könnten, fragen Sie in den Linux-Mailinglisten . Vielleicht ein USB 3.0-Gerät? ;)

4
AndiDog

Für Mac sollten Sie sich das Buch Mac OS X Internals ansehen. Es ist nachdenklich und schwer, aber es macht Spaß, es zu lesen. Es handelt sich hauptsächlich um PowerPC-basierte Macs, enthält jedoch einen Anhang zu Intel-basierten Macs. Werfen Sie für Linux einen Blick auf Linux Device Drivers, 3rd Edition - es ist leichter (kostenlose PDFs online :) und ist wirklich Gerätetreiber-orientiert, könnte ein besserer Start sein.

2