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