GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann ich ähnliche Funktionen wie Interrupts im Linux-Benutzerbereich erreichen?

Wenn ich Ihre Frage verstehe, klingt dieser Artikel wie das, wonach Sie suchen. Der Artikel trägt den Titel:Gerätetreiber im Benutzerbereich.

Auszug

UIO-Treiber

Linux bietet ein Standard-UIO-Framework (User I/O) zum Entwickeln von User-Space-basierten Gerätetreibern. Das UIO-Framework definiert eine kleine Kernel-Space-Komponente, die zwei Hauptaufgaben erfüllt:

  • a. Speicherbereiche des Geräts dem Benutzerbereich anzeigen.
  • b. Registrieren Sie sich für Geräteunterbrechungen und stellen Sie dem Benutzerraum eine Unterbrechungsanzeige zur Verfügung.

Die Kernelspace-UIO-Komponente stellt das Gerät dann über eine Reihe von sysfs-Einträgen wie /dev/uioXX bereit. Die User-Space-Komponente sucht nach diesen Einträgen, liest die Geräteadressbereiche und bildet sie auf den User-Space-Speicher ab.

Die User-Space-Komponente kann alle Geräteverwaltungsaufgaben ausführen, einschließlich E/A vom Gerät. Für Interrupts muss es jedoch ein blockierendes read () auf dem Geräteeintrag ausführen, was dazu führt, dass die Kernel-Komponente die User-Space-Anwendung in den Ruhezustand versetzt und sie aufweckt, sobald ein Interrupt empfangen wird.

Ich habe das noch nie zuvor gemacht, daher kann ich Ihnen nicht viel mehr Anleitung bieten, aber ich dachte, es könnte für Ihre Suche hilfreich sein.


In Anlehnung an @RBerteig enthält der BeagleBone Black PRU-32-Bit-Mikrocontroller (Programmable Real-Time Unit).

Es sieht nicht so aus, als gäbe es eine riesige Community, die diese Dinge voll ausnutzt. Ich bin mir nicht einmal sicher, ob es dafür einen guten Compiler gibt. Die Vorteile gegenüber einer Baugruppe aus einem SBC und einem Mikrocontroller oder einer Mikrocontroller-Platine bestehen darin, dass der PRU-Code vom Haupt-ARM kommen kann und ein gemeinsam genutzter Speicher ziemlich praktisch ist.

Ich kann nicht sagen, dass ich dies verwendet habe oder dass ich noch mehr als einige Beispiele auf meinen BeagleBone Blacks ausgeführt habe, aber die in dieser Frage zum Ausdruck gebrachten Anforderungen könnten eines der Dinge sein, die einen Entwickler mit diesen Anforderungen dazu bringen können Schwarz und weg vom Pi.


Linux
  1. Linux – Was sind die Werte der Device Tree Interrupts-Eigenschaft?

  2. Linux-su-Befehl

  3. Wie können Sie den Chipsatz eines USB-Geräts unter Linux identifizieren?

  4. Wie schreibe ich einen Userspace-Linux-Block-Gerätetreiber?

  5. Linux, warum kann ich nicht schreiben, obwohl ich Gruppenrechte habe?

Su-Befehl in Linux (Benutzer wechseln)

ID-Befehl unter Linux

Usermod-Befehl unter Linux

So ändern Sie den Benutzer unter Linux

Wie kann ich die Festplattenauslastung unter Linux überwachen?

Wie kann ich feststellen, ob ein iscsi-gerät ein gemountetes Linux-Dateisystem ist?