linux-device-driver

Gerätetreiber übernehmen im Linux-Kernel eine besondere Rolle. Es sind programmatisch abstrahierte "Black Boxes", die ein bestimmtes Hardware-Teil auf eine wohldefinierte interne Programmierschnittstelle reagieren lassen. Sie verbergen vollständig die Details, wie das Gerät funktioniert.
3
Antworten

Wie kann skb in einem bestimmten Punkt des Linux-Netzwerk-Stacks gedrängt werden?

Ich möchte skb zu prerouting point des Linux-Netzwerk-Stacks schieben. Gibt es eine Möglichkeit, dies zu tun? Ich habe die Funktionen dev_queue_xmit() und netif_rx() verwendet, aber ich glaube nicht, dass sie skb in prerouting point...
13.01.2014, 08:00
1
Antwort

Linux-Kernel-Modul Programmierung: Makefile

Beim Lernen von Linux-Kernel-Modulen kann ich (so weit von zwei Quellen entfernt) zwei Möglichkeiten sehen, Makefile zu schreiben. Das erste ist etwas wie: %Vor% Letzteres ist weniger komplex: %Vor% Jede Makefile-Kompilierung führt zu e...
12.06.2013, 12:25
2
Antworten

Linux-Kernel-Treiber: Welches Modell für den NVRAM-Zugriff?

Ich habe gerade einen RTC-Treiber für einen NXP-RTC-Chip auf meinem Board geschrieben, es funktioniert großartig. Dieser Chip hat auch einige batteriegestützte RAM, die ich einer Benutzerraumanwendung zur Verfügung stellen möchte. Das RTC-Framew...
29.06.2010, 00:15
1
Antwort

___ qstntxt ___

Einige statistische Informationen unserer benutzerdefinierten Hardware werden angezeigt, wenn der Benutzer nach einem Befehl im Linux-Benutzerbereich fragt. Diese Implementierung verwendet derzeit die PROC-Schnittstelle. Wir fingen an, weitere Statistikinformationen hinzuzufügen, dann stießen wir auf ein Problem, bei dem der bestimmte Statistikbefehl zweimal ausgeführt werden musste, um die gesamten Daten zu erhalten, da die PROC-Schnittstelle auf 1 Seite beschränkt war.

Wie oben erwähnt, ist der Datentransfer zwischen dem Kernel und dem Benutzerraum nicht kritisch, aber gemäß den Daten können einige Entscheidungen vom Benutzer getroffen werden. Unsere Anforderung an dieses Schnittstellendesign ist, dass es in der Lage sein sollte, Datenmengen von mehr als 8192 Bytes zu übertragen, und der Befehl muss minimale Kernel-Ressourcen (wie Sperren usw.) verwenden und muss schnell sein.

Die Verwendung von ioctl kann das Problem lösen, aber da der Befehl das Gerät nicht genau steuert, sondern einige statistische Informationen sammelt, ist es nicht sicher, ob es ein guter Mechanismus ist, wie unter Linux zu verwenden. Wir verwenden derzeit 3.4 Kernel; nicht sicher, ob Netlink in dieser Version verlustbehaftet ist (in früheren Versionen stieß ich auf Probleme wie wenn die Warteschlange voll wird, fängt Socket an, Daten zu löschen). mmap ist eine weitere Option. Kann mir jemand vorschlagen, was die beste Schnittstelle zu verwenden wäre

    
___ answer12430609 ___

Sie können einen ioctl IO-Aufruf (statt IOR, IOW oder IORW) durchführen. Ioctls können sehr nützlich sein, um Informationen zu sammeln. Auf diese Weise haben Sie eine große Flexibilität, da Sie Puffer oder Strukturen unterschiedlicher Größe übergeben können, um sie mit Daten zu füllen.

    
___ tag123linuxdevicedriver ___ Gerätetreiber übernehmen im Linux-Kernel eine besondere Rolle. Es sind programmatisch abstrahierte "Black Boxes", die ein bestimmtes Hardware-Teil auf eine wohldefinierte interne Programmierschnittstelle reagieren lassen. Sie verbergen vollständig die Details, wie das Gerät funktioniert. ___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren ___

Einige statistische Informationen unserer benutzerdefinierten Hardware werden angezeigt, wenn der Benutzer nach einem Befehl im Linux-Benutzerbereich fragt. Diese Implementierung verwendet derzeit die PROC-Schnittstelle. Wir fingen an, weitere S...
16.07.2012, 09:27
1
Antwort

MTD Erase Blockgröße von Null für SRAM

Raffinierte Frage Wie liest und schreibt man Textinformationen von einem MTD SRAM-Gerät mit der Löschblockgröße Null? Anmerkungen: Ich verwende den 23K256 Treiber Versuche, MTD-Util-Tools zu verwenden, sind fehlgeschlagen, weil...
18.10.2017, 17:19
3
Antworten

Wie testet man den Kernel auf Kernel Panics?

Ich teste den Linux-Kernel auf einem Embedded-Gerät und möchte Situationen / Szenarien finden, in denen der Linux-Kernel Panics auslösen würde. Können Sie einige Testschritte vorschlagen (manuell oder mit Code automatisiert), um Kernel Panics...
22.02.2011, 23:06