高通平台USB调试指南和设计

本文详细介绍了在高通平台上进行USB调试的方法,包括使用LeCroy USB分析仪进行总线级别的问题排查,以及如何启用和利用USB驱动日志,如DWC3调试日志和phy-msm-usb调试日志。通过动态调试和事件追踪,可以有效地解决USB通信中的问题。
摘要由CSDN通过智能技术生成

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日志(追踪端点0IN/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”被认为是调试文件系统的挂载点。如果这个这个与系统中的挂载点不同,那么就用正确的路径代替它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值