Beaglebone Black 有 4.5 個 UART 接腳可供使用,但預設的情況下為關閉的狀態。也就是說,你無法透過這些腳位來正常的接收資料,就算你透過一些軟體的方式來強制運行,他還是會自動關閉連線狀態,導致連接不穩。為什麼我知道這些呢? 因為我最近在測試的時候發現有這樣的狀況,拜讀過 Google 大神的幾篇資料後才得以解決。這搞了我好幾天啊啊啊!
綜合以上所知,我們知道如果要使用 Beaglebone Black 上的這幾個 UART 腳位的話,我們必須修改內核的設定來強制開啟這幾個 UART 腳位的通訊功能。
新增設定
透過 Cloud9 或者是終端機連上 Beaglebone Black 後,輸入
1 2 |
nano /boot/uboot/uEnv.txt |
然後在 #cape=
的下方加入
1 2 |
optargs=capemgr.enable_partno=BB-UART1,BB-UART2,BB-UART4, BB-UART5 |
這行的意思是開啟 Beaglebone Black 上所有的 UART 腳位,在這部分你可以參考上方的腳位圖來開啟所需的腳位即可,也就是刪去不需要 UART 標號。
按下 Ctrl+X 以及 Y 再按下 Enter 後存檔,這時設定尚未生效,你需要重新開機後才會令設定生效。
shutdown -r now
確認啟動
等待 Beaglebone Black 重新開機完成後,輸入這行指令
1 2 |
ls -l /dev/ttyO* |
你應該會看到如下的訊息
1 2 3 4 5 6 |
root@beaglebone:/var/lib/cloud9# ls -l /dev/ttyO* crw-rw---- 1 root tty 248, 0 Jul 13 18:34 /dev/ttyO0 crw-rw---T 1 root dialout 248, 1 Jul 13 18:34 /dev/ttyO1 crw-rw---T 1 root dialout 248, 2 Jul 13 18:34 /dev/ttyO2 crw-rw---T 1 root dialout 248, 4 Jul 13 18:34 /dev/ttyO4 |
如果只有出現
1 2 3 |
root@beaglebone:/var/lib/cloud9# ls -l /dev/ttyO* crw-rw---- 1 root tty 248, 0 Jul 13 18:34 /dev/ttyO0 |
那有可能是你的設定出錯導致,請再回到第一步驟嘗試。
經過上述兩個步驟後,Beaglebone Black 的 UART 通訊功能才算是正式啟用!
附註
- 關於 Beaglebone Black 的基礎教學可以參考這本電子書: Beaglebone Black 課程講義