天天看點

樹莓派4b ubuntu系統開啟序列槽

樹莓派4b安裝ubuntu server18後如何開啟序列槽?

樹莓派4b的引腳圖如下:

樹莓派4b ubuntu系統開啟序列槽
樹莓派4b ubuntu系統開啟序列槽

其中GPIO14和GPIO15是硬體序列槽。

因為我安裝的不是Raspian系統,是以無法用raspi-config打開該序列槽。

ubuntu server raspi系統的/boot/firmware/config.txt裡也說明了,enable_uart=1預設啟用這個序列槽,linux裡面名字叫 /ttyAMA0,但是預設是當序列槽控制台使用了(/boot/firmware/nobtcmd.txt裡也寫了console = /ttyAMA 921600)

而且這個硬體序列槽也和藍牙連接配接在一起。想要用這個序列槽給另外的外設使用,必須禁用掉序列槽控制台和藍牙。

方法:

1、/boot/firmware/nobtcmd.txt裡删除console = /ttyAMA 921600進而禁用序列槽控制台。這個txt檔案也可以用讀卡器把sd卡插到windows系統裡在system-boot裡找到。

2、/boot/firmware/config.txt 裡設定enable_uart=1(預設就是)。如果=0表示啟用minicom序列槽,而不是這個硬體序列槽。

3、/boot/firmware/config.txt 裡加入一行dtoverlay=disable-bt進而禁用藍牙。

4、sudo systemctl disable bluetooth…… 禁用掉和藍牙有關的開機啟動項。直到桌面不再顯示藍牙标志,但是還有/ttyAMA0存在。

這樣,開機後連接配接序列槽外設,使用/ttyAMA0就能正常序列槽通信了。

建議閱讀樹莓派官方文檔:

https://www.raspberrypi.org/documentation/configuration/uart.md

還有linux的文檔:

https://elinux.org/RPi_Serial_Connection

但現在還有個問題,如果在開機前就連接配接外設,那麼序列槽外設發送的序列槽資料會幹擾ubuntu開機,因為ubuntu開機時u-boot(類似bootloader)會預設等待序列槽資料2s再進入autoboot打開系統,這期間一旦有序列槽資料就會進入u-boot(類似電腦開機按F2會進入BIOS)。這會導緻系統無法打開,螢幕一直顯示序列槽裝置發來的亂碼。

解決辦法是取消這個u-boot的2s等待時間,直接進入系統(但這樣也會導緻以後再也進不了u-boot了)

主要參考這篇用bing搜到的解答,askubuntu.com真的是個不錯的網站:

https://askubuntu.com/questions/1215848/how-to-disable-ttyama0-console-on-boot-raspberry-pi

裡面提到了兩種取消等待時間的方法:

方法一:在自己電腦上重新編譯修改過的u-boot,再把.bin檔案替代原來的rasp4.bin(/boot/firmware裡面)

方法二:開機利用序列槽進入u-boot,鍵入指令取消開機等待

我兩種方法都試過,但是方法一好像不起作用,可能是raspi4還不成熟,不能這麼替換自己編譯的.bin檔案。

方法二成功了。具體如下:

樹莓派4b ubuntu系統開啟序列槽

u-boot環境變量的說明可以看https://www.denx.de/wiki/view/DULG/UBootEnvVariables

這裡提一下怎麼通過序列槽進入u-boot。用一個序列槽轉usb連接配接樹莓派和自己電腦,然後用自己電腦上的序列槽調試助手發送指令。

樹莓派4b ubuntu系統開啟序列槽

開機按任意鍵進入u-boot,然後輸入

setenv bootdelay -2
saveenv
           

進而設定環境變量取消等待時間并儲存。

注意每行輸入後都要加回車。

樹莓派的螢幕上顯示如下:

樹莓派4b ubuntu系統開啟序列槽

搞定!

繼續閱讀