Dies soll Dokumentation zu Linux -Treibern liefern, insbesondere zu einer Art Wissensbasis. Die Dokumentation ist spärlich und verbreitet sich derzeit im Internet. I2C -Geräte befinden sich in einem Zwei -Line -Bus und sind unentdeckbare Plattformgeräte. Um herauszufinden, ob ein I2CBus existiert und/oder Geräte darauf zu finden sind, können Sie das I2CDETECT -Tool auf verschiedenen Linux -Systemen finden.
Beispiele enthalten
Was ist ein Kobjekt? Siehe Kobject/
Wird verwendet, um mit dem Benutzerraum zu interagieren. Einige Treiber können in Teile, einen I2C- oder Plattformtreiber unterteilt werden, um mit einem Gerät zu interagieren, und einem Misc -Treiber für die Interaktion mit Userspace. Miscent -Treiber können in der Sondenfunktion der Plattform registriert werden. Miscilitiert Benutzerraum Lesen und Schreiben von Anrufen. Miscial -Treiber benötigen keine größeren Nummern und geben nur 1 geringfügige Nummer an. (Treiber/char/misc && misc_register) Es gibt auch (Treiber/Misc), die eine Reihe von Treibern sind, die nicht in andere Kategorien passen. Zwei verschiedene Themen.
Plattformgeräte sind von Natur aus nicht auffindbar, die sie nicht über ihre Anwesenheit informieren können. I2C -Geräte fallen in diese Kategorie. Die Software muss zur Kompilierung ihrer Existenz (über board_info oder Gerätebaum (DTS) wissen.) Sie sind mit Namensanpassungen an Treiber gebunden, die Sie im I2C/ Verzeichnis lernen können. Sollte so schnell wie möglich registriert werden, damit sie verwendet werden können.
USB und PCI würden dann nicht als Plattformgeräte gelten.
Es gibt zwei Anforderungen für die Arbeit mit Plattformgeräten
Beachten Sie diese Dinge über Plattformtreiber
compatible Gerätebaumeigenschaft ausgewählt, die Plattform_Driver.Name in der Treiberplattform_Driver_register entspricht, ist die HauptregisterschnittstellezB ein Beispiel aus der Gerätebaumquelle (DTS) eines kompatiblen Geräts
lkmc_platform_device@101e9000 {
compatible = "lkmc_platform_device";
reg = <0x101e9000 0x1000>;
interrupts = <18>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&pclk>;
clock-names = "apb_pclk";
lkmc-asdf = <0x12345678>;
};
Nicht Plattformgeräte wie PCI sind von Natur aus auffindbar . Dies bedeutet, dass Software während der Laufzeit neue Geräte finden kann.
Beachten Sie diese Dinge über nicht plattformübergreifende Treiber
device_add und device_del wie möglich einfügen und entfernen. Die Prüfung ist nicht automatisch, kann aber nach dem Start mit Echo 1>/sys/bus/pci/rescan durchgeführt werden.