Linux USB subsystem --- USB Debug File System Initialize

原创 2012年03月22日 18:23:47

目的:对USB进行深入学习,在此留下笔记。欢迎讨论。

[Author: Bo Shen <voice.shen@gmail.com>]

[Linux 3.2] [driver/usb/core/usb.c]


首先来分析USB子系统初始化的第一个函数usb_debugfs_init()

static int usb_debugfs_init(void)

{
	usb_debug_root = debugfs_create_dir("usb", NULL);
	if (!usb_debug_root)
		return -ENOENT;

	usb_debug_devices = debugfs_create_file("devices", 0444,
						usb_debug_root, NULL,
						&usbfs_devices_fops);
	if (!usb_debug_devices) {
		debugfs_remove(usb_debug_root);
		usb_debug_root = NULL;
		return -ENOENT;
	}

	return 0;
}

其主要作用就是在debugfs中创建一个usb目录,然后在usb目录下面创建一个devices的文件。

问题:创建的这些文件在那里呢?

答案:存在于debug文件系统里面。

问题:debug文件系统又在那里呢?

答案:http://blog.csdn.net/voice_shen/article/details/7084870


下面假设debug文件系统已经被挂载到/sys/kernel/debug目录里。进入usb目录,查看

# ls

devices ehci ohci

这个devices文件就是上面创建的。

注意:这个文件的内容和/proc/bus/usb/devices的内容是一致的。

# cat devices

---------------------------取其中一段----------------------------------

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0dd8 ProdID=f607 Rev=11.00
S: Manufacturer=Netac
S: Product=OnlyDisk
S: SerialNumber=AA04012700009721
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=31875us

----------------------------------------------------------------------------

这些信息都是什么意思呢?具体参考:<Documentations/usb/proc_usb_info.txt>


问题:这些信息是从那里来的呢?

回答:后续给出答案。

 

问题:devices文件中的ehci,ohci是如何加入的呢?

回答:后续给出答案。

第二篇:欲善其事,先利其器-USB3.0 Kernel debug extension

从第一份工作,主要从事USB dongle PCTV AVStream/BDA Windows驱动的开发,到现在从事USB3.0 device/xHCI host IP的开发,我的工作内容中,始终离不...
  • u013140088
  • u013140088
  • 2013年12月14日 23:41
  • 5214

重新指派usb转串口模块在linux系统中的设备调用名称

How to remap /dev/ttyUSB* to a specific name to be called by my program. How to map /dev/ttyUSB* to ...
  • sonictl
  • sonictl
  • 2016年03月21日 16:43
  • 1242

necmfk.exe 引起的C8051 USB Debug adapter 连接失败的解决过程.

现象:       USB Debug
  • denjackson
  • denjackson
  • 2014年05月06日 14:39
  • 2825

第三十二篇:Windbg中USB2.0调试环境的搭建

2011年的时候,为了开发USB Mass storage -- UASP (USB attached SCSI Protocol)的设备驱动程序,从米国买了两个USB2.0的调试小设备(如下图,每个...
  • u013140088
  • u013140088
  • 2014年12月24日 10:50
  • 1896

Linux 查看usb设备信息

下面的信息都是在VMware中运行Ubuntu12-04系统上执行的。同样该命令也支持在嵌入式系统中进行调试USB。一、cat设备节点获取信息在一些嵌入式开发中需要调试USB功能,经常会cat /sy...
  • encourage2011
  • encourage2011
  • 2016年12月15日 23:49
  • 8576

ubantu adb 安装与使用

1.ubantu下adb 的安装(1)安装sudo add-apt-repository ppa:nilarimogard/webupd8 sudo apt-get update sudo apt-g...
  • ktigerhero3
  • ktigerhero3
  • 2017年05月17日 08:38
  • 270

Linux USB 驱动开发(一)—— USB设备基础概念

在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的。一个USB设备由3个功能模块组成:USB总线接口、USB逻辑设...
  • zqixiao_09
  • zqixiao_09
  • 2016年03月25日 21:42
  • 7453

在ARM linux上使用usb接口的触屏

应公司需要,在现有设备上面要使用触摸屏,显示器的尺寸是15寸,于是自己从淘宝上面买了个15寸4线电阻屏回来,带Windows下的驱动,售后告诉我不支持Linux。在pc上面使用很不错。接下来的任务是用...
  • aifei7320
  • aifei7320
  • 2015年04月25日 12:54
  • 1877

linux usb子系统.框架

关键词: linux, 驱动,usb USB驱动组成部分:  USB的bus驱动。 usb_core。当USB设备接到USB控制器接口时,usb_core就检测该设备的一些信息...
  • cutter2002
  • cutter2002
  • 2017年04月08日 19:52
  • 351

如何实现Linux下的U盘(USB Mass Storage)驱动

摘要 本文主要介绍了USB Mass Storage的相关的各种协议之间的关系,以及如何在Linux的USB驱动框架下实现U盘驱动 本文提供多种格式供: ...
  • mao0514
  • mao0514
  • 2014年05月04日 18:03
  • 2833
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux USB subsystem --- USB Debug File System Initialize
举报原因:
原因补充:

(最多只允许输入30个字)