Hallo! Hab gerade eine Aufgabe bekommen die mir gar nicht liegt. Hatte bisher noch nie was mit Linux zu tun und muss jetzt einen SPI-Treiber für einen ARM-Prozessor schreiben. Habe mir schon einige Sachen durchgelesen, nur schlau wurde ich bisher nicht daraus. Gibt es irgendeine dummy-Anleitung um einen SPI-Treiber zu schreiben? Danke für Hilfe. Gruß Flush
Was für ein ARM (Type und Hersteller)? Nur der Kernel Treiber , oder auch ein dazughöriges Userspace Programm? Oder meinst Du einen Treiber für z.b. einen Touch Controller der per SPI mit dem Host plaudert? Falls Du einen Atmel,Xscale,Freescale,Cirrus oder Samsung ARM einsetzt mach doch einfach das Häckchen in der Kernel Config beim SPI an!? Übrigens ist dies die Codesammlung , allgemeine Fragen gehören eher in ein anderes Forum.
Ich habe das gleiche Problem... Muss auch einen SPI Treiber schreiben, um mit einem RFID Transceiver zu kommuniziren. Ich nutze einen AT91RM9200 mit einem 2.6.21.7 Kernel... Als ich den Kernel kompilierte, habe ich das Häckchen gesetzt. Habe mknod /dev/spi0 c 153 0 ausgeführt. Normalerweise kann man anschließend read, write, open, ioctl, close nutzen oder? Klappt bei mir leider nicht... Wenn ich den AT91RM9200 SPI Driver (legacy)unter Character DEvices in der Kernelkonfiguration ankreuze, dann kann ich über SPI senden, jedoch nicht den Chip Select ändern? Hat jemand einen Plan!!!
Hast Du in deiner Board Config (arch/arm/mach-at91/board-deinboardname.c) im SPI Init Struct die Chip Select Leitungen zugewiesen? Wichtig ist auch das Du dort für das Device ein "spidev" anlegst um aus dem Userspace auf den SPI sprechen zu können. Danach sollte eigntlich open(),close(),read() und write() problemlos laufen. Ich würde aber den Weg über eine Platform Device mit dazugehörigen Platform Driver wählen, ist auf jedenfall eine bessere Lösung als über das spidev zu sprechen (Man kann z.b. keine Interrupt Handler mit dem spidev nutzen). Hab Dir mal einen (sehr hässlichen und unaufgeräumten!!) Treiber von mir angehängt. Der Treiber legt ein spi device und ein platform device (framebuffer)an. Um den Treiber(SPI Device/Platform Device) zu nutzen muss im Board Config / SPI Init Struct das Device "et028002" registriert werden. Der Platform Treiber (Platform Driver) wird ebenfalls über den Namen "et028002" , allerdings im Platform Device Struct , registriert. Kann Dir das Buch ISBN 0132396556 empfehlen. Wird auch SPI abgehandelt. Ach , und nochwas was mich sehr viel Zeit gekostet hat aber wahrscheinlich bei Dir nicht zutrifft , da Du wahrscheinlich keine xKiloBytes über den SPI in einem Rutsch schieben willst: Die AT91 PDC kann maximal 0xFFFE Bytes an einem Stück übertragen, 0xFFFF macht nur Müll.
Habe in den letzten Tagen den 2.6.26 Kernel kompiliert und setze auch das SPI-Master Framework ein. Nun weiß ich wie es geht... Bin auf das gleiche Ergebnis wie du gekommen. Trotzdem vielen Dank für deine Mühe. SChönen Gruß Piwi
Hallo Piwi, wie funktioniert das SPI-Master-Framework mit Version 2.6.26? Kannst du bitte kurz umreißen, wie du vorgegangen bist? Dank und Gruß Julian
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.