Krátká a obecná otázka
Používám Debian 9 (Stretch) na Beaglebone Black s jádrem 4.9. Pokusil jsem se postupovat podle pokynů, které jsem našel online, ale zdá se, že jsem dosud nebyl schopen nakonfigurovat zařízení UART. Jak nakonfiguruji své zařízení? Jak mohu odladit/odstranit problémy s konfigurací? Jak mohu ověřit, zda je moje konfigurace správná?
Dlouhá a podrobná otázka
Jsem velmi nový v embedded Linuxu obecně a v Beaglebone konkrétně. Postupoval jsem podle pokynů zde:
- BeagleBoard.org:Začínáme
Stáhl jsem si nejnovější obrázek „Stretch IoT (bez grafické plochy) pro BeagleBone a PocketBeagle přes microSD kartu“ (konkrétně bone-debian-9.3-iot-armhf-2018-03-05-4gb.img) z nejnovější stránky s obrázky a flashnul jsem Beagleboard z SD karty. Po instalaci jsem byl schopen přistupovat k Beaglebone z mého linuxového desktopu přes sériový-USB kabel – způsobem podobným tomu, co je popsáno v následujícím článku:
- Jak připojit Beaglebone Black přes sériový port přes USB
Byl jsem schopen použít následující screen
příkaz úspěšně:
screen /dev/ttyUSB0 115200
Také se mi podařilo připojit kabel Micro-USB na USB pro připojení přes SSH:
ssh [email protected]
Po připojení k Beaglebone jsem ověřil, že moje verze jádra je Linux beaglebone 4.9.82-ti-r102
. Poté jsem si pročetl několik článků o konfiguraci Beaglebone UART, včetně následujících:
-
Blog Trevor's Electronics:Povolte UART na Element 14 Beaglebone Black rev C
-
StackOverflow:Povolení UART na Beaglebone Black
-
Thing Printer:Cape Manager je zpět, zlato!
-
Flaming Lotus Girls:Beaglebone Black – povolte UART1
-
Billwaa’s Blog:Enable All UART Ports at Boot
-
Tender Love Making(?):Povolení ttyO1 na BeagleBone
-
ELinux:BeagleBoneBlack Debian
Můj závěr byl, že (obecně řečeno) existuje několik různých konfiguračních souborů, které je třeba zkontrolovat, v závislosti na operačním systému a verzi jádra. Ty zahrnovaly následující:
/boot/uEnv.txt
/boot/uboot/uEnv.txt
/etc/default/capemgr
/media/BEAGLEBONE/uEnv.txt
Bylo také zmíněno několik souborů zařízení, jako například:
- /sys/devices/bone_capemgr.*/slots
Pokusil jsem se přidat každý z následujících řádků do každého z různých uEnv.txt
soubory:
-
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
Také jsem zkusil přidat následující řádek do /etc/default/capemgr
:
CAPE=BB-SPI-01,BB-UART1,BB-UART2,BB-UART4
Po restartu jsem pomocí následujícího příkazu zkontroloval, zda se objevila zařízení UART:
ls -l /dev/ttyO*
Bohužel jsem dostal následující (neočekávané výsledky):
[email protected]:~$ ls -l /dev/ttyO*
lrwxrwxrwx 1 root root 5 Jan 1 00:00 /dev/ttyO0 -> ttyS0
POZNÁMKA:Nezajímá mě ttyO0
, ale spíše s ttyO1, ..., ttyO5
.
Zkoušel jsem také několik dalších věcí, ale (v zájmu úspory času a místa) nebudu popisovat každý pokus, pokud o to nebude požádáno.
co tady dělám špatně? Jaký je správný způsob, jak povolit zařízení UART?
Související:Jak povolit dvoufaktorové ověřování v Office 365?Přijatá odpověď:
Následující funguje pro Debian 9.9 s jádrem 4.14 (fungovalo také s Debianem 8.3, nefungovalo s Debianem 9.3).
Po spuštění do něj uvidíte soubory /dev/ttyO1,O2,O4, ale nebudou fungovat, dokud nenastavíte piny na správný pinmux:
#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
Tento krok musíte provést při každém opětovném spuštění. Patří do nějakého spouštěcího skriptu.
Můžete potvrdit, že UARTy fungují jednoduchým testem zpětné smyčky, např. pro UART4:
-
Umístěte vodič mezi P9_11 a P9_13
-
obrazovka /dev/ttyO4
-
Text, který zadáte do okna, by se měl zobrazit, odpojte kabel a další psaní se již nezobrazí. UART funguje.