rockchip 3128 平台USB接口鼠標U盤功能調試日記


2019-04-12

關鍵詞: rk3128 OTG、rk3128外接鼠標U盤、RK外接鼠標U盤

本篇文章是筆者根據自己當前所掌握知識對 rk3128 平台 USB 接口接鼠標實現輸入功能調試的一個記錄,不對文章所述內容的絕對、完全正確性負責。

 


 

 

1、前言

筆者最近有點煩。無端端接到公司讓調試 rk3128 平台樣機的任務,雖說自己是 Android 系統集成開發出身,但那也是 2 年前的事了,筆者現在單戀 bigdata ,只想靜靜地和它廝守余生好嗎!不過牢騷歸牢騷,既然是領導派的任務,那還是要做的。那既然都做了,不輸出點什么又讓我很不自在。

 

今天這個問題的起因是因為我們的樣機條件實在是太差了,沒有配置觸摸屏,僅一塊顯示屏。無法輸入的話接下來的工作可不好做啊。於是就想到了外接鼠標,通過鼠標來模擬觸摸輸入的方式來控制 Android 系統。而我們這塊樣機,剛剛好 OTG 功能是不正常的,於是就將這一調試過程記錄下來,以期后續能給遇到有同樣問題的同學一些啟發。

 

筆者手里的樣機是 rk3128 平台的樣機,運行 Android 4.4 操作系統。問題的現象自然就是插上鼠標和 U 盤以后不能正常工作與識別。下面是排錯過程

 

2、Debug

調試過程無非就兩個方向:1. 檢查硬件; 2. 檢查軟件 。 依據筆者多年被坑經驗來看:作為一名軟件開發,但凡樣機出現一些匪夷所思的問題,稍微檢查一下我們的代碼沒有發現問題以后,就要懷疑硬件了。而作為一名要經常和各種硬件設備打交道的程序員來說,掌握一些基礎的硬件開發知識也是很有必要的,這些基礎的硬件知識,往往能讓我們在懟硬件時更理直氣壯一些。

 

2.1、硬件問題排查

原理圖、PCB 圖檢查

這個工作一般和我們程序員無關。主要是因為大多數程序員都不懂。不過這塊問題比較 “玄學” ,像筆者就遇到過,硬件檢查了多次,確認自己畫的圖和芯片廠商給的電路參考圖沒什么出入了,但是最后還是查出來某個元器件電壓值差了一點。雖然這種情況比較少見,但實在排查不出原因的時候,也可以作為一個分析點切入進去。

 

電壓檢查

通常,鼠標和 U盤 的工作電壓都是 5V 。在前面確認到電路圖沒有什么問題以后可以來測量一下 USB 接口的供電電壓。

usb 原理圖

通常,在上面兩步都檢查過了沒有問題以后,就可以來軟件層面排查了。

 

2.2、軟件問題排查

基礎功能確認

通常樣機在初期階段都會有非常多的問題,甚至有不少連系統都不能正常啟動的。所以我們首先要確保我們的系統是能穩定運行的。如何確認?有屏幕看能否正常進入到 Android Launcher 界面。沒屏幕的看串口,看通過串口能否正常與系統交互,串口控制台進程一般是在 5 ~ 8 秒后就啟動了。如果很不幸你的控制台進程默認是關閉狀態的,那我們還可以看內核打印。rk3128 平台在系統穩定運行以后可以在內核中看到以下三條打印

1. 開機動畫結束打印

service.bootanim.exit 屬性的設置。

2. 以太網口啟動打印

eth0: PHY ...

3. 系統健康管家進程的監控打印

healthd: ...   這個監控打印在系統運行穩定以后每分鍾打印一次。

 

驅動檢查

在 Linux 內核啟動初期就是去執行各種驅動程序。可以適當關注一下開機時的系統內核打印,看看是否有報什么錯誤信息。這一塊沒有什么標准的,如果真的是這里出了問題,問題的確認就要看自己的造化了。

 

dts 配置檢查

在軟件層面上,比較大可能都是這一塊出了問題。

 

USB 接口的默認配置信息位於

./kernel/arch/arm/boot/dts/rk312x.dtsi

rk3128 平台的 USB 默認配置

默認的配置信息通常是不會有問題的,主要看看自定義的 dts 中是否有修改默認配置的情況。筆者這里確實是發現了 usb-mode 欄的值被修改了。

usb-mode 默認值被修改

筆者這邊,將這個 rockchip,usb-mode 的值改成 1 以后問題就解決了

 

在串口中也可以通過命令來讀取這個 usb-mode 的值。

cat /sys/bus/platform/drivers/usb20_otg/force_usb_mode

在擁有權限的情況下,可以直接通過 echo 命令來更改這個文件的值以動態修改 USB 模式。

echo 1 > /sys/bus/platform/drivers/usb20_otg/force_usb_mode
echo 2 > /sys/bus/platform/drivers/usb20_otg/force_usb_mode

 

USB 的幾種工作模式

USB 設備的通信模式為 主/從 通信模式。只有當主設備(usb-mode: Host )與從設備(usb-mode: Device )連接時,才能成功建立數據通信。而我們的鼠標、U盤在 USB 通信中都屬於 從設備 。因此,我們的開發板就必須設置為 主設備 才可讓這些設備正常工作。

 


參考: [RK3288][Android6.0] USB OTG模式及切換 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM