mikrocontroller.net

Forum: PC Hard- und Software Linux sysfs USB GPIO Expander


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Martin W. (Firma: Neuberger Gebäudeautomation) (mwagner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin auf der Suche nach einem USB GPIO Expander für Linux, der GPIOs 
im sysfs (/sys/class/gpio) anlegt.
Dafür gibts scheinbar zig Bastellösungen mit diversen FTDI Chips, ich 
suche aber eine Ready-to-use Lösung. Daher folgende Bedingungungen:
- funktioniert mit Distributionskernel (Debian)
- Als Produkt fertig kaufbar in DE
- Lösung funktioniert an einem Desktop PC.

Kennt jemand ein entsprechendes Produkt? Muss nicht zwingend USB sein, 
alternative Lösungen sind willkommen.

Danke!

Autor: Jim M. (turboj)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Suche mal lieber nach PCI(E) Karten. Dafür sehe ich im Kernel Tree ein 
paar Treiber. Die haben anders als die USB Teile auch kein 
Latenzproblem.

Was ist Dein Anwendungsfall denn genau? Eventuell tut es ja auch ein 
I²C/SPI nach GPIO Chip, den man einfach an einen der PC-internen I²C 
Busse klemmt...

Autor: Christoph F. (chf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin W. schrieb:
> ich bin auf der Suche nach einem USB GPIO Expander für Linux, der GPIOs
> im sysfs (/sys/class/gpio) anlegt.

Ist sysfs ein Muß? Wenn nicht wird die Auswahl wesentlich einfacher.

Apropos Basteln mit USB und sysfs-GPIOS, da werden Erinnerungen wach:
http://www.linuxtag.org/2013/fileadmin/www.linuxtag.org/slides/Christoph_Fritz_-_Basteln_mit_USB.e294.pdf

Autor: Martin W. (Firma: Neuberger Gebäudeautomation) (mwagner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist in der Firma, daher scheidet Löten am PC und zeitintensives 
Selbstbauen von Adaptern aus.

Ich brauche das ganze fürs Debuggen einer Embedded Linux Anwendung. Das 
Debuggen auf dem x86 System ist erheblich komfortabler :-). Diese 
Anwendung greift auf das sysfs Interface zu, daher wäre das mein 
bevorzugter Weg.

Latenz ist unkritisch. Ein paar 100 ms sind vollkommen ausreichend.

USB wäre bevorzugt da so ein Adapter auch mit Laptops und VMs 
funktioniert. Die Notlösung wäre den GPIO von der tatsächlichen Hardware 
per SSH in das Hostsytem einzubinden, aber ein Teil das man ansteckt und 
funktioniert würde ich bevorzugen...

Wo finde ich die Teile im Kernel Tree?

: Bearbeitet durch User
Autor: fchk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre ein MPSSE-Kabel genehm? Da ist ein FT232H drin, und der gesamt Port 
A wird herausgeführt.

http://www.ftdichip.com/Products/Cables/USBMPSSE.htm
http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_C232HM_MPSSE_CABLE.PDF

fchk

Autor: Jim M. (turboj)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Martin W. schrieb:
> Ich brauche das ganze fürs Debuggen einer Embedded Linux Anwendung.

Dann würde ich eher zu einem der FT2232H-basiertem JTAG Adapter greifen, 
und mit OpenOCD arbeiten.

Anders als die - billigeren - FT232H Adapter hätten die oft auch noch 
einen 2. UART fürs serielle Terminal.

Autor: Martin W. (Firma: Neuberger Gebäudeautomation) (mwagner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten. Ich entnehme dem ganzen das es keinen fertigen 
Adapter (im Sinne von Hardware UND Software) gibt.

Tagelanges Gebastele ist mir die Sache einfach nicht Wert. Ich kann auf 
dem Embedded Linux System per Remote GDB arbeiten. Auf dem x86 geht es 
nur einfach noch ein Stückchen schneller und bequemer :-).

Autor: Martin W. (Firma: Neuberger Gebäudeautomation) (mwagner)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Bin nun doch noch fündig geworden.

- Board mit CH341
- Diesen Treiber compilieren und in Kernel laden: 
https://github.com/gschorcht/i2c-ch341-usb

Out of the Box sind 8 GPIOs im Sysfs aufgetaucht.

: Bearbeitet durch User
Autor: Enrico W. (Firma: metux IT consult) (nekrad)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin W. schrieb:

> Ich brauche das ganze fürs Debuggen einer Embedded Linux Anwendung. Das
> Debuggen auf dem x86 System ist erheblich komfortabler :-). Diese
> Anwendung greift auf das sysfs Interface zu, daher wäre das mein
> bevorzugter Weg.

Gehts Dir nur darum, zwecks Testing die Anwendung auf einem 0815-PC 
laufen zu lassen ?

Wenn ja, wie wär's denn mit einfach /sys/class/gpio/... über's Netz zu 
mounten ? Sind ja nur triviale FS-Operationen, sollte also mit 9P oder 
NFS trivial gehen.

> Wo finde ich die Teile im Kernel Tree?

Üblicherweise unter ./drivers/gpio/ - ein paar andere Devices (aus 
anderen Ecken können aber auch noch gpio's mitbringen) ...

By the way hab ich grad ein etwas ähnliches Problem - nur suche ich ein 
Relais-Modul für 230V mit USB-Anbindung. Finde da (abgesehen von alles 
selbst zusammen löten) grad nix. Sollte schon etwas fertiges zum einfach 
hinstellen sein. Die großen 19'' power switches scheiden aus (zu groß, 
zu schwer, zu teuer).

Hat jemand einen Tip ?

Kann auch gut damit leben, falls es noch keine richtigen Treiber gibt 
(solange das Protokoll sauber beschrieben ist). Kernel-Treiber schreiben 
gehört ja schließlich zu meinem täglich Brot.


--mtx

Autor: Kaj (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Enrico W. schrieb:
> By the way hab ich grad ein etwas ähnliches Problem - nur suche ich ein
> Relais-Modul für 230V mit USB-Anbindung. Finde da (abgesehen von alles
> selbst zusammen löten) grad nix. Sollte schon etwas fertiges zum einfach
> hinstellen sein. Die großen 19'' power switches scheiden aus (zu groß,
> zu schwer, zu teuer).
Ist zwar etwas gebastel, aber du koenntest dir z.B. so eine Master-Slave 
Steckdosenleiste mit USB Relais kaufen und auseinander bauen:
https://www.amazon.de/Gembird-PCW-MS-5fach-Master-%C3%9Cberspannungsschutz/dp/B000KPS3FY/
Ueber USB kann man die Leiste dann Ein- und Ausschalten. Ich habe so ein 
Teil mal mit einem uC angesteuert. Da reicht es dann einfach einen Pin 
zu setzten + vielleicht einen Transistor als Treiber. Man braucht also 
kein Protokoll als steuerung (also, kommt natuerlich auf die konkrete 
Leiste an!). Muesstest dann nur halt gucken wie du unter Linux an dem 
USB-Pin wackeln kannst.
Kabel fuer USB und 230V sind auch schon dran, fuer gut 20 Euro.

Vielleicht hilft dir das ja.

Gruesse

Autor: Kaj (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kaj schrieb:
> Da reicht es dann einfach einen Pin
> zu setzten + vielleicht einen Transistor als Treiber. Man braucht also
> kein Protokoll als steuerung (also, kommt natuerlich auf die konkrete
> Leiste an!). Muesstest dann nur halt gucken wie du unter Linux an dem
> USB-Pin wackeln kannst.
Vergiss was ich schrieb. Bei der Leiste die ich hatte (ich glaube es war 
die verlinkte) muss man am Vcc Pin (roter Draht im USB-Kabel) wackeln. 
Und ich bin mir nicht sicher ob man das ueber das OS hinbekommt. Oder 
kann man einen einzelnen USB-Port abschalten (also stromlos)?

Autor: Enrico W. (Firma: metux IT consult) (nekrad)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kaj schrieb:

> Bei der Leiste die ich hatte (ich glaube es war
> die verlinkte) muss man am Vcc Pin (roter Draht im USB-Kabel) wackeln.
> Und ich bin mir nicht sicher ob man das ueber das OS hinbekommt. Oder
> kann man einen einzelnen USB-Port abschalten (also stromlos)?

hmm, ja, kann man - über's Power-Management.

Ist aber auch nervig ... muß man erstmal zur Laufzeit rausbekommen, an 
welchem Port das Ding hängt (blöd, wenn man öfters umsteckt :o) und dann 
das Port schlafen legen (sofern der Controller das per Port kann).

Sofern man keinen Hub dazwischen hat. Und da haben wir das nächste 
Problem - mir werden schnell die Ports ausgehen, sodaß ich einen Hub 
dazwischen legen müßte :(

Hast Du das Ding zufällig noch irgendwo rumliegen ? Dann könnten wir ja 
mal schauen, ob da eine MCU dranhängt, mit der man evtl. reden kann.
Schön wäre es zumindest, wenn sich das Ding enumerieren ließe - dann 
könnte man das auch probe'n und ggf. gleich einen Treiber basteln, der 
das Ding ins LED-Subsystem einklinkt (zwecks einfachen schaltens via 
cmdline).

Hab mir unterdessen mal ein sonoff s20 aus China bestellt (mal sehen, 
ob's noch in diesem Jahr ankommt :o). Die Dinger haben auch WLAN. Sind 
zwar für die Klaut gebaut (irks, will ich garnicht), aber man kann die 
wohl auch austricksen, daß sie mit einem eigenem Server reden. Gibt dann 
allerlei schräges websockets-Gebastel, aber das kann ich mir ja in den 
R4D reinpatchen ...

Alternativ hätt ich eine andere Idee:

Falls es hier paar Leute gibt, die sich an eine richtige 
Produktentwicklung rantrauen (mit all dem Abhahme-Krams, den man da so 
braucht), könnten wir das ja gern mal in Angriff nehmen. Irgendein 0815 
SoC, auf dem Linux läuft, Ralais per GPIO angeflanscht und 'ne richtige 
Buchse dran. Um die Software-Seite würde ich mich kümmern, aber der 
schaltungstechnische Teil ist nix für mich :o.

--mtx

Autor: Nano (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin W. schrieb:
> Ich brauche das ganze fürs Debuggen einer Embedded Linux Anwendung. Das
> Debuggen auf dem x86 System ist erheblich komfortabler :-). Diese
> Anwendung greift auf das sysfs Interface zu, daher wäre das mein
> bevorzugter Weg.
>
> Latenz ist unkritisch. Ein paar 100 ms sind vollkommen ausreichend.
>
> USB wäre bevorzugt da so ein Adapter auch mit Laptops und VMs
> funktioniert. Die Notlösung wäre den GPIO von der tatsächlichen Hardware
> per SSH in das Hostsytem einzubinden, aber ein Teil das man ansteckt und
> funktioniert würde ich bevorzugen...

Ich würde ja einfach einen Raspberry Pi 3 nehmen, der liefert die GPIOs 
gleich mit.

Auf dem läuft ein Linux, man hat also die gewohnte Umgebung und wenn man 
die Daten wirklich auf dem PC benötigt, dann kann man ja die 
Netzwerkfunktionalität des Raspberry Pi nutzen und die Daten an den PC 
weiterleiten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.