Ich würde gerne 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 eine Ubuntu-Maschine (läuft auf einem Mac Min). Ich bin ziemlich vertraut mit C und lese gerade dieses Buch . Ich habe einige Links online gefunden, wie zum Beispiel Mac Dev Center . Ich mache das, weil es Spaß machen würde. Ich denke, es wäre wirklich erfreulich, 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 (würde den ersteren bevorzugen, also bin ich eigentlich Wertschöpfung). Was ist ein gutes Gerät für den Einstieg? Beiße ich mehr ab, als ich kauen kann? Ich habe keine Angst vor einfacher Programmierung oder Montage oder vor dem Aufwand, der erforderlich ist. Ich hätte wirklich gerne eine Herausforderung!
Antworten:
Unter Linux können Sie das Buch mit den O'Reilly Linux-Gerätetreibern lesen oder PDFs online lesen . Meiner Meinung nach ist es einer der besseren Texte zu diesem Thema.
Das Linux Kernel Module Programming Guide ist eine weitere gute Ressource.
Möglicherweise möchten Sie auch ein Buch speziell zum Linux-Kernel abholen. Zu diesem Zweck habe ich eine Kopie von Robert Loves Linux Kernel Development (2. Ausgabe) ( 3. Ausgabe unterwegs) abgeholt .
quelle
Das Schreiben eines Gerätetreibers kann ziemlich einfach oder fast willkürlich kompliziert sein. Zum Beispiel war ich 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 behoben, während wir danach gesucht haben ... der Code hat sich immens verbessert. Es stellte sich heraus, dass es sich bei dem Fix um einen Patch mit acht Zeilen handelte, der konservativ etwa eine Million Dollar kostete.
Aber als Nebenprojekt dazu schrieb ich in einer Woche einen Ethernet-Treiber aus dem Chip-Datenblatt und brauchte eine weitere Woche, um ihn zu debuggen. Ich musste es seitdem nicht mehr anfassen.
Es gibt im Allgemeinen keine Möglichkeit zu sagen, wie viel Arbeit ein Fahrer leisten wird. Ein GPU-Treiber kann Hunderte von Millionen kosten, ein Treiber für eine einzelne LED kostet höchstens ein paar Stunden Arbeit.
quelle
Wenn Sie sich für die Entwicklung von Linux-Gerätetreibern entscheiden möchten, ist das frei verfügbare O'Reilly-Buch Linux Device Drivers, Third Edition ein Muss.
Fragen Sie in den Linux-Mailinglisten nach nicht unterstützten Hardwareteilen, für die Sie einen Treiber schreiben können . Vielleicht ein USB 3.0-Gerät? ;)
quelle
Für Mac sollten Sie sich das Buch Mac OS X Internals ansehen . Es ist nachdenklich und schwer, aber es macht Spaß zu lesen. Es handelt sich hauptsächlich um PowerPC-basierte Macs, es gibt jedoch einen Anhang zu Intel-basierten Macs. Für Linux werfen Sie einen Blick auf Linux Device Drivers, 3rd Edition - es ist leichter (kostenlose PDFs online :) und wirklich gerätetreiberorientiert, könnte ein besserer Start sein.
quelle