Domanda breve e generale
Sto eseguendo Debian 9 (Stretch) su un Beaglebone Black con kernel 4.9. Ho provato a seguire le istruzioni che ho trovato online, ma finora non sono stato apparentemente in grado di configurare i suoi dispositivi UART. Come configuro il mio dispositivo? Come posso eseguire il debug/risoluzione dei problemi della mia configurazione? Come posso verificare se la mia configurazione è corretta?
Domanda lunga e dettagliata
Sono molto nuovo nell'embedded Linux in generale e in Beaglebone in particolare. Ho seguito le istruzioni fornite qui:
- BeagleBoard.org:per iniziare
Ho scaricato l'ultima immagine "Stretch IoT (senza desktop grafico) per BeagleBone e PocketBeagle tramite scheda microSD" (in particolare bone-debian-9.3-iot-armhf-2018-03-05-4gb.img) dalla pagina delle immagini più recenti e ho eseguito il flashing il Beagleboard da una scheda SD. Dopo l'installazione sono stato in grado di accedere a Beaglebone dal mio desktop Linux tramite un cavo da seriale a USB, in un modo simile a quanto descritto nel seguente articolo:
- Come collegare il Beaglebone Black tramite seriale su USB
Sono stato in grado di utilizzare la seguente screen
comando riuscito:
screen /dev/ttyUSB0 115200
Sono stato anche in grado di collegare un cavo da Micro-USB a USB tramite SSH:
ssh [email protected]
Una volta connesso al Beaglebone ho verificato che la mia versione del kernel fosse Linux beaglebone 4.9.82-ti-r102
. Ho quindi letto diversi articoli sulla configurazione UART di Beaglebone, inclusi i seguenti:
-
Blog sull'elettronica di Trevor:abilita gli UART su Element 14 Beaglebone Black rev C
-
StackOverflow:abilitazione di UART su Beaglebone Black
-
Stampante di cose:Cape Manager è tornato, piccola!
-
Flaming Lotus Girls:Beaglebone Black – abilita UART1
-
Blog di Billwaa:abilita tutte le porte UART all'avvio
-
Tender Love Making(?):Abilitazione di ttyO1 su BeagleBone
-
ELinux:BeagleBoneBlack Debian
Il mio punto di partenza è che (in generale) ci sono diversi file di configurazione da controllare, a seconda del sistema operativo e della versione del kernel. Questi includevano quanto segue:
/boot/uEnv.txt
/boot/uboot/uEnv.txt
/etc/default/capemgr
/media/BEAGLEBONE/uEnv.txt
Sono stati menzionati anche diversi file del dispositivo, come:
- /sys/devices/bone_capemgr.*/slots
Ho provato ad aggiungere ciascuna delle seguenti righe a ciascuno dei vari uEnv.txt
file:
-
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
Ho anche provato ad aggiungere la seguente riga a /etc/default/capemgr
:
CAPE=BB-SPI-01,BB-UART1,BB-UART2,BB-UART4
Dopo il riavvio ho utilizzato il seguente comando per verificare se i dispositivi UART erano apparsi:
ls -l /dev/ttyO*
Purtroppo ho ottenuto quanto segue (risultati imprevisti):
[email protected]:~$ ls -l /dev/ttyO*
lrwxrwxrwx 1 root root 5 Jan 1 00:00 /dev/ttyO0 -> ttyS0
NOTA:non mi interessa ttyO0
, ma piuttosto con ttyO1, ..., ttyO5
.
Ho provato anche alcune altre cose ma (nell'interesse di risparmiare tempo e spazio) non descriverò ogni tentativo a meno che non sia richiesto.
Cosa sto sbagliando qui? Qual è il modo corretto per abilitare i dispositivi UART?
Correlati:come abilitare l'autenticazione a due fattori in Office 365?Risposta accettata:
Quanto segue funziona per Debian 9.9 con Kernel 4.14 (funziona anche con Debian 8.3, non funziona con Debian 9.3).
All'avvio vedrai i file /dev/ttyO1,O2,O4, ma non funzioneranno finché non imposti i pin sul pinmux corretto:
#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
Devi fare quel passaggio ad ogni riavvio. Appartiene a una sorta di script di avvio.
Puoi confermare che gli UART stanno funzionando con un semplice test di loopback, ad es. per UART4:
-
Posizionare un filo tra P9_11 e P9_13
-
schermo /dev/ttyO4
-
Il testo digitato nella finestra dovrebbe essere visualizzato, scollegare il cavo e l'ulteriore digitazione non verrà visualizzata. L'UART funziona.