玩轉樹莓派3 -- 串列埠問題的解決
買到樹莓派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,有一次很好的鍛鍊。
所以,專案不在多,而在精!!!