高通USB 調試總結隨筆
最近分析了個高通USB 1 通過 主板上的HUB芯片不能正常通信識別USB 外設的問題,
注意分析時,一定要再三確認硬件工作正常 ,可以做個實驗,
剪開一根USB 線,飛線到HUB芯片DPDM 上,如果,USB 接在電腦上,USB 外設接在HUB口上,電腦能正常識別外設,說明HUB芯片正常工作。
如下是對軟件調試方面的一些方法,寫個隨筆備份下:
1. 分析USB log
echo ‘file dwc3-msm.c +p’ > /d/dynamic_debug/control
echo ‘file phy-msm-snps-hs.c +p’ > /d/dynamic_debug/control
echo ‘file phy-msm-qmp.c +p’ > /d/dynamic_debug/control
echo ‘file hub.c +p’ > /d/dynamic_debug/control
2. 正常識別流程
正常流程是vbus是常供電,device上電後,device拉高DP,host檢測到dp拉高後,來枚舉device。
@ drivers/usb/dwc3/dwc3-msm.c
static void dwc3_otg_sm_work(struct work_struct *w)
{
case DRD_STATE_HOST_IDLE:
ret = dwc3_otg_start_host(mdwc, 1);
這裏就會切到host mode
}
3. 修改爲host 模式
dwc1: dwc3@a800000{
--- dr_mode="drd".
+++ dr_mode="host"
4. USB檢測插入原理
在網上看到一篇寫的非常好的文章,等有時間,我再學習總結到這裏面,
先貼個鏈接:《如何檢測USB 已經插入?》