Linux Treiber doppelt laden

Gast #3966166
Hallo,

ich habe an einem embedded Linux-Board (Gnublin) zwei gleichartige 
Geräte an einem SPI Bus (UART mit sc16is7x2) hängen. Den Treiber kann 
man mit:

modprobe sc16is7x2 cs_pin=2

laden. Wie kann ich einen Treiber doppelt laden mit einem anderen 
Parameter, so dass ich beide Geräte gleichzeitig verwenden kann?

Gruß
Stefan
Gast #3966468
Manche Linux-Module schlucken Komma-separierte Listen in Parametern, 
wenn sie mehrfach instantiiert werden sollen.
Versuch also vielleicht mal "cs_pin=2,3"
Gast #3966470
Du kannst ein Module nicht zweimal laden.  Und es scheint, dass dieser 
Treiber nur einen einzelnen Chip unterstützt.  Wend dich doch mal an den 
Author des Treibers.
Gast #3966608
Stefan schrieb:
> Alles klar, d.h. ich muss mir den Treiber umschreiben und dann darin
> fest 2 Strukturen definieren oder halt dynamisch arbeiten

Ich hab den Treiber jetzt nur überflogen, aber wenn du den nicht 
dynamisch hinzufügst, sondern über die Platform-Definition deines 
Boards, müssten eigentlich mehrere gleichzeitig gehen.

Der Treiber hat soweit ich das sehe nämlich keine Einschränkung auf "nur 
eine Instanz", diese kommt, wenn überhaupt, aus dem modprobe / 
Auswertung der Modulparameter / Bereitstellung des "struct spi_device".
Gast #3966817
@Linksammler "nicht dynamisch" heißt fest in den Kernel compilieren, 
richtig?

@A.H.: die Option -o kennt dieser Treiber offenbar nicht:

modprobe sc16is7x2 -o test1
modprobe: invalid option -- 'o'
Usage: modprobe [-v] [-V] [-C config-file] [-d <dirname> ] [-n] [-i] 
[-q] [-b] [-o <modname>] [ --dump-modversions ] <modname> 
[parameters...]
modprobe -r [-n] [-i] [-v] <modulename> ...
modprobe -l -t <dirname> [ -a <modulename> ...]
#3967002
Stefan schrieb:
> @A.H.: die Option -o kennt dieser Treiber offenbar nicht:

Die Option ist nicht für den Treiber, sondern für modprobe. Sie soll 
das Modul unter einem anderen Namen laden. Aus Sicht des Kernels muss 
meines Wissens nach nur der Name eines Moduls eindeutig sein, nicht aber 
das Modul selber. Man kann ein Modul also prinzipiell mehrfach laden, 
wenn man es unter unterschiedlichen Namen tut. Ob das wirklich 
funktioniert hängt natürlich vom Modul ab. Wenn mehrere Instanzen 
versuchen, die gleichen Ressourcen exklusiv zu nutzen, wird es Probleme 
geben.

Allerdings war die angegebene Reihenfolge falsch. (Tut mit Leid, ich 
hab's schon länger nicht mehr gemacht.) Aus dem Dump geht aber hervor, 
wie es richtig heißen müsste:
1
modprobe -o <name_1> sc16is7x2 cs_pin=2
2
modprobe -o <name_2> sc16is7x2 cs_pin=<dein anderes pin>
Gast #3967841
Eigentlich sollte es ja auch reichen, den Treiber nur einmal zu laden, 
und zweifach zu nutzen.

Evtl: Treiber ganz ohne "cs_pin" Option laden, dann über sysfs die 
Verbindung zwischen CS-Pin und Chip-Instanz herstellen:

echo "spi0.2" > /sys/bus/spi/drivers/sc16is7x2/bind
echo "spi0.3" > /sys/bus/spi/drivers/sc16is7x2/bind

(Achtung: Mangels passender Hardware zum Testen in Griffweite sind die 
Parameter/Pfade/Echo-Texte oben grob geraten. Ausprobieren/Doku lesen...
Und: Wenn dein Kernel recht alt ist, kann das auch ganz anders laufen)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.