Forum: PC Hard- und Software Intel NM10 GPIOs benutzen


von Tim S. (Firma: tsx89) (freak_ts) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe ein Embedded- / Industrial Board mit 8 GPIOs. Ich finde jedoch 
keine direkte Möglichkeit, diese zu verwenden. Bis auf dass sie direkt 
am "Intel® NM10 Express Chipset" über den "SMBus" angebunden(?) sind, 
schweigt der Hersteller... (shema1.png)

Daher habe ich mir das NM10-Chipset Datasheet runtergeladen, und dort 
gibt es eine "riesen Liste" mit GPIOs und etwas Beschreibung. 
(shema2.png)

Das ganze soll am besten unter Linux mit GCC funktionieren.

Theorie//
Wenn ich das jetzt richtig verstanden habe, muss ich die Basisadresse 
öffnen (0x48), und auf dieser "Adresse" die Pins setzen bzw. markieren, 
die dann ihre native Funktion ausschalten, und nur noch GPIO werden 
sollen. (0x48+0x00)

Danach (0x48+0x04) festlegen, ob die Pins als Ein- oder Ausgang 
fungieren sollen.

z.B WENN alle als Ausgang:

Anschließend (auf 0x48+0x0C) festlegen, ob er High oder Low ist.
Oder (auf 0x48+0x18) festlegen, ob er "Blinken" soll.

Ich würde die 8 Pins (zum Testen) mal gerne Blinken lassen.
___
Also schreibe ich auf 0x48: 0xFFFFFF, damit alle Pins GPIOs sind.
Dann schreibe ich auf 0x4C: 0x000000, damit alle als Ausgang fungieren.
Und zuletzt auf 0x60: 0xFFFFFF, damit alle GPIOs blinken.
//Theorie

Kann das so klappen?

Meine Frage ist außerdem, ob es einen Standard gibt, der Beschreibt wie 
welcher IO Pin auf den Header raus-geführt ist, oder ob ich da nur durch 
"Try & Error / Win" weiter komme? Muss ich die 8 von ca 30 GPIOs die ich 
benutzen darf praktisch erst durchklingeln? Oder erstmal nur die 
"Unmultiplexed" testen?
und wie etwa sieht eine Codezeile zum setzen eines "Registers" für gcc 
aus?
In der Richtung habe ich noch nie was gemacht...

Modell: avalue EMX-CDT NM10 AtomD2550.
https://www.avalue.com.tw/product/Embedded-Computing/Industrial-Motherboard/Mini-ITX/EMX-CDT_1883

[Die GPIOs sollen dann externe Geräte Einschalten oder Resetten können, 
indem sie per Optokoppler (mal schaun) an die entsprechenden Pins 
(Taster / oder GPIOs) der Geräte gehängt werden, für´n bissle Watschdog 
im 24/7]

Danke schon mal für eventuelle Tipp´s...

: Bearbeitet durch User
von peng (Gast)


Lesenswert?

mal in den sourcen von lm?ensors schaun wie das mit dem SMBusgemacht 
wird?
https://wiki.archlinux.org/index.php/Lm_sensors

von Tim S. (Firma: tsx89) (freak_ts) Benutzerseite


Angehängte Dateien:

Lesenswert?

Das (Anhang) schaut mir ein bisschen "Verdächtig" aus...
Es soll doch 8 Pins heißen, denke ich... (Gpio 10-18).
Ich will hald nich mit irgendwelchen Adressen das Board hochjagen - aber 
passieren kann ja fast gar nichts. (Oder? o_O)

Achja danke für den URL... ;-)

: Bearbeitet durch User
von Planlos (Gast)


Lesenswert?

Tim S. schrieb:
> Das ganze soll am besten unter Linux mit GCC funktionieren.

Dann würde ich da möglichst nicht direkt am SMBus oder Registern 
rummachen, sondern wenn mgl. einen Kernel-Eigenen GPIO-Treiber 
verwenden, und den Zugriff darüber machen.

https://www.kernel.org/doc/Documentation/gpio/sysfs.txt

Schau dich also mal unter /sys/class/gpio um.

Mein Desktop-Board findet mit dem gpio_ich - Treiber z.B. 76 GPIOs, die 
direkt am Chipset hängen. Diese könnte ich einfach in der Shell per 
"echo 555 > /sys/class/gpio/export" als devicenode verfügbar machen, 
auslesen, Richtung einstellen, Wert setzen...

Aber: Ohne Info welcher GPIO-Pin am Mainboard wie (oder ob überhaupt) 
beschaltet ist, sind Experimente da russisch Roulette...

Sobald du an der Kommandozeile deine GPIOs angesteuert bekommst, in dein 
C-Programm übernehmen. Gibt auch Libraries dafür.

Bitte nicht sowas verbrechen:
1
system("echo 1 > /sys/class/gpio42/value");
Sieht man ab und an bei RasPI-Projekten, meistens gefolgt von 
Beschwerden dass die GPIOs so furchtbar langsam sind und man da gar 
keine gute Software-PWM hinbekommt.....

von Carl D. (jcw2)


Lesenswert?

vfork() execv("Bash")
braucht tatsächlich mehr als 2μs?
Ach!

von C. A. Rotwang (Gast)


Lesenswert?

Planlos schrieb:

> Aber: Ohne Info welcher GPIO-Pin am Mainboard wie (oder ob überhaupt)
> beschaltet ist, sind Experimente da russisch Roulette...


Dann nimm die Multimeter/Scope und messe/teste die Beschaltung aus! Und 
kurzzeitig (<1s) ein Pin falsch  zu konfigurieren macht i.d.R. nix 
kaputt.

von Tim S. (Firma: tsx89) (freak_ts) Benutzerseite


Angehängte Dateien:

Lesenswert?

Tim S. schrieb:
> Muss ich die 8 von ca 30 GPIOs die ich
> benutzen darf praktisch erst durchklingeln?

Planlos schrieb:
> Ohne Info welcher GPIO-Pin am Mainboard wie (oder ob überhaupt)
> beschaltet ist, sind Experimente da russisch Roulette...

Schaud euch das Bild an. Das ist eine Frechheit. Die Beschreibung kann 
man sich echt schenken. Was will man damit??? Echt seltsam, dass ein 
ganz normales Pinout bei einem sog. "Industrial Mainboard" nicht 
mitgeliefert wird!?!?

Ich werde den Hersteller avalue wohl mal um einen Auszug des GPIO-Teil´s 
vom Schaltplan bitten. Bzw. einfach nur eine Liste anfordern. Oder hat 
jemand noch weitere Infos dazu?

von Tim S. (Firma: tsx89) (freak_ts) Benutzerseite


Lesenswert?

C. A. Rotwang schrieb:
> Dann nimm die Multimeter/Scope und messe/teste die Beschaltung aus! Und
> kurzzeitig (<1s) ein Pin falsch  zu konfigurieren macht i.d.R. nix
> kaputt.

Ich werde eher versuchen, was "extern blinkendes" zu lesen.

von Vereinfacher (Gast)


Angehängte Dateien:

Lesenswert?

Bei einer ordentlichen Dokumentation hätte das so ausgesehen.

(vom Hersteller Advantec)

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.