Linux-Kernel: Device durch Treiber anmelden

C

chackie-lee

Mitglied
Hallo zusammen,

ich versuche seit geraumer Zeit nen Treiber für Video4Linux2 zu erstellen.
Sieht bis jetzt ganz gut aus, allerdings habe ich noch 1-2 Verständnisfragen.

1) Wer kümmert sich um das automatische Anlegen eines Device?
Wenn ich ne UBS-Cam anschließe, wird automatisch video0 angelegt.
Erstellt der Kernel video0, da er nen Video-Device entdeckt hat?
Oder erstellt der Kernel video0, da er nen Video-Treiber geladen hat?
Oder erstellt mein Treiber video0?

2) Habe versucht nen Video Treiber (ohne angeschlossener Hardware) zu laden und dann mit mknod mir selbst mein Device mit passender Major-Nummer erstellt.
Doch wenn ich dann per cat darauf zugreifen will, existiert angeblich mein Device nicht.

3) In proc/devices sollen angeblich die Treiber inkl. Major stehen.
Allerdings steht auf meinen System dort immer nur video4linux mit Major 81. Die video-Treiber melden sich aber doch beim Kernel an und sollten dann doch auch dort stehen, oder wird das alles über v4l gehandelt?!

4) Habe gelesen, dass Treiber nur initialisiert werden können, wenn sie an irgendeine Hardware gebunden sind. PWC-Treiber an USB oder der VIVI-Treiber an PCI, obwohl er rein virtuell ist.
Möchte nämlich erstmal einen virtuellen Treiber kreieren, der mir einfach nur ein Frame aus einer Datei ausliest und übergibt. Also nichts mit USB, PCI oder PPI.
Doch wie melde ich so einen Treiber an und sorg dafür, dass video0 erstellt wird?

Ok, sind insgesamt 4 Fragen geworden.
Ich hoffe der eine oder andere hat vielleicht ein paar Antworten für mich oder Links, wo ich passende Informationen finde.

Noch nen schönen Freitag,
chackie-lee
 
Moin,

wirklich niemand auch nur eine Antwort auf meine Fragen? :hilfe2:
 
2) Habe versucht nen Video Treiber (ohne angeschlossener Hardware) zu laden und dann mit mknod mir selbst mein Device mit passender Major-Nummer erstellt.
Doch wenn ich dann per cat darauf zugreifen will, existiert angeblich mein Device nicht.

Ich habe mich mit Treiberprogrammierung noch nicht auseinandergesetzt, doch wenn nichts angeschlossen ist, scheint die Auskunft doch korrekt zu sein, dass das Geraet nicht existiert .

Welche Quelle benutzt Du denn, um Dich ueber die Kernelschnittstellen zu informieren? Soweit ich weiss, gibt es von O'Reilly ein Buch zur Kernelprogrammierung, vielleicht hilft das ja weiter?
 
Hi rikola,

ja, der Treiber funktioniert richtig.

Allerdings muss doch irgendwo geregelt werden, wer für das Anlegen des Device-Nodes verantwortlich, so dass man zum Testen manuell eines anlegen und registrieren kann und dann versucht erstmal allgemein mit dem Treiber zu kommunizieren.

Der erste Schritt soll nämlich ein Dummy-Treiber sein, der als Device video0 hat und erstmal nur ein paar Status-Daten zurückgibt. Allerdings brauche ich zur Kommunikation ein video-Device. Und manuelles Anlegen funktioniert nicht und alle bis jetzt angeschauten Treiber vivi, Micron MT0T001 haben eine Abhängigkeit zu irgendeinem Bus (vivi will PCI, Micron I2C/PPI) und bei Micron muss ein Device angeschlossen sein, damit in /dev/ ein video-Device angelegt wird.
Und diese Abhängigkeit würde ich nun erstmal gerne umgehen, nur leider finde ich das Anlegen der video-devices in keinem der besagten Treiber.

Also rätsel ich gerade herum wer durch was zum Anlegen veranlasst wird.

Das vorgeschlagene Buch kenne ich, hier der Link zum deutschen open-Book.
Zusätzlich verwende ich noch "Linuxtreiber entwickeln" von Quade/Kunst.

Leider sind die besagten Bücher nicht ganz aktuell und auf /dev/ wird zwar eingegangen, aber wer jetzt was warum anlegt und welche möglichen Alternativen es gibt wird leider nicht erläutert.

Gruß
chackie-lee
 
Hi,

danke für den Tipp.
Da es sich bei meiner Distri um uClinux handelt, wird anscheinend mdev von busybox verwendet.
Zwar weiß ich, wie ich damit statische Nodes anlege. Aber das dynamische Einbinden scheint recht tricky zu sein. Mal gucken ob ich was herausfinde.

Grüße
chackie-lee
 

Ähnliche Themen

[openSuse10.2] SATA mal wieder...

Wine Soundprobleme mit SoundMAX AD1986A unter Linux (Asus M2NPV-VM)

ati 9500 pro Treiber macht probleme XD

Externe Medien nicht mountbar

IrDA unterstützung durch LIRC

Zurück
Oben