Markus989
Posts: 7
Joined: Thu Jun 06, 2013 9:22 am

SPI Protokoll Driver am Kernel anmelden

Thu Jun 06, 2013 9:35 am

Servus,

ich bin gerade dabei einen SPI-Treiber für das RPi zu schreiben. Zunächst wollte ich durch das Verbinden von MISO und MOSI einen Loopback realisieren. Dazu hab folgenden Treiber als Beispiel genommen:
http://elk.informatik.fh-augsburg.de/pu ... _example.c
Er lässt sich kompilieren und per insmod in den Kernel laden, jedoch wird die probe-Funktion nie aufgerufen. Wo liegt das Problem??? Wie kann ich aus dem Kernelspace auf den spidev-SPI-Treiber zugreifen. Aus dem Userspace funktioniert dies einwandfrei mit spidev_test.c
(http://git.kernel.org/?p=linux/kernel/g ... dev_test.c)
Noch eine Frage, was hat das mit dem modalias auf sich? Muss hier der gleiche Name wie für den eigenen Treiber festgelegt werden? Was ist der entscheidende Schritt das der Kernel mein Modul erkennt und probe aufruft?


Danke für jede Hilfe! Gruß Markus

User avatar
Hiswif
Posts: 664
Joined: Sat Oct 13, 2012 11:54 am
Contact: Website

Re: SPI Protokoll Driver am Kernel anmelden

Thu Jun 06, 2013 2:38 pm

Heho.

Ich muss ehrlich sagen das ich noch nicht so richtig verstehe was du tatsächlich möchtest.
Der Spi Bus ist schon im Kernel vorhanden, einen extra Treiber musst du dafür nicht extra schreiben.
So wie ich das derzeit verstehe möchtest du einen Treiber/Kernelmodul für ein gerät welches am SPI bus angeschlossen ist schreiben. Sehe ich das so richtig?
http://technikegge.blogspot.de

Markus989
Posts: 7
Joined: Thu Jun 06, 2013 9:22 am

Re: SPI Protokoll Driver am Kernel anmelden

Thu Jun 06, 2013 2:47 pm

Genau(soll später ein Netzwerktreiber werden der über SPI angebunden wird), als erstes möchte ich allerdings erst einmal einen Loopback über SPI hinbekommen, wofür das spi_example benutzt werden kann. Ich habe den üblichen spidev-Treiber wie auf (http://www.brianhensley.net/2012/07/get ... ry-pi.html) installiert, meines Wissen ist es aber ein Controller Driver, also ein Treiber der direkt mit der Hardware kommuniziert. Ich möchte einen Protokoll Driver bauen der spidev sozusagen als Schnittstelle zur Hardware benutzt(ähnlich wie spidev_test nur aus dem Kernelspace).

User avatar
Hiswif
Posts: 664
Joined: Sat Oct 13, 2012 11:54 am
Contact: Website

Re: SPI Protokoll Driver am Kernel anmelden

Thu Jun 06, 2013 4:21 pm

Netzwerktreiber klingt interessant. Ich habe noch ein ENC28J60 Modul hier welches ich gerade ebenfalls via spi einzubinden. Dafür existiert jedoch schon ein kernelmodul. Bekomme es nur nicht zum laufen.
http://technikegge.blogspot.de

User avatar
wklenk
Posts: 2
Joined: Fri Oct 18, 2013 12:35 pm
Location: Germany
Contact: Website

Re: SPI Protokoll Driver am Kernel anmelden

Fri Oct 18, 2013 12:47 pm

Markus989 wrote:Ich habe den üblichen spidev-Treiber wie auf (http://www.brianhensley.net/2012/07/get ... ry-pi.html) installiert, meines Wissen ist es aber ein Controller Driver, also ein Treiber der direkt mit der Hardware kommuniziert. Ich möchte einen Protokoll Driver bauen der spidev sozusagen als Schnittstelle zur Hardware benutzt(ähnlich wie spidev_test nur aus dem Kernelspace).
Ich glaube, was du da schreibst stimmt so nicht. Ich habe hier (https://www.kernel.org/doc/Documentatio ... pi-summary) gelesen, dass es zwei Arten von Treibern gibt: "Controller Drivers" und "Protokol Drivers". Auf dem RPi gibt es bereits einen Controller Driver, der auf die verbaute SPI-Hardware abgestimmt ist, und der heisst "spi_bcm2708". Kannst du mal mit Eingabe von "lsmod" nachprüfen. Ausserdem gibt es einen "Protokol Driver" mit Namen "spidev", der als Beispielimplementierung angesehen werden kann und ausserdem über ioctl Calls aus dem Userspace angesteuert werden kann.

Ich denke, du möchtest eher den "spidev" als Grundlage nehmen, einen eigenen Protocol Driver zu bauen, und ihn nicht als Schnittstelle verwenden. Wie schon gesagt, wenn du das machen wolltest, könntest du mit einfachen ioctl Calls mit dem "spidev" sprechen.

Return to “Deutsch”