买到树莓派3,想通过串口控制台来玩一下
结果发现,串口是不能用的
这就意味着,开机过程当中,看不到那些字符串打印,之后,也使用不了串口控制台
查了一下网上的相关文章
主要原因是,树莓派3带有蓝牙功能,而该蓝牙模块是通过硬件串口UART0/ttyAMA0连接的
另外还有一个软件串口 mini-UART (ttyS0),但不能产生稳定的频率,因为,该软件串口的频率是与CPU频率相关的
由于树莓派官方,不仅没有公布这块板子的电路图,而且,也找不到CPU BCM2837的芯片手册
所以,就不要从硬件角度去想着如何把这个问题搞得更透了
那就从软件的角度去把这个问题解决
网上的相关文章,有很多,有一部分最终结果,也是能将串口控制台能使用起来了,达到了目的
但问题在于,有些写得很多,把不必要的部分也加进来
有些写得看似很精简,但按照这个方法去解决,又根本没有达到目的
我将网上的一部分文章归纳了一下
一些步骤是都有提及的,一些步骤是有些文章有,有些文章却没有的
如果说这是一个时序逻辑,那如何把必要的步骤提取出来,然后按照一定的先后顺序去实施,是问题解决的关键
归纳了一下,有这此步骤,是大家都提及的:
1.sudo systemctl disable hciuart
2.dtoverlay=pi3-disable-bt --- /boot/config.txt
3.edit /lib/systemd/system/hciuart.service
and replace ttyAMA0 with ttyS0
4.dtoverlay=pi3-miniuart-bt --- /boot/config.txt
5./boot/cmdline.txt
所以问题来了,这5个步骤都需要吗,以及这些步骤之间有时间先后吗?
问题的解决,还是从最根本的/boot/overylays/README而来:
*******************************************************************************************************
Name: pi3-disable-bt
Info: Disable Pi3 Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15
N.B. To disable the systemd service that initialises the modem so it
doesn't use the UART, use 'sudo systemctl disable hciuart'.
Load: dtoverlay=pi3-disable-bt
Params:
Name: pi3-miniuart-bt
Info: Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore
UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum
usable baudrate.
N.B. It is also necessary to edit /lib/systemd/system/hciuart.service
and replace ttyAMA0 with ttyS0, unless you have a system with udev rules
that create /dev/serial0 and /dev/serial1, in which case use
/dev/serial1 instead because it will always be correct. Furthermore,
you must also set core_freq=250 in config.txt or the miniuart will not
work.
Load: dtoverlay=pi3-miniuart-bt
Params:
*******************************************************************************************************
其实在这个README当中,已经把如何硬件串口使用起来,写得非常明确了。
不知道大家能用两步解决吗?
做工程师这么多年,得出一个结论,做很多的项目固然是好事情
你会发现,有很多工程师,年纪也不小了,面试的时候,简历上也写着做过好多项目,看似有非常丰富的工作经历,阅历也非常宽泛,知识面也很广
但一碰到问题,他就心慌,就没有任何头绪,
这种情况的根本问题就是,他只顾做事情,没有时间去思考,对问题从表象到ROOT CAUSE,有一次很好的锻炼。
所以,项目不在多,而在精!!!