Inhaltsübersicht
Eines der unverzichtbaren Elemente bei der Arbeit an Embedded Linux-Projekten ist der Zugriff auf Ihr Gerät über die serielle Konsolenschnittstelle. Dazu muss der Computer, auf dem Sie ein eingebettetes System entwickeln, über eine serielle Schnittstelle verfügen. Heutzutage haben jedoch nur sehr wenige Computer eine serielle Schnittstelle, weshalb wir stattdessen USB-Seriell-Konverter verwenden.
Am Ende werden Sie ein detailliertes Verständnis davon haben, was serielle Konsolen sind und wie sie unter Linux funktionieren.
Einrichten des USB-Seriell-Konverters
Fast jeder USB-Seriell-Wandler, den Sie auf dem Markt finden, wird von Linux automatisch erkannt. Schließen Sie einen beliebigen USB-Konverter an Ihren Computer an und verwenden Sie den Befehl dmesg, um den Dateinamen des Geräts herauszufinden.
Im obigen Beispiel sehen Sie VirtualBox im Abschnitt Hersteller, da der Host eine Linux-Distribution ist, die auf VirtualBox läuft. Hier ändert sich der Herstellername je nach verwendetem Konverter. Sie können auch sehen, dass der von Ihnen verwendete serielle Konverter mit einem Namen an das System angeschlossen ist, z. B. ttyUSB0.
Sie können den von Ihrem System erkannten seriellen Konverter über die Gerätedatei /dev/ttyUSB0 verwenden. Je nach verwendeter Distribution wird die Gerätedatei automatisch unter dem Verzeichnis /dev erstellt und zeigt Haupt-, Neben- und Gerätetypen an. Bei USB-Serienkonvertern lautet das Namensschema normalerweise ttyUSB0, ttyUSB1 und ttyUSBX für jede Simultanübersetzung.
Wenn Sie den USB-Seriell-Konverter entfernen und wieder einstecken, während er von einer Anwendung verwendet wird, vergibt das System eine neue Nummer an das Gerät.
Zugriffsberechtigung auf serielle Geräte
Die Standard-Zugriffsrechte für gemountete USB-Konverter-Gerätedateien sind normalerweise wie folgt:
ls -l /dev/ttyUSB
Anhand der obigen Ausgabe können Sie dies erkennen:
- Der Buchstabe c am Anfang der Zeile zeigt an, dass es sich um ein zeichenbasiertes Gerät handelt
- Der Eigentümer der Datei ist der Benutzer root, der über Lese- und Schreibrechte verfügt.
- Der Gruppenbesitzer der Datei ist die Gruppe dialout, und die Benutzer in dieser Gruppe haben ebenfalls Lese- und Schreibrechte
- Der Rest der Benutzer hat keine Lese- und Schreibrechte auf die Datei
Wenn Sie derzeit als normaler Benutzer angemeldet sind, der nicht Mitglied der Gruppe dialout ist, können Sie nicht auf dem USB-Seriell-Konverter lesen und schreiben. Um dieses Problem zu lösen, müssen Sie entweder den aktuellen Benutzer zu einem Mitglied der dialout-Gruppe machen oder die udev-Regeldateien auf Ihrem System bearbeiten.
Der Einfachheit halber können Sie die erste Technik verwenden. Verwenden Sie zunächst den Befehl id, um festzustellen, zu welchen Gruppen Ihr Benutzer gehört:
id
Fügen Sie Ihren Benutzer mit dem Befehl adduser oder usermod zu der Gruppe hinzu:
Für Fedorasudousermod -aG dialout USERNAME
Für Debiansudoadduser USERNAME dialout
Für Archsudousermod -a -G uucp USERNAME
Der Vorgang der Gruppenmitgliedschaft ist nun abgeschlossen. Das System prüft jedoch die Informationen zur Gruppenzugehörigkeit während des ersten Anmeldeschrittes in grafischen Sitzungen und stellt sie dann allen laufenden Prozessen zur Verfügung.
Daher müssen Sie sich von der aktuellen grafischen Sitzung abmelden und dann wieder anmelden oder Ihren Rechner neu starten, damit die Änderungen wirksam werden. Nach Abschluss dieses Vorgangs haben Sie Lese- und Schreibzugriff auf das serielle Konvertergerät.
Wie man sich mit seriellen Konsolen unter Linux verbindet
Wenn Sie Zugriff auf eine Computer- oder Netzwerkkonsole benötigen, können Sie auf serielle Konsolenanwendungen zurückgreifen. Normalerweise benötigen Sie dazu einen Zugang über SSH. Soft- und hardwareseitig ist es jedoch in einigen Fällen auch möglich, nur über serielle Schnittstellen auf die Konsole zuzugreifen.
Diese Art von Beispielen finden Sie am häufigsten auf älteren Computern. Im Folgenden finden Sie einige der besten seriellen Konsolenanwendungen, die für Sie geeignet sind.
Minicom verwenden
Sie können Minicom, eine alte, aber noch funktionierende Anwendung, wie folgt auf Ihrem System installieren:
Unter Fedora, CentOS und RHEL
sudo yum install minicom
Unter Debian und Ubuntu
sudo apt-get install minicom
Unter Arch Linux
sudo snap install minicom
Wenn Sie die Anwendung zum ersten Mal starten, versucht sie standardmäßig, eine Gerätedatei wie /dev/modem zu öffnen. Sie bricht ab, wenn sie die Datei nicht finden kann. Um dieses Problem zu umgehen, können Sie den Einstellungsbildschirm der Anwendung mit dem Parameter -s direkt starten:
minicom -s
Sie können den Gerätenamen durch Drücken der Taste A und die Geschwindigkeit der seriellen Schnittstelle durch Drücken der Taste E einstellen. Wenn Sie das Programm dann mit Exit beenden, können Sie den entsprechenden seriellen Anschluss verwenden.
Auf dem Hauptbildschirm der Anwendung können Sie mit Strg A O zum Konfigurationsbildschirm zurückkehren, mit Strg A X die Anwendung beenden, mit Strg A W den Zeilenumbruchmodus aktivieren und mit Strg A Z Hilfe zu anderen Tastenkombinationen erhalten.
GTKTerm verwenden
Minicom wird im Allgemeinen von fortgeschrittenen Linux-Benutzern verwendet und ist daher für Anfänger nicht zu empfehlen. Linux-Neulinge können GTKTerm installieren, einen grafischen seriellen Terminalemulator für Linux. Sie können die Anwendung mit den folgenden Befehlen auf Ihrem System installieren:
Unter Fedora, CentOS und RHEL
sudo dnf -y install gtkterm
Unter Debian und Ubuntu
sudo apt-get install gtkterm
Unter Arch Linux
yay– S gtkterm
Wenn Sie die Anwendung starten, müssen Sie den Gerätenamen und die Geschwindigkeitsparameter über das Menü Konfiguration > Port wie folgt einstellen:
Speichern Sie die Einstellungen als Standard, um die spätere Verwendung zu erleichtern.
Verwendung von screen
Wenn Sie mit screen für die Verwaltung mehrerer Terminals vertraut sind, wissen Sie, dass Sie es auch für den Zugriff auf serielle Schnittstellen verwenden können. Hier sind die Befehle, um es zu installieren:
# Unter Fedora, CentOS und RHEL
sudo dnf -y install screen
Unter Debian, Ubuntu und Linux Mint
sudo apt-get -y install screen
Verwenden Sie Snap für andere Distributionen
sudo snap install screen –classic
Nach der Installation können Sie einen Befehl wie den folgenden ausführen, um eine Verbindung zu einer seriellen Konsole herzustellen:
Bildschirm /dev/ttyUSB0 115500
Jetzt können Sie eine serielle Portverbindung unter Linux einrichten
Die Möglichkeit, über die serielle Schnittstelle auf Ihr Linux-System zuzugreifen, ist eine sehr nützliche Funktion, insbesondere wenn Sie keinen Monitor an den SBC (Session Border Controller) anschließen möchten.
Da die Autorisierung der seriellen Konsole zum Zeitpunkt der Kompilierung in den Linux-Kernel eingebaut ist, sollten Sie zumindest ein Grundverständnis für den Linux-Kernel und seine Funktionsweise haben.