Raspberry Pi - GPIO, SPI , welche ZugriffsDateien jeweils?

Gast #4009681
Lesenswert?
• ▲
▼
Hallo zusammen,

Bisher hatte ich nur Umgang mit ein paar Atmel Mikrocontrollern. Mit 
Hilfe des Datenblatts war es nach dem Einarbeiten und Verwenden der 
stdio lib gut möglich die Funktionen der Mikrocontroller zu entdecken. 
Und durch das beschreiben der gewünschten Bits in den Registern hat man 
ja immer einfach die beschriebenen Funktionen erreichen können.

Nun bin ich interessehalber auf den RaspberryPi umgestiegen. Soweit ich 
nachgeschaut habe, funktioniert das ganze jetzt nur noch über ein 
Subsystem und damit erzeugt man Dateien usw. die dann die Pins steuern.

Für die GPIO habe ich die Informationen gefunden:

http://raspberrypiguide.de/howtos/raspberry-pi-gpio-how-to/

Da steht wunderbar drin wie das mit dem setzen der Pins funktioniert.

(Man kommt so weit wie ich es verstanden habe gar nicht mehr bis zu den 
Registern im Prozessor sondern arbeitet nur noch am Subsystem und setzt 
die notwendigen "Konfigurationsdateien"?
Aber für die anderen Sachen wie z.B. das Konfigurieren des 
Hardwaregesteuerten SPI Interfaces finde ich nichts beschreiben. Eben 
nur fertige Libs.
Aber irgendwoher müssen die Leute, die die Libs schreiben ja auch die 
Information bekommen haben. (so wie mit dem Link...)
Weiß da jemand nach was man da suchen muss?
#4009687
Lesenswert?
• ▲
▼
Lowlevel GPIO direkt auf den Registern geht:
http://hertaville.com/2014/07/07/rpimmapgpio/

Peripherie-Doku findest du in
http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

SPI/I2C etc machen ohne Interrupts keinen Spass und mit Interrupts 
schreibst du deinen eigenen Kernel-Treiber. Deshalb ist es deutlich 
elegenter, über /dev/i2c-x und /dev/spi-x den schon vorhandenen 
Kernel-Treiber zu verwenden.
Gast #4009730
Lesenswert?
• ▲
▼
Hallo beere,

einer der UNIX Grundsätze ist 'Alles ist eine Datei' und genau deshalb 
erzeugen Treiber auch Dateien.

Diese Dateien die du da siehst sind aber nicht wirklich Dateien. Sie 
liegen nicht auf irgendeiner Festplatte, sondern sind in einer 
virtuellen Festplatte im Speicher.
Letztendlich ist so eine Datei einfach nur ein 'Eingangspunkt' für einen 
Treiber.

Schreibe ich also eine "1" nach /sys/class/gpio/gpio17/value dann weiß 
der GPIO-Treiber (der diese Datei erstellt hat, als er geladen wurde) 
dass er seine Funktion bcm2708_gpio_set() aufruft.
Diese kümmert sich dann drum direkt im Kernel auf den Speicher (und 
damit auf die in den pysikalischen I/O-Adressraum gemappten 
GPIO-Register) zuzugreifen.

Es geht das Gerücht um dass Linux OpenSource sei, und somit auch die 
Sourcecodes des PI Linuxes verfügbar sind.
Gerüchteweise sei die Datei /linux/arch/arm/mach-bcm2708/bcm2708_gpio.c 
für das GPIO zuständig ;-)

Thomas
Gast #4010069
Lesenswert?
• ▲
▼
Vielen Lieben Dank A.K. und Thomas genau sowas hab ich gesucht. Und vor 
allem schnell festgestellt, dass ich mich mal tiefer mit Linux befassen 
sollte. Dank deiner grundlegenden Erklärung zu den Treibern weiß man 
jetzt nach was man suchen kann.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.