树莓派4b安装ubuntu server18后如何开启串口?
树莓派4b的引脚图如下:
其中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文件。
方法二成功了。具体如下:
u-boot环境变量的说明可以看https://www.denx.de/wiki/view/DULG/UBootEnvVariables
这里提一下怎么通过串口进入u-boot。用一个串口转usb连接树莓派和自己电脑,然后用自己电脑上的串口调试助手发送指令。
开机按任意键进入u-boot,然后输入
setenv bootdelay -2
saveenv
从而设置环境变量取消等待时间并保存。
注意每行输入后都要加回车。
树莓派的屏幕上显示如下:
搞定!