Grasshopper - Linux - direkte PORT Programmierung möglich ?

Gast #1236288
Lesenswert?

Hallo,

ich versuche durch ein kleines C Programm die LEDs direkt am Grasshopper 
zu programmieren. ( direkter Zugriff auf die HW )

Leider gibt es nur nen Segmentation Fault


#define PIOA (*(volatile unsigned *)0xFFE02800)
PIOA = ( (1<<23) | (1<<24) );


Sollte nach meinem Verständnis LED PA23 und PA24 einschalten.


Wer weis einen Rat ?

Gruß,

Mirko
#1236294
Lesenswert?

Den Segmentation Fault gibt es zu recht. Denn du hast den Sinn des 
Userspace nicht verstanden. Dein Programm läuft eben in diesem 
Userspace. Das heißt es hat nur eingeschränkte Rechte und kann nur auf 
den Speicher zugreifen, den es zugewiesen bekommen hat.
Versucht es, einen anderen Speicherbereich zu lesen oder zu schreiben, 
dann kommt eben ein Seg Fault.

Wenn du dir einen Kernel-Treiber programmierst, dann sind solche Aufrufe 
ohne weiteres möglich, da du dich im Kernel-Space befindest. Dann bist 
du aber auch dafür verantwortlich, dass der Treiber die Systemstabilität 
nicht beeinflusst.

MfG
Marius
Gast #1237637
Lesenswert?

per /dev/mem kann man per mmap nicht auf den Addressbereich von den gpio 
zugreifen :(

Ich veruchte nun den "einfachen weg"

Die LEDs sind an Port0 (A) PA23-PA30 angeschlossen.

#--------------------------------------------------------#
mkdir /config/gpio/leds

#specifies which PIO controller to use (PIOA = 0, etc.)
echo 0 > /config/gpio/leds/gpio_id

# specifies which particular pins to use on the controller.
echo 0xff00 > /config/gpio/leds/pin_mask     # Use pins PA23-PA31

# specifies which pins are used as outputs.
echo 0xff00 > /config/gpio/leds/oe_mask      # Enable output on pins 
23-31

# specifies whether the gpio object is active. Write "1" to this file in 
order to create the gpio device.
echo 1 > /config/gpio/leds/enabled         # Create the device

#---------------------------------------------------------#

Es wird nun aber laut dmesg kein /dev/gpio0 angelegt :(
Wenn ich es per Hand anlege mit mknod /dev/gpio0 c 254 0
und mit einem Programm darauf zugreifen will, passiert nichts.

$ cat /dev/gpio0
cat: /dev/gpio0: No such device or address
$ ls -al /dev/gpio0
crw-r--r--    1 root     root     254,   0 Dec 31 18:12 /dev/gpio0

Da weis ich nun nicht mehr weiter :(

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren