Kurze und allgemeine Frage
Ich verwende Debian 9 (Stretch) auf einem Beaglebone Black mit Kernel 4.9. Ich habe versucht, den Anweisungen zu folgen, die ich online gefunden habe, war aber bisher anscheinend nicht in der Lage, seine UART-Geräte zu konfigurieren. Wie konfiguriere ich mein Gerät? Wie debugge/behebe ich meine Konfiguration? Wie kann ich überprüfen, ob meine Konfiguration korrekt ist?
Lange und ausführliche Frage
Ich bin sehr neu in Embedded Linux im Allgemeinen und Beaglebone im Besonderen. Ich habe die hier gegebenen Anweisungen befolgt:
- BeagleBoard.org:Erste Schritte
Ich habe das neueste Image „Stretch IoT (ohne grafischen Desktop) für BeagleBone und PocketBeagle via microSD-Karte“ (insbesondere bone-debian-9.3-iot-armhf-2018-03-05-4gb.img) von der Seite „Neueste Bilder“ heruntergeladen und geflasht das Beagleboard von einer SD-Karte. Nach der Installation konnte ich von meinem Linux-Desktop über ein Seriell-zu-USB-Kabel auf den Beaglebone zugreifen – ähnlich wie im folgenden Artikel beschrieben:
- So verbinden Sie den Beaglebone Black seriell über USB
Ich konnte den folgenden screen
verwenden Befehl erfolgreich:
screen /dev/ttyUSB0 115200
Ich konnte auch ein Micro-USB-zu-USB-Kabel über SSH verbinden:
ssh [email protected]
Sobald ich mit dem Beaglebone verbunden war, überprüfte ich, ob meine Kernel-Version Linux beaglebone 4.9.82-ti-r102
war . Ich habe dann mehrere Artikel zur Beaglebone-UART-Konfiguration durchgelesen, darunter die folgenden:
-
Trevor’s Electronics Blog:Enable UARTs on Element 14 Beaglebone Black rev C
-
StackOverflow:Aktivieren von UART auf Beaglebone Black
-
Thing Printer:Cape Manager ist zurück, Baby!
-
Flaming Lotus Girls:Beaglebone Black – UART1 aktivieren
-
Billwaas Blog:Enable All UART Ports at Boot
-
Tender Love Making(?):Aktivierung von ttyO1 auf BeagleBone
-
ELinux:BeagleBoneBlack Debian
Mein Fazit war, dass es (im Allgemeinen) je nach Betriebssystem und Kernel-Version mehrere verschiedene Konfigurationsdateien gibt, nach denen gesucht werden muss. Dazu gehörten die folgenden:
/boot/uEnv.txt
/boot/uboot/uEnv.txt
/etc/default/capemgr
/media/BEAGLEBONE/uEnv.txt
Es wurden auch mehrere Gerätedateien erwähnt, wie zum Beispiel:
- /sys/devices/bone_capemgr.*/slots
Ich habe versucht, jede der folgenden Zeilen zu jeder der verschiedenen uEnv.txt
hinzuzufügen Dateien:
-
cape_enable=capemgr.enable_partno=BB-UART1,BB-UART2,BB-UART4,BB-UART5
-
optargs=capemgr.enable_partno=BB-UART1,BB-UART2,BB-UART3,BB-UART5
Ich habe auch versucht, die folgende Zeile zu /etc/default/capemgr
hinzuzufügen :
CAPE=BB-SPI-01,BB-UART1,BB-UART2,BB-UART4
Nach dem Neustart habe ich den folgenden Befehl verwendet, um zu überprüfen, ob die UART-Geräte erschienen sind:
ls -l /dev/ttyO*
Leider habe ich folgendes erhalten (unerwartete Ergebnisse):
[email protected]:~$ ls -l /dev/ttyO*
lrwxrwxrwx 1 root root 5 Jan 1 00:00 /dev/ttyO0 -> ttyS0
HINWEIS:Ich mache mir keine Sorgen um ttyO0
, sondern mit ttyO1, ..., ttyO5
.
Ich habe auch ein paar andere Dinge ausprobiert, aber (um Zeit und Platz zu sparen) werde ich nicht jeden Versuch beschreiben, es sei denn, es wird angefordert.
Was mache ich hier falsch? Wie aktiviere ich die UART-Geräte richtig?
Verwandte Themen:Wie aktiviere ich die Zwei-Faktor-Authentifizierung in Office 365?Akzeptierte Antwort:
Folgendes funktioniert für Debian 9.9 mit Kernel 4.14 (funktionierte auch mit Debian 8.3, funktionierte nicht mit Debian 9.3).
Beim Booten sehen Sie die /dev/ttyO1-, O2-, O4-Dateien, aber sie funktionieren nicht, bis Sie die Pins auf den richtigen Pinmux setzen:
#ttyO1:
config-pin P9_24 uart
config-pin P9_26 uart
#ttyO2:
config-pin P9_21 uart
config-pin P9_22 uart
#ttyO4:
config-pin P9_11 uart
config-pin P9_13 uart
Sie müssen diesen Schritt bei jedem Neustart durchführen. Es gehört in eine Art Startskript.
Sie können mit einem einfachen Loopback-Test bestätigen, dass die UARTs funktionieren, z. für UART4:
-
Platzieren Sie einen Draht zwischen P9_11 und P9_13
-
screen /dev/ttyO4
-
Text, den Sie in das Fenster eingeben, sollte angezeigt werden, trennen Sie das Kabel und weitere Eingaben werden nicht angezeigt. Der UART funktioniert.