玩转树莓派3 -- 串口问题的解决

来源:互联网 发布:5250设置端口trunk 编辑:程序博客网 时间:2024/06/07 22:19

买到树莓派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: <None>


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: <None>

*******************************************************************************************************


其实在这个README当中,已经把如何硬件串口使用起来,写得非常明确了。

不知道大家能用两步解决吗?


做工程师这么多年,得出一个结论,做很多的项目固然是好事情

你会发现,有很多工程师,年纪也不小了,面试的时候,简历上也写着做过好多项目,看似有非常丰富的工作经历,阅历也非常宽泛,知识面也很广

但一碰到问题,他就心慌,就没有任何头绪,

这种情况的根本问题就是,他只顾做事情,没有时间去思考,对问题从表象到ROOT CAUSE,有一次很好的锻炼。


所以,项目不在多,而在精!!!




阅读全文
0 0