www.mikrocontroller.net

Forum: Codesammlung SPI Treiber für Linux auf ARM

Autor: Flush (Gast)
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
Autor: Flush (Gast)
Datum: 23.06.2008 14:34

Mit Quellcode gebe ich mich natürlich auch zufrieden ... ;)
Autor: Claude Schwarz (claudeschwarz)
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.
Autor: Piwi (Gast)
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!!!
Autor: Claude Schwarz (claudeschwarz)
Datum: 25.07.2008 08:25
Dateianhang: et028002fb.c (19 KB, 108 Downloads) | formatierter Code

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.
* Anzeige-Link
Antwort
Autor: Janusz Piwek (piwi)
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
Autor: Julian (Gast)
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






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net