Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi - GPIO, SPI , welche ZugriffsDateien jeweils?


von beere (Gast)


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?

von (prx) A. K. (prx)


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.

von Thomas (Gast)


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

von beere (Gast)


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.

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
Noch kein Account? Hier anmelden.