usb驱动开发7之接口描述符】的更多相关文章

前面struct usb_interface里表示接口设置的struct usb_host_interface被有意的飘过了,咱们在这节主要讲讲这个结构体,同样在include/linux/usb.h文件里定义. /* host-side wrapper for one interface setting's parsed descriptors */ struct usb_host_interface { struct usb_interface_descriptor desc; /* arr…
前面分析了usb的四大描述符之端点描述符,接口描述符(每一个接口对应一个功能,与之配备相应驱动),下面是看配置描述符还是看设备描述符呢??我们知道,设备大于配置,配置大于接口,接口可以有多种设置. 我们还是按照从小到大的顺序,继续看配置结构体吧! struct usb_host_config { struct usb_config_descriptor desc; char *string; /* iConfiguration string, if present */ /* the inter…
学到这里不容易,先说一段故事吧. 二兄弟住一大楼的第80层,某深夜回家忘看通知(内容今夜停电). 兄弟俩背着沉重的大背包,在楼底下商量一下,决定一鼓作气,爬楼梯回家.两人抖擞精神,开始爬楼.爬到20楼的时候,开始觉得背包很重了.两人商量,决定把背包存在20楼,到时候再回过头来取.卸下了背包,两个人觉得很轻松,说说笑笑地继续往上爬. 爬到40楼的时候,两人已经很累了,就开始互相抱怨指责.哥哥说:你为什么不看通知啊?弟弟说:我忘了看通知这件事,你怎么不提醒我昵?两个人就这样吵吵闹闹,一路吵到60层.…
从第一节我们已经知道,usb_generic_driver在自己的生命线里,以一己之力将设备的各个接口送给了linux的设备模型,让usb总线的match函数,也就是usb_device_match,在自己的那条驱动链表里为它们寻找一个合适的接口驱动程序.那么这些接口驱动都从哪里来? 这就要说到每个玩儿linux的人都会知道的那几个著名的命令insmod,modprobe,rmmod.你insmod或modprobe驱动的时候,经过一个曲折的过程,会调用到你驱动里的那个xxx_init函数,进而…
前面分析了usb的四大描述符之端点描述符,接口描述符(每一个接口对应一个功能,与之配备相应驱动),配置描述符,最后分析设备如何包括这些描述符.首先记住,在usb的世界里,设备大于配置,配置大于接口,接口包含多个设置,接口也可以理解为功能,所有端点的集合构成一个功能.废话少说,看一下usb设备结构体定义吧! struct usb_tt; /** * struct usb_device - kernel's representation of a USB device * @devnum: devi…
HDF(Hardware Driver Foundation)驱动框架是HarmonyOS硬件生态开放的基础,为开发者提供了驱动加载.驱动服务管理和驱动消息机制等驱动能力,让开发者能精准且高效地开发驱动程序. 本期,我们将为大家带来HDF驱动框架中USB DDK的解析与指导. 一.USB DDK介绍 USB(Universal Serial Bus)通用串行总线,用于规范电脑与外部设备的连接和通讯,包含了主机端(Host)和设备端(Device).其中,主机端负责USB总线中的数据传输及端口管理…
从usb总线的那个match函数usb_device_match()开始到现在,遇到了设备,遇到了设备驱动,遇到了接口,也遇到了接口驱动,期间还多次遇到usb_device_match(),又多次与它擦肩而过,“我们以前都失散过,十三年以后,还不是再遇见?” 其实每个人都有一条共同之路,与正义和良知初恋,失身于上学,嫁给了钱,被世俗包养.每个设备也都有一条共同之路,与hub初恋,失身于usb_generic_driver,嫁给了接口驱动,被usb总线保养.人类从没有真正自由过,少年时我们坐在课室…
本文转载自:http://www.360doc.com/content/12/0504/19/8363527_208666082.shtml 编写USB驱动程序步骤:1所有usb驱动都必须创建主要结构体struct usb_driverstruct usb_driver->struct module *owner   (有他可正确对该驱动程序引用计数,应为THIS_MODULE)->const char *name   (驱动名字,运行时可在查看 /sys/bus/usb/drivers/)-…
现在已经使用GET_DESCRIPTOR请求取到了包含一个配置里所有相关描述符内容的一堆数据,这些数据是raw的,即原始的,所有数据不管是配置描述符.接口描述符还是端点描述符都挤在一起,所以得想办法将它们给分开.,于是usb_parse_configuration()就做这些事. static int usb_parse_configuration(struct device *ddev, int cfgidx, struct usb_host_config *config, unsigned…
拜会完了山头的几位大哥,还记得我们从哪里来要到哪里去吗?时刻不能忘记自身的使命啊.我们是从usb_submit_urb()最后的那个遗留问题usb_hcd_submit_urb()函数一路走来,现在就要去分析usb_hcd_submit_urb()里面的内容. /* may be called in any context with a valid urb->dev usecount * caller surrenders "ownership" of urb * expects…