Ports benutzen (GCC)

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Einleitung

Über die Ansteuerung der Schnittstellen unter Linux findet man im Internet überall etwas anderes, die einen sagen man soll die Schnittstellen über ihre I/O-Adresse (0x378,...) ansteuern.

Hier bleiben zwei Fragen offen:

- Kann ich USB-RS232 Adapter benutzen? -- Nein, USB-RS232 Adapter werden nicht über I/O-Adressen angesteuert.
- Brauche ich root Berechtigung? -- Ja, ohne root Berechtigung kann man nicht auf I/O-Adressen zugreifen.


Die hier vorgestellte Methode ermöglicht folgendes:

- zugriff auf Schnittstellen ohne root Berechtigung
- zugriff auf alle parallelen oder seriellen Schnittstellen, egal ob USB oder nicht

Allgemein

Bevor man auf irgendeinen IO-Port vom Userspace zugreifen kann, muss man ioperm(2) aufrufen. Dazu benötigt das Programm allerdings root- oder SUID-Root-Privilegien.

Serielle Schnittstelle

Die Serielle Schnittstelle besitzt 3 Ausgangspins (TX,RTS,CTS) und 4 Eingangspins (RX,DTR,DSR,RI).

Jetzt kann man diese Pins einzeln setzen und abfragen, oder sie als RS232 Schnittstelle benutzen.

Pins einzeln verwenden:

...

Als RS232 verwenden:

...

Parallele Schnittstelle

Die Parallele Schnittstelle besitzt 8 Datenleitungen und 9 Steuerleitungen, sowie 8 Massepins.

Die Datenleitungen können Bidirektional verwendet werden, die Steuerleitungen haben aber eine festgelegte Richtung.

...