9除錯指南和技術
了解usb的結構體能夠幫助我們高效的除錯乙個問題並且發現潛在的需要修復的
bug。這章介紹了基本的用於
usb相關問題的除錯方法和所能獲得的除錯機制。
9.1 usb lecroy logs
lecroy usb分析儀是乙個很好的工具,它允許我們蒐集發生在匯流排上的詳細的傳輸包。這個在觀察匯流排級別的問題的時候是很有幫助的額,例如,協議相關的,電源管理,吞吐量,等。
和分析儀同等重要的是usb包的解析,這個也是由
lecroy
提供的。這允許使用者很容易就能理解
usb匯流排上出現的資料。
9.1.1 usb協議元件
usb協議元件是乙個解析應用,它被用來和
lecroy
分析儀進行交流。
lecroy
分析儀能夠執行一些有用的功能,例如:
不同的觸發模式
snapshot ---最簡單的捕獲模式,這能夠被使用者停止或者當
buffer
被填充了的時候被停止。
人工觸發 ---- 使用者觸發 開始或者停止;直到使用者停止捕獲為止才停止執行。
事件觸發 --- 基於事件的觸發,例如,匯流排
reset
,匯流排掛載,匯流排恢復,等,當乙個定義的事件出現的時候就會引起觸發。
9.2 usb驅動日誌
在usb軟體驅動裡,一些日誌可能被使能了來幫助除錯問題。
9.2.1 dwc3除錯日誌
這部分只與擁有usb3.0控制器的平台相關
9.2.1.1使用動態的除錯
如果在你的核心配置中動態除錯被使能了(預設是使能的),使用者通過debugfs命令能夠輕鬆的使能日誌。
使能usb除錯日誌
echo 『
file dwc3-msm.c +p
』 > /d/dynamic_debug/control
echo 『
file dwc3_otg.c +p
』 > /d/dynamic_debug/control
使能usb 冗餘的除錯
log
echo 『
file gadget.c +p
』 > /d/dynamic_debug/control
注意:「/d
」被認為是除錯檔案系統的掛載點。如果這個這個與系統中的掛載點不同,那麼就用正確的路徑代替它。
9.2.1.2 使用
usb裝置模式事件追蹤
在dwc3 udc驅動中,具有記錄明確的事件到乙個靜態的
buffer
中的你能力。採用將
log儲存在乙個靜態
buffer
中的方式是因為事件一般預計都是「嘈雜的」,因此使用核心
log列印可能會有乙個很高的延時。
輸出buffer內容
dwc3驅動建立了乙個
debugfs
檔案來讀出靜態
buffer
中的內容。這個靜態
buffer
也可以從
ram dump
中被訪問
cat /sys/kernel/debug/8a00000.dwc3/events
使能端點的掩碼
預設的,驅動只對下面的情況使能日誌:
匯流排事件(掛載,reset,斷開,等)
usb控制器相關的操作(掛載,狀態機事件等)
端點0日誌(追蹤端點0的
in/out包)
額外的每個端點的日誌的使能取決於端點使用的掩碼
配置接收端點的掩碼
模組引數--- /sys/module/dwc3/parameters/ep_addr_rxdbg_mask
值 --- 寫入到引數的值被當做是乙個位對映的值到各自的端點號;例如:
如果我們寫乙個「2
」(10b
),我們就使能了
ep0的列印日誌(一直是預設的)和
ep 1 out
列印日誌
echo 2 > /sys/module/dwc3/parameters/ep_addr_rxdbg_mask
如果我們寫乙個「14
」(1110b
),我們就使能了
ep0的列印日誌(一直是預設的)和
ep 1/2/3 out
的列印日誌
echo 14 > /sys/module/dwc3/parameters/ep_addr_rxdbg_mask
配置傳送ep掩碼
模組引數 --- /sys/module/dwc3/parameters/ep_addr_txdbg_mask
值 --- 寫入到引數的值被當做是乙個位對映的值到各自的端點號;例如:
如果我們寫乙個「2
」(10b
),我們就使能了
ep0的列印日誌(一直是預設的)和
ep 1 in
的列印日誌
echo 2 > /sys/module/dwc3/parameters/ep_addr_txdbg_mask
如果我們寫乙個「14
」(1110b
),我們就使能了
ep0的列印日誌(一直是預設的)和
ep 1/2/3 in
的列印日誌
echo 14 > /sys/module/dwc3/parameters/ep_addr_txdbg_mask
9.2.2 phy-msm-usb 除錯
logs
如果你的核心配置中動態除錯被使能了(預設是使能的),使用者能夠通過乙個debugfs命令輕易的使能
logging
echo 『
file phy-msm-usb.c +p
』 > /d/dynamic_debug/control
使能usb冗餘除錯
logs
echo 『
file gadget.c +p
』 > /d/dynamic_debug/control
「/d」被認為是除錯檔案系統的掛載點。如果這個這個與系統中的掛載點不同,那麼就用正確的路徑代替它。
年前高通平台驅動除錯
最近接了個任務 再6085平台上除錯atheros6002wifi模組。按理說,高通已經把工作都做完了,我沒什麼好做的了。可是一直都不是很順。首先,我拿到的模組是sd插卡式的。結果我的開發板上沒有焊大sd插槽,只有乙個tf插槽。沒辦法,只能自己用排線飛了。飛完後,好像怎麼都沒有按照預期的執行。跟蹤日...
Android 高通平台Camera除錯
1.af除錯部分 1 通過屬性控制 af log控制 setprop persist.vendor.camera.loginfomask 0x8000000 af info level log setprop persist.vendor.camera.lo erbosemask 0x8000000...
高通平台音訊除錯筆記
可以通過抓取如下log來檢視對應音訊場景對應的音訊裝置,adb logcat v time grep select device 如果沒有聲音,則要確認如下幾點 通過檢視原理圖確定speaker的接法,是直接接在lineout,耳機左右聲道還是接codec的spkdrv。如果是接在lineout,則...