Datum: 23.06.2008 09:56
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
Datum: 23.06.2008 14:34
Mit Quellcode gebe ich mich natürlich auch zufrieden ... ;)
Datum: 24.06.2008 08:41
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.
Datum: 24.07.2008 16:13
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!!!
Datum: 25.07.2008 08:25
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.
Datum: 06.08.2008 10:12
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
Datum: 25.08.2008 16:11
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
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel