Hilfe bei GPIO gesucht

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
purzel
Beiträge: 82
Registriert: 03.11.2007 05:53:58

Hilfe bei GPIO gesucht

Beitrag von purzel » 15.04.2012 10:58:10

Hallo alle Miteinander

Ich habe auf meinem Mainboard ein Header mit gpio_30 bis gpio_37
Diese moechte ich nutzen.
Ich habe allerdings ein komisches Problem.
Ich vermisse das verzeichnis /sys/class/gpio.
Weder im Terminal noch im Dateimanager wird dieses
Verzeichnis angezeigt
Wenn ich mit MC dieses verzeichnis anlegen moechte,
wird vom MC gemeldet das es dieses Verzeichnis schon
giebt.

Jemand ein Tip?

purzel

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Hilfe bei GPIO gesucht

Beitrag von Cae » 16.04.2012 01:07:38

/proc und /sys sind virtuelle Dateisysteme, in die man nur unter ganz bestimmten Umständen schreiben kann. Und wenn's etwas nicht gibt, dann meistens, weil der Treiber es nicht angelegt hat.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

purzel
Beiträge: 82
Registriert: 03.11.2007 05:53:58

Re: Hilfe bei GPIO gesucht

Beitrag von purzel » 17.04.2012 14:01:04

hallo Cae

>>>>.....in die man nur unter ganz bestimmten Umständen schreiben kann..........

Na ja , dann verstehe ich allerdings diese Fehlermeldungen nicht


root@localhost:/sys/class# mkdir gpio
mkdir: kann Verzeichnis „gpio“ nicht anlegen: Datei oder Verzeichnis nicht gefunden
root@localhost:/sys/class#


und im Mitnight Commander MC wird gemeldet
................................
Fehler

Die Datei existiert bereits (17)
................................

Sind ja wohl Meldungen , die sich eigendlich widersprechen.

einmal wird

Datei oder Verzeichnis nicht gefunden

und anderseits

Die Datei existiert bereits (17)

Na was denn nun?


>>>Und wenn's etwas nicht gibt, dann meistens, weil der Treiber es nicht angelegt hat

Werden nicht die Starttaster,Leds usw auf dem Motherboard auch als GPIO vom OS verwaltet?
Dann muss doch ein Treiber vorhanden sein.
Warum wird das dann erfolgreich versteckt?

Irgendeiner eine idee?

purzel

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Hilfe bei GPIO gesucht

Beitrag von rendegast » 17.04.2012 16:01:54

strace des 'mkdir gpio':

Code: Alles auswählen

....
1111  close(3)                          = 0
1111  mkdir("gpio", 0777)               = -1 ENOENT (No such file or directory)

...
blabla Fehlermeldung
...
1111  close(1)                          = 0
1111  close(2)                          = 0
1111  exit_group(1)                     = ?
und des mc:

Code: Alles auswählen

...
1111  getuid32()                        = 0
1111  mkdir("/sys/class/gpio", 0777)    = -1 ENOENT (No such file or directory)
1111  mkdir("/sys/class/gpio", 0777)    = -1 ENOENT (No such file or directory)
1111  mkdir("/sys/class", 0777)         = -1 EEXIST (File exists)

...
blabla Fehlermeldung des mc
...
Also zu sehen, daß der mc versucht, das Verzeichnis mit komplettem Pfad zu erstellen ala 'mkdir -p',
und wegen des Fehlers das übergeordnete Verzeichnis zu erstellen versucht, was dann als letzter Fehler angezeigt wird.


# find /lib/modules/3.2.0-2-686-pae/ -name *gpio* | sort
/lib/modules/3.2.0-2-686-pae/kernel/drivers/char/nsc_gpio.ko
/lib/modules/3.2.0-2-686-pae/kernel/drivers/char/pc8736x_gpio.ko
/lib/modules/3.2.0-2-686-pae/kernel/drivers/char/scx200_gpio.ko
/lib/modules/3.2.0-2-686-pae/kernel/drivers/gpio
/lib/modules/3.2.0-2-686-pae/kernel/drivers/gpio/gpio-cs5535.ko
/lib/modules/3.2.0-2-686-pae/kernel/drivers/gpio/gpio-ml-ioh.ko
/lib/modules/3.2.0-2-686-pae/kernel/drivers/gpio/gpio-pch.ko
/lib/modules/3.2.0-2-686-pae/kernel/drivers/gpio/gpio-vx855.ko
/lib/modules/3.2.0-2-686-pae/kernel/drivers/mfd/pcf50633-gpio.ko

