IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> USB驱动-debug -> 正文阅读

[系统运维]USB驱动-debug

1. debugfs

如果系统没有自动挂载debugfs ,需要使用如下命令手动挂载:

mount -t debugfs none /sys/kernel/debug/		## 默认挂载
mount -t debugfs kernel_debug /data/			## 自定义挂载

在系统启动过程中,初始化usb 模块:

// \linux-5.10\drivers\usb\core\usb.c
static int __init usb_init(void)
{
	usb_debugfs_init();		//debugfs 初始化,即/sys/kernel/debug/(mount -t debugfs none /sys/kernel/debug/)

	retval = bus_register(&usb_bus_type);		//注册usb 总线

	retval = usb_register(&usbfs_driver);		//注册usb_driver: usbfs

	retval = usb_devio_init();					//usbfs 初始化,即/sys/kernel/debug/usb/

	retval = usb_hub_init();					//初始化usb_driver: hub

	retval = usb_register_device_driver(&usb_generic_driver, THIS_MODULE);	//generic 驱动
}

usb_register(&usbfs_driver)usb_devio_init()都是 usbfs 相关的初始化。
usbfs 为咱们提供了在用户空间直接访问 usb 硬件设备的接口,但它需要内核的大力支持,usbfs_driver(\drivers\usb\core\devio.c) 就是用来完成这个光荣任务的。

1.1 trace

Linux系统自带的一种 trace,位于/sys/kernel/tracing//sys/kernel/debug/tracing/,打印:

trace_dwc3_gadget_ep_cmd(dep, cmd, params, cmd_status);

(1)dwc3 trace

echo 1 > /sys/kernel/tracing/instances/usb/events/dwc3/enable	#打开dwc3的tracing
cat /sys/kernel/tracing/instances/usb/trace > /data/out.txt  	#保存trace

Note: To reduce the number of log events we can disable logging for dwc3_readl/writel.

echo 0 > /sys/kernel/debug/tracing/instances/usb/events/dwc3/dwc3_readl/enable
echo 0 > /sys/kernel/debug/tracing/instances/usb/events/dwc3/dwc3_writel/enable

(2)xhci trace

echo 1 > /sys/kernel/tracing/instances/usb/events/xhci-hcd/enable
cat /sys/kernel/tracing/instances/usb/trace_pipe > /data/trace_pipe.txt &

(3)trace 总开关:

echo 1 > /sys/kernel/tracing/tracing_on		#打开所有trace
cat /sys/kernel/tracing/trace_pipe

1.2 ipc_logging

Qualcomm 自己添加的一种log,用于跟踪 mdwc3 的行为。

cat /d/ipc_logging/4e00000.dwc3/log

cat /sys/kernel/debug/ipc_logging/4e00000.dwc3/log

1.3 strace

strace ./yavta -f YUYV -s 1280x720 -t 1/60 -c100 /dev/video0 > logcat.log

1.4 切换usb 模式

echo none > /sys/bus/platform/devices/6a00000.ssusb/mode   			#断开USB
echo peripheral > /sys/bus/platform/devices/6a00000.ssusb/mode   	#device mode
echo host > /sys/bus/platform/devices/6a00000.ssusb/mode   			#host mode

2. procfs

(1)查看IO 内存分配

cat /proc/iomem		#查看IO内存分配
sm6150:/ # cat /proc/iomem
00100000-002effff : cc_base
007c4000-007c4fff : hc_mem
007c8000-007cffff : /soc/sdcc1ice@7C8000
00884000-00887fff : /soc/i2c@884000						#i2c
0088c000-0088ffff : /soc/i2c@88c000
008c0000-008c5fff : /soc/qcom,qupv3_0_geni_se@8c0000
00a84000-00a87fff : /soc/i2c@a84000
00ac0000-00ac5fff : /soc/qcom,qupv3_1_geni_se@ac0000
01d90000-01d97fff : /soc/ufsice@1d90000
01fcb244-01fcb247 : vls_clamp_reg
01fed000-01fed027 : /soc/cx_ipeak@01fed000
03000000-03dc1fff : pinctrl
...
08804000-08804fff : hc_mem
088e0000-088e1fff : eud_base
088e2000-088e217f : qusb_phy_base					#usb phy
088e3000-088e317f : qusb_phy_base				
090cc000-090cc2ff : lagg-base
0a60c100-0a60ccff : /soc/ssusb@a600000/dwc3@a600000		#usb0
0a800000-0a807fff : /soc/hsusb@a800000/dwc3@a800000		#usb1
...

(2)查看系统注册的设备和主设备号:

sm6150:/ # cat /proc/devices | grep usb
180 usb
189 usb_device
494 ccid_usb
495 msm_usb_bridge
506 gsi_usb

3. host

(1)查看USB插入设备信息,打印所有总线下的设备信息(包含描述符信息)。

cat /sys/kernel/debug/usb/devices

(2)查看usb 总线下的device:

ls /sys/bus/usb/devices/
1-0:1.0 2-0:1.0 3-0:1.0 usb1 usb2 usb3

解析:

1-0:1.0		1-0(集线器1-集线器端口号0):1(第一个配置).0(第一个接口)
usb1		dummy root hub、USB主机控制器、USB总线1;
usb2		2.0 root hub、USB主机2.0控制器、USB总线2;
usb3		3.0 root hub、USB主机3.0控制器、USB总线3

插入U盘(多出了一个设备接口:2-1:1.0)

1-0:1.0 2-0:1.0 2-1 2-1:1.0 3-0:1.0 usb1 usb2 usb3

解析;

2-1			u盘设备
2-1:1.0		2-1(集线器2-集线器端口号1):1(第一个配置).0(第一个接口)

(3)查看设备树节点架构:

ls /sys/devices/platform/soc/4e00000.ssusb/4e00000.dwc3/xhci-hcd.2.auto/usb2/2-1/2-1:1.0

解析:

soc					#设备树根节点的子节点,作为platform device被系统解析
4e00000.ssusb 		#因soc具有compatible的bus属性,其子节点作为platform设备注册,高通定义的mdwc
4e00000.dwc3		#dwc3 usb core子系统,被mdwc 注册
xhci-hcd.2.auto		#主机控制器xhci
usb2				#usb2.0控制器,usb总线2
2-1					#usb设备(如U盘)
2-1:1.0				#usb接口设备
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 17:06:53  更:2022-06-26 17:08:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 23:55:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码