ChinaUnix.net
相关文章推荐:

linux usb驱动分析

说的usb子系统的IO操作,不得不说usb request block,简称urb。事实上,可以打一个这样的比喻,usb总线就像一条高速公路,货物、人流之类的可以看成是系统与设备交互的数据,而urb就可以 看成是交通工具。在一开始对usb规范细节的介绍,我们就说过usb的endpoint有4种不同类型,于是能在这条高速公路上流动的数据也就有四种。但 对车是没有要求的,urb可以运载四种数据,不过你要先告诉司机你要运什么,目的地是什么。我们现在就看...

by msj0520 - Linux文档专区 - 2009-08-03 11:05:29 阅读(1506) 回复(0)

相关讨论

probe是usb子系统自动调用的一个函数,有usb设备接到硬件集线器时,usb子系统 会根据production ID和vendor ID的组合或者设备的class、subclass跟protocol的组合来识别设备调用相应驱动程序的probe(探测)函数,对于skeleton 来说,就是skel_probe。系统会传递给探测函数一个usb_interface *跟一个struct usb_device_id *作为参数。他们分别是该usb设备的接口描述(一般会是该设备的第0号接口,该接口的默认设置也是第0号设置)...

by msj0520 - Linux文档专区 - 2009-08-03 11:04:08 阅读(1497) 回复(0)

接下来的工作是向系统注册一些以后会用的的信息。首先我们来说明一下usb- set_intfdata(),他向内核注册一个data,这个data结构可以是任意的,在这段程序用向内核注册了一个usb_skel结构,就是我们 刚刚看到的被初始化的那个,这个data可以在以后用usb_get_intfdata来得到。 usb_set_intfdata(interface, dev); retval = usb_register_dev(interface, &skel_class); 然后我们向这个interface注册一个skel_class结构。这...

by msj0520 - Linux文档专区 - 2009-08-03 11:04:49 阅读(1402) 回复(0)

好,了解过usb一些规范细节之后,我们现在来看看linux驱动框架。事实上,linux的设备驱动,特别是这种hotplug的usb设备驱动,会被编译成模块,然后在需要时挂在到内核。要写一个linux的模块并不复杂,以一个helloworld为例: #include #include MODULE_LICENSE(“GPL”); static int hello_init(void) { printk(KERN_ALERT “Hello World!\n”); return 0; } static int hello_exit(void) { printk(KERN_ALE...

by msj0520 - Linux文档专区 - 2009-08-03 11:02:36 阅读(1586) 回复(0)

linux usb驱动框架分析(一) 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了。好,言归正传,我 说一说这段时间的收获,跟大家分享一下linux驱动开发。但这次只先针对linuxusb子系统作分析,因为周五研讨老板催货。当然,还会顺带提一 下其他的驱动程序写法。 事实上,linux的设备驱动都遵循一个惯例——表征驱动程序(用driver...

by msj0520 - Linux文档专区 - 2009-08-03 11:01:55 阅读(2104) 回复(0)

probe是usb子系统自动调用的一个函数,有usb设备接到硬件集线器时,usb子系统会根据production ID和vendor ID的组合或者设备的class、subclass跟protocol的组合来识别设备调用相应驱动程序的probe(探测)函数,对于skeleton来说,就是skel_probe。系统会传递给探测函数一个usb_interface *跟一个struct usb_device_id *作为参数。他们分别是该usb设备的接口描述(一般会是该设备的第0号接口,该接口的默认设置也是第0号设置)跟...

by mijianbin2008 - Linux文档专区 - 2009-07-29 17:52:45 阅读(1498) 回复(0)

一:前言usb是一个很复杂的系统.在usb2.0规范中,将其定义成了一个分层模型.linux中的代码也是按照这个分层模型来设计的.具体的分为usb设备,hub和主机控制器三部份.在阅读代码的时候,必须要参考相应的规范.最基本的就是usb2.0的spec.它定义了usb协议.另外的一个是usb控制器的规范.有UHCI,EHCI,OHCI三种.其中UHCI是Intel推出的一种usb控制器标准.它将很多功能交给软件处理.相比之下,它也是最为复杂的.因此,本文档以UHCI为例分析.另外,...

by zhiqiang0071 - Linux文档专区 - 2008-09-20 13:34:46 阅读(1959) 回复(0)

------------------------------------------ 本文系本站原创,欢迎转载! 转载请注明出处:http://ericxiao.cublog.cn/ ------------------------------------------ 一:前言 usb是一个很复杂的系统.在usb2.0规范中,将其定义成了一个分层模型.linux中的代码也是按照这个分层模型来设计的.具体的分为usb设备,hub和主机控制器三部份.在阅读代码的时候,必须要参考相应的规范.最基本的就是usb2.0的spec.它定义了usb协议.另外的一个是US...

by xgr180 - Linux文档专区 - 2008-09-09 09:54:36 阅读(1316) 回复(0)

linuxusb驱动之skeleton分析(一) usb_skeleton.c,是usb驱动的框架,适合usb驱动的初学者。 1.结构体 内核其实就是一坨坨的数据结构,加上一根根链表。 对于初学者,如果直接看usb驱动代码,大概会被那些名字相近的结构体弄得晕头转向,比如usb_host_interface和usb_interface,看着看着就把两个混淆了。所以,在学习usb驱动之前,建议把相关结构体都拎出来看一下,其实,也就那么几个结构体在那装神弄鬼。usb skeleton驱...

by jia_killer - Linux文档专区 - 2009-09-27 11:46:26 阅读(1059) 回复(0)

三:传输过程的实现说到传输过程,我们必须要从URB开始说起,这个结构的就好比是网络子系统中的skb,好比是I/O中的bio.usb系统的信息传输就是打成URB结构,然后再过行传送的.URB的全称叫usb request block.下面从它的接口说起.3.1:URB的相关接口1:URB的创建URB的创建是由usb_alloc_urb()完成的.这个函数会完成URB内存的分配和基本成员的初始化工作.代码如下:struct urb *usb_alloc_urb(int iso_packets, gfp_t mem_flags){ ...

by zhiqiang0071 - Linux文档专区 - 2008-09-20 13:44:59 阅读(1495) 回复(0)

------------------------------------------ 本文系本站原创,欢迎转载! 转载请注明出处:http://ericxiao.cublog.cn/ ------------------------------------------ 三:传输过程的实现 说到传输过程,我们必须要从URB开始说起,这个结构的就好比是网络子系统中的skb,好比是I/O中的bio.usb系统的信息传输就是打成URB结构,然后再过行传送的. URB的全称叫usb request block.下面从它的接口说起. 3.1:URB的相关接口 1:URB的创建 URB的创...

by xgr180 - Linux文档专区 - 2008-09-18 11:23:07 阅读(1410) 回复(0)