# cat /boot/config-3.2.0-2-686-pae | grep -i gpio
CONFIG_GENERIC_GPIO=y
# CONFIG_MTD_GPIO_ADDR is not set
# CONFIG_MDIO_GPIO is not set
# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_KEYBOARD_GPIO_POLLED is not set
# CONFIG_MOUSE_GPIO is not set
# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
CONFIG_SCx200_GPIO=m
CONFIG_PC8736x_GPIO=m
CONFIG_NSC_GPIO=m
# CONFIG_I2C_GPIO is not set
# CONFIG_SPI_GPIO is not set
# CONFIG_PPS_CLIENT_GPIO is not set
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
# CONFIG_GPIO_SYSFS is not set
# Memory mapped GPIO drivers:
# CONFIG_GPIO_GENERIC_PLATFORM is not set
# CONFIG_GPIO_IT8761E is not set
# CONFIG_GPIO_SCH is not set
CONFIG_GPIO_VX855=m
# I2C GPIO expanders:
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_ADP5588 is not set
# PCI GPIO expanders:
CONFIG_GPIO_CS5535=m
# CONFIG_GPIO_LANGWELL is not set
CONFIG_GPIO_PCH=m
CONFIG_GPIO_ML_IOH=m
# CONFIG_GPIO_RDC321X is not set
# SPI GPIO expanders:
# CONFIG_GPIO_MAX7301 is not set
# CONFIG_GPIO_MCP23S08 is not set
# CONFIG_GPIO_MC33880 is not set
# CONFIG_GPIO_74X164 is not set
# AC97 GPIO expanders:
# MODULbus GPIO expanders:
# CONFIG_W1_MASTER_GPIO is not set
# CONFIG_CHARGER_GPIO is not set
# CONFIG_SENSORS_GPIO_FAN is not set
# CONFIG_MFD_SM501_GPIO is not set
CONFIG_PCF50633_GPIO=m
# CONFIG_REGULATOR_GPIO is not set
# CONFIG_USB_GPIO_VBUS is not set
# CONFIG_LEDS_PCA9532_GPIO is not set
# CONFIG_LEDS_GPIO is not set
# CONFIG_LEDS_TRIGGER_GPIO is not set
Besteht noch "gpio-Potential" bei einem Eigenbau-Kernel,
Siehe auch Documentation/*gpio*.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: Hilfe bei GPIO gesucht

Beitrag von habakug » 17.04.2012 17:50:59

Hallo!

Entscheidend ist wohl

Code: Alles auswählen

CONFIG_GPIO_SYSFS=y
Dann ist das Verzeichnis auch da

Code: Alles auswählen

# ls /sys/class/gpio/
export  unexport
Beschreibbar ist es nicht ohne gpio-Treiber

Code: Alles auswählen

# echo 47 > /sys/class/gpio/export
-bash: echo: write error: Invalid argument
Für dieses [1] Gerät gibt es z.B. Treiber. Oder man findet ein nützliches Modul

Code: Alles auswählen

# grep gpio /lib/modules/3.3.2-1/*
[...]
/lib/modules/3.3.2-1/modules.order:kernel/drivers/gpio/gpio-cs5535.ko
/lib/modules/3.3.2-1/modules.order:kernel/drivers/gpio/gpio-sch.ko
/lib/modules/3.3.2-1/modules.order:kernel/drivers/mfd/pcf50633-gpio.ko
[...]
/lib/modules/3.3.2-1/modules.symbols:alias symbol:bttv_gpio_enable bttv
/lib/modules/3.3.2-1/modules.symbols:alias symbol:pcf50633_gpio_invert_set pcf50633_gpio
/lib/modules/3.3.2-1/modules.symbols:alias symbol:ivtv_reset_ir_gpio ivtv
/lib/modules/3.3.2-1/modules.symbols:alias symbol:cx18_reset_ir_gpio cx18
/lib/modules/3.3.2-1/modules.symbols:alias symbol:try_test_sas_gpio_gp_bit libsas
Gruß, habakug

[1] http://www.totalphase.com/products/aard ... zAodA3wXHw
[2] http://www.mjmwired.net/kernel/Documentation/gpio.txt
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: Hilfe bei GPIO gesucht

Beitrag von cirrussc » 17.04.2012 21:40:09

purzel hat geschrieben:Werden nicht die Starttaster,Leds usw auf dem Motherboard auch als GPIO vom OS verwaltet?
Dann muss doch ein Treiber vorhanden sein.
Warum wird das dann erfolgreich versteckt?
Damit hat das OS und selbst das BIOS nichts zu tun (irgend was muss das Board ja von sich aus können); das macht der Chipsatz, bei dem es entweder auch nur GPIOs sind, deren Funktion erst dessen Firmware bestimmt, oder es ist einfach so vom Schaltungsdesign angelegt - alles sehr unterschiedlich.
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

purzel
Beiträge: 82
Registriert: 03.11.2007 05:53:58

Re: Hilfe bei GPIO gesucht

Beitrag von purzel » 19.04.2012 04:05:28

Schoenen Dank fuer die Hilfe

Ich habe erkannt das ich ohne ein fuer mich speziellen Kernel ich mein
Problem nicht loesen kann.

Da das Kernelbacken fuer mich absoluted Neuland ist, habe ich beschlossen
das Backen in die Wintermonate zu legen.

Die Sommerzeit will ich nutzen um mich schlau zu machen.
Hinweise auf gute Buecher, links ,Anleitungen usw.
werden dankend entgegengenommen.

****************************
Aber was bedeutet das =m
bei CONFIG_GPIO_CS5535=m
?
****************************


Nun moechte ich berichten was ich meine verstanden zu haben.
Sind Fehler vorhanden, Bitte berichtigen.


Der Linux-Kernel wird als Qellcode angeboten

Daraus machen die Debian-Kernel-Baecker Kernel fuer
alpha, amd64, armel, hppa, ia64, i386, mips, mipsel, powerpc, sparc,
s390

Nun wird beim backen je nach Prozessortyp die Backmischung unterschiedlich
zusammengesetzt.
Wird bei armel die wuerze GPIO beigemischt, so wird sie bei i386 weggelassen.

Daraus folgt , moechte man beim i386 das Gewuerz GPIO haben ,
dann muss man sich den Kernel selber backen.

Nun braucht man ein Backbuch (Liste) in der die Backzutaten drinstehen.
Das ist die Datei /boot/config-`uname -r`
Diese irgendwo hinkopieren , wo man sie mit dem Editor bearbeiten kann
Denn nun kommt die Schweinearbeit
Das Erstellen der Backmischung

Es giebt eine Unmenge von Zutaten die man mit Sicherheit nie
brauchen wird und deshalb entfernen koennte.

Mein Problem ist es aber zur Zeit rauszufinden was die einzelnen
Anweisungen bewirken.

Wer helfen kann , den bitte ich das zu tun.

purzel

Benutzeravatar
schorsch_76
Beiträge: 2630
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Hilfe bei GPIO gesucht

Beitrag von schorsch_76 » 19.04.2012 07:40:19

Um rauszufinden was für einen GPIO Chip du hast hilft nur Konsultation des Handbuches/Datenblattes deines Mainboards. Auch könnte pspci bzw lsusb hilfreich sein.
Evtl. auch ein Blick auf das Board ;)

Gruß
schorsch

purzel
Beiträge: 82
Registriert: 03.11.2007 05:53:58

Re: Hilfe bei GPIO gesucht

Beitrag von purzel » 19.04.2012 08:01:09

Hallo schorsch_76

Wenn ich das richtig sehen sind die 10GPIO ports ein
"Ueberbleibsel " aus der IHC9R


Ansonsten ist das Board ein
Jetway NF99FL-525

Also Atom mit IHC9R

purzel

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: Hilfe bei GPIO gesucht

Beitrag von cirrussc » 19.04.2012 22:13:38

purzel hat geschrieben:Aber was bedeutet das =m
bei CONFIG_GPIO_CS5535=m?
=m - Modul
=y - fest einkompiliert
ohne - deaktiviert
purzel hat geschrieben:Daraus machen die Debian-Kernel-Baecker Kernel fuer
alpha, amd64, armel, hppa, ia64, i386, mips, mipsel, powerpc, sparc,
s390
Hinzuzufügen wäre, dass die Kernel-Entwickler mit dem Quellcode vorgeben, für welche Zielarchitekturen der Kernel gebaut werden, also lauffähig sein, kann.
Wird bei armel die wuerze GPIO beigemischt, so wird sie bei i386 weggelassen.
Das weniger, das ist mehr eine Sache der verbauten Komponenten, als der CPU Architektur. Die Debiankernel sind eigentlich sehr reichhaltig bestückt, so dass sie eben auf sehr vieler verschiedener Hardware gut lauffähig sind. Natürlich wird man in einen ARM oder MIPS Kernel nichts einbauen können, was exklusiv nur auf der PC-Plattform vorhanden ist. Da beispielsweise die zwei genannten CPU Familien vorwiegend in eingebetteten Systemen - also grundlegend extrem unterschiedlicher Hardware - verbaut sind, wird man für solche eh jeden Kernel speziell konfigurieren müssen.

Um nochmal auf die Würze zu kommen: Diese bestünde also nur in der Konfiguration des Kernels. Den Quellcode durch Patches zu verändern, ist eine ganz andere Sache.
Nun braucht man ein Backbuch (Liste) in der die Backzutaten drinstehen.
Das ist die Datei /boot/config-`uname -r`
Diese irgendwo hinkopieren , wo man sie mit dem Editor bearbeiten kann
Denn nun kommt die Schweinearbeit
Das Erstellen der Backmischung
Naja die Konfiguration wird von make im Quellcodeverzeichniss als .config angelegt. Als Konfigurationstargets stehen i.d.R. zur Verfügung: make (g|menu|x)config; diese sind dem bloßen Bearbeiten der Konfig in jedem Fall vorzuziehen, da hier gleich unmögliche Kombinationen von Schaltern vermieden werden und gleich, wenn vorhanden, Hilfetexte zu den Optionen gezeigt werden können. make help im Kernelquellcodeverzeichnis zeigt noch mehr wichtiges.
Um überhaupt erst mal einen lauffähige eigenen Kernel gebacken zu bekommen, braucht ein Anfänger gewöhnlich einige Versuche, ihn auch noch optimal anzupassen sogar sehr viele, das ist ganz normal.
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

Antworten