Forum: PC-Programmierung Pin Change Interrupt


von Bauform B. (bauformb)


Lesenswert?

Auf einem uC trivial,  aber gibt's sowas auch unter Linux auf einem 
Intel PC? Ideal wäre, wenn ich den CTS Eingang vom COM1 oder 2 mit 
select()/poll() o.ä. abfragen könnte. Eine Notlösung wäre der Power 
Button, aber der gehört normal dem acpid und ich will damit keinen 
shutdown auslösen. Zu der Verwirrung käme noch ein unpraktisches Kabel. 
GPIOs gibt's auch noch...

von Sven B. (scummos)


Lesenswert?

An sich kann Linux das:
https://www.kernel.org/doc/Documentation/gpio/sysfs.txt

Ob du das auf dem typischen x86-Notebook so leicht mit irgendwas 
hinbekommst bezweifle ich allerdings. Das hat ja auch keinen 
COM-Eingang? Per USB-Adapter wird's jedenfalls nichts mehr.

von Bauform B. (bauformb)


Lesenswert?

Danke für den Link. Der Text hat mich überzeugt, dass ich die GPIOs 
nicht mag. Erstmal habe ich immer noch keine Doku, welcher Pin zu 
welchem Bit gehört. Selbst wenn ich die hätte, könnte ich evt. mit einem 
kleinen Bug das Board schrotten, weil ein Bit weiter links vielleicht 
der Spannungswandler angeschlossen ist. Die Änderung weg vom sysfs zum 
Device mit ioctl() finde ich auch seltsam. War nicht ioctl() böse und 
das sysfs die Rettung?

Eigentlich hatte ich gehofft, dass man einen UART-Interrupt benutzen 
kann. Die klassischen 165xx konnten doch für Flanken an CTS, RI und DCD 
Interrupts auslösen. Aber selbst wenn Linux das für normale UARTs 
unterstützen würde, mein Board ist ein picoITX mit einem Intel E3930 SoC 
und das Manual sagt:
1
Note
2
The UART ports routed from the SoC through the transceiver cannot
3
be used under Windows because Intel® does not provide the necessary
4
driver. They can only be used under Linux.
Wie bitte? Wo gibt's denn sowas?
Da kann ich froh sein, wenn ich CTS überhaupt irgendwie abfragen kann.

von c-hater (Gast)


Lesenswert?

Bauform B. schrieb:

> Da kann ich froh sein, wenn ich CTS überhaupt irgendwie abfragen kann.

Kannst du nicht. Schon deshalb, weil diese UART keinerlei 
Steuerleitungen besitzt. Das ist eine reine Dreidraht-UART.

von Sven B. (scummos)


Lesenswert?

Bauform B. schrieb:
> Danke für den Link. Der Text hat mich überzeugt, dass ich die GPIOs
> nicht mag. Erstmal habe ich immer noch keine Doku, welcher Pin zu
> welchem Bit gehört.

Steht vmtl in der Doku des GPIO-Treibers zu deinem SoC. In der Regel 
aber sowas wie 32*bank+bit.

> Selbst wenn ich die hätte, könnte ich evt. mit einem
> kleinen Bug das Board schrotten, weil ein Bit weiter links vielleicht
> der Spannungswandler angeschlossen ist.

Naja, dagegen hilft aber nix. Wenn du den falschen GPIO ansteuerst, geht 
halt der falsche an.

> Die Änderung weg vom sysfs zum
> Device mit ioctl() finde ich auch seltsam. War nicht ioctl() böse und
> das sysfs die Rettung?

Beide Konzepte haben ihre Daseinsberechtigung, kommt halt drauf an was 
du machen willst.

> Wie bitte? Wo gibt's denn sowas?

Wilkommen in der Embedded-Welt ;)

: Bearbeitet durch User
von Bauform B. (bauformb)


Lesenswert?

c-hater schrieb:
> Bauform B. schrieb:
>
>> Da kann ich froh sein, wenn ich CTS überhaupt irgendwie abfragen kann.
>
> Kannst du nicht. Schon deshalb, weil diese UART keinerlei
> Steuerleitungen besitzt. Das ist eine reine Dreidraht-UART.

Nur für die Nachwelt: RTS und CTS funktionieren beim E3930, aber DCD, 
DSR und RI gibt es nicht. CTS-Interrupts sind wohl wirklich nicht 
möglich. Bei meinem Board braucht man auch noch eine nicht-triviale 
Kombination von BIOS-Einstellungen, damit die Ports überhaupt 
funktionieren.

Und noch ein kleiner Scherz von Intel: nur 2 der 3 UARTs können DMA.

von X2 (Gast)


Lesenswert?

Bauform B. schrieb:
> Und noch ein kleiner Scherz von Intel: nur 2 der 3 UARTs können DMA.

Lass mich raten,es ist UART 0 der kein DMA kann?

In der Doku zum soc steht dafür, Not POR, use as gpio

von Torben (Gast)


Lesenswert?

Was spricht gegen einen FT232RL und z.B. die CBUS Pins zu pollen?

von Torben (Gast)


Lesenswert?


von Bauform B. (bauformb)


Lesenswert?

X2 schrieb:
> Bauform B. schrieb:
>> Und noch ein kleiner Scherz von Intel: nur 2 der 3 UARTs können DMA.
>
> Lass mich raten,es ist UART 0 der kein DMA kann?
>
> In der Doku zum soc steht dafür, Not POR, use as gpio

Das wird ja immer lustiger. Der Kernel findet 3 UARTs und erzeugt 
/dev/ttyS0 bis 2, davon sind ttyS1 und ttyS2 auf Stecker verdrahtet und 
ttyS2 kann kein DMA :)

Torben schrieb:
> Was spricht gegen einen FT232RL und z.B. die CBUS Pins zu pollen?

nicht viel, nur, USB-Ports sind auch knapp. Ich hätte dann eher einen uC 
an eins der UARTs gehängt. Auf die Art hätte ich praktisch meinen Pin 
Change Interrupt und müsste nicht pollen. So ähnlich müsste ich es 
machen, wenn c-hater Recht hätte.


Was Strom sparen angeht ist der E3930 allerdings echt stark: inkl. SSD, 
USB-Tastatur, Monitor am Display Port und GBit-Netzwerk: 2.6W idle, 6W 
make -j2. Was braucht der Raspi 4 nochmal?

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.