1. 程式人生 > >[Android6.0][RK3399] 串列埠無法輸入輸出 串列埠列印亂碼

[Android6.0][RK3399] 串列埠無法輸入輸出 串列埠列印亂碼

Platform: RK3399
OS: Android 6.0
Version: v2017.03

新裝的電腦,安裝了 minicom 後,連線上 3399 的板子無列印資訊,無法輸入。安裝過程如下:
[Linux] 串列埠除錯工具 Minicom 詳細介紹

串列埠無任何輸出,無法輸入

minicom 工具預設配置是 tty8 ,我們採用的是 USB 轉串列埠。執行

ls -l /dev/ttyUSB*

一下即可知道我們的串列埠是 ttyUSB0。
所以

sudo minicom -s

選第三項 Serial port setup  ——> A Serial Device (手動修改為 /dev/ttyUSB0) ——> F (順便關掉硬體流控) ——> 回車 ——> Save setup as dfl
儲存,儲存的配置會放在 /etc/minicom/minicom.dfl 中

至此串列埠有輸出,但是為亂碼

串列埠有輸出,為亂碼

我們檢視 rk3399 預設的波特率,可知其為 1500000
方法如下:

grep "baudrate" ./kernel/arch/arm64/boot/dts/rockchip/rk3399* -nir

可以看到是 rk3399-android.dtsi 檔案中設定波特率

 fiq_debugger: fiq-debugger { 
 72         compatible = "rockchip,fiq-debugger"; 
            ...
 77         rockchip,baudrate = <1500000
>; /* Only 115200 and 1500000 */ 78 ... 80 };

所以我們將 minicom 中的波特率設定為 1500000 :
選第三項 Serial port setup  ——> E Bps/Par/Bits (按 E 切換為 150000) ——> 回車 ——> Save setup as dfl

至此,串列埠正常輸入輸出。

串列埠在正常輸出幾秒後輸出為亂碼

這個事情發生的很莫名其妙。
合入 HDMI-IN 的 patch 後串列埠異常,現象為正常輸出大概四秒,之後均為亂碼。
回退 HDMI-IN 的 patch 後串列埠正常。
但是 patch 中沒有任何與 Uart 有關的邏輯。

換了串列埠線,換插主機 USB 介面現象依舊復現。

看到 patch 中有開啟幾個 debug 的巨集,猜測是不是資料太多了導致。
嘗試將波特率從 150000 改為 115200(方法和上節相同,改 dts)
主機除錯端也同樣修改波特率。
問題解決。