http://www.cnblogs.com/general001/articles/2319552.html

http://blog.csdn.net/uruita/article/details/7263290:MODULE_DEVICE_TABLE

http://blog.chinaunix.net/uid-25909619-id-3281432.html: usb 流程

http://blog.chinaunix.net/uid-25909619-id-3273345.html:uhci

http://blog.chinaunix.net/uid-25909619-id-3381683.html: usb热插拔实现机制(hub probe或者中断)

http://www.cnblogs.com/sdphome/archive/2011/09/29/2195789.html

http://blog.csdn.net/jiang_dlut/article/details/5832237: 这个讲了usb_device_driver和usb_driver。usbhub发现新设备的插入时, 先用device来进行dvice_add(见usb_alloc_dev, 其中dev->dev.type = &usb_device_type; 这个表示是整个usb device), 然后usb_register_device_driver注册的driver的generic_probe会被usb_probe_device调用, 这个函数会调用usb_set_configuration。如此接口类型的device_add会被调用(intf->dev.type = &usb_if_device_type; 这个表示是usb interface设备(当时理解了半天, 这么着都找不到interface probe中的dev是怎么能转变成interface的。多亏了这篇文档))。这样设备接口的probe函数就在usb_probe_interface中被调用,usb_probe_interface是在usb_register_driver(usb_register)中注册的。这样usb设备的枚举过程就容易读了。

http://blog.csdn.net/brucexu1978/article/details/9043523:这个文章介绍了linux device和driver匹配的过程。

http://wenku.baidu.com/link?url=eIwUG6V4v4dUPub-z_6EZS3LTHKDtgzU4nyArhlqnVU40qNk3sRRdbE7TeMYIkiSHQWN9wiwXYXfG2isxVvONAiqOYzg9xpg8ViSjpbfeyi: usb协议

http://wenku.baidu.com/link?url=Hzjv0uKuJ0zUIhOHEUErEKjWY93cB0FGvVG9jaF8TWzxQCJjLSdSKOAWDbsb-fTkI5eUwYueGqyaS89iEjP5Ynt5qAqnUJevcXgtC26UDpG: usb hub协议

http://download.farsight.com.cn/download/pdf/Farsight-USB08-HubRequest.pdf: hub request

http://wenku.baidu.com/link?url=ZH7Oe5k8B1yH-04YKAiFh948-fqsxn7sqpAd9b3iemJ5J_gmn4ojsyP1UbCkRL0-pD3NmYP5l519f4SM5NOVQnBT0qCI4bN91J-2hbU2RMe: ohci寄存器描述:ed, td

http://blog.csdn.net/qiurihuanghua/article/details/6411640: ehci:软件简化

http://wenku.baidu.com/link?url=T8JhyspWwUrlRimCCBySy0XUwxULwYcVx1jkIM78z7sKqD80ivjiet5LwMvtQbB0gVQBU-I5DvnpP0ZelAix2S3zGuoYNULSqcXrwA77dDq:usb3.0:多了4根超速线, 分离的2个hub(超速, 2.0), 设备可以发ready的异步请求, 不同于2.0的由主机发起的轮询请求。流式管道用于3.0的流控(bulk扩展)。支持突发模式传输. 网上基本没有linux usb3.0驱动的讲解文章, 也没有特别公开的usb3.0芯片的资料和讲解(20140122)。

http://www.epc.com.cn/subject/200803/10591.html: 无线usb带宽分析

http://blog.csdn.net/leo_wonty/article/details/7418261:usb masstorage

http://blog.chinaunix.net/uid-10386087-id-2958758.html

http://blog.csdn.net/xushiyan/article/details/6877460: 描述linux scsi驱动的架构, 包括跟linux块层的接口,跟底层host的接口, 以及一些sequence。至此明白usb mass storage设备是如何挂接scsi, 再挂接到块设备, 由此挂接到文件系统的(不好意思, 这个花了偶近5年的时间, 因为是靠平常的时间, 悲催啊)。

http://blog.csdn.net/xushiyan/article/details/6941640:scsi io回调

usb gadget:

http://blog.csdn.net/successcw/article/details/17137361

http://wenku.baidu.com/link?url=m73s8Hq5wxD-DZR5X02-Ltp9kEGiNSlKSUfJhf0mvrityUP5CwE1JnpyndnqlFcrW2hrMhL8_4LH0utF1p2DDAL00u44Y40Znosh51V2yxK

http://blog.csdn.net/arnoldlu/article/details/9291883

http://lwn.net/Articles/395712/:讲述不用composite framework的逆势.

usb device侧的gadget驱动框架总体上比较薄。协议层(masstorage/cdc等)调用gadget api, gadget api调用gadget的端点ep的ops, 这个ops来自具体硬件平台的注册的ep的操作函数。udc_core主要负责udc 添加usb_add_gadget_udc, 设备层的usb_gadget_probe_driver等。

file_storage与mass_storage的区别是前者未使用composite抽象, 后者使用composite抽象。composite抽象层同时供其他协议(串口/网络等)使用(config/function管理)。

mass storage都是经过vfs访问具体的存储设备, 其路径是模块加载时的file参数确定的(在内核态可通过vfs api访问文件)。scsi命令在sorage层被解析。

android.c中的mass_storage也是走的composite. 这个文件整合了很多的usb device功能, 包含adb等。通过sysfs的store函数enable不同的功能。

具体udc驱动负责queue/传输管理(dma? fifo?)/设备管理/中断等。可参考omap等, platform_driver_probe注册这个driver。dma调用platform层提供的dma功能操作。 不同的platform的dma函数不同。

http://blog.csdn.net/embededswordman/article/details/6689593: usb gadget串口

http://blog.chinaunix.net/uid-24227137-id-3437527.html:linux tty驱动

http://blog.chinaunix.net/uid-27717694-id-3495612.html: linux console

http://wenku.baidu.com/link?url=BUfLIzBG-ER22uiONf0nN78xXL_Inv4rciMtSl5IcDyRJ1D0_JF4i20EqvC2qZleBa2cT7IViEK4VzzV8Cl0d37ajf0KfEbgsKK-uSSCHta: linux伪终端

usb串口主要是将usb转换成tty设备, device侧和host侧都是这样。cdc acm模拟modem

audio device使用linux sound core接口

video:v4l2接口

ether: cdc eem/ecm/subset,实现net_device_ops接口:

http://wenku.baidu.com/view/d06c4318ff00bed5b9f31dbc.html

android mtp:文件传送 ptp:still image类:http://baike.baidu.com/link?url=qceecPkdLhQrvy9zoAIpmIPImYHiFOUGGw4NrTP1TAzVlq7wF1_CTA73JhmHwC-t

rndis:微软协议, 代替cdc ether协议

http://wenku.baidu.com/link?url=VK6wEQIWlmL7VgIpuHBhCZPk-CivVSHdCthSzy-_AdVK_7zdrwP4VLOjZpmSXNMwitK76Rgeld0STAwVKv8ZTT__9SPkVKT3lWCi7OGFNti

Linux下USB驱动框架分析相关推荐

  1. Linux下USB驱动框架分析【转】

    转自:http://blog.csdn.net/brucexu1978/article/details/17583407 版权声明:本文为博主原创文章,未经博主允许不得转载. http://www.c ...

  2. Linux USB驱动框架分析 【转】

    转自:http://blog.chinaunix.net/uid-11848011-id-96188.html 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结 ...

  3. OS相关驱动 Linux USB驱动框架分析

    初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了.好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动开发 ...

  4. linux内核usb驱动框架,基于S3C2440平台的linux2.6.22内核版本的USB驱动框架分析

    基于S3C2440平台的linux2.6.22内核版本的USB驱动框架分析 发布时间:2014-07-18 16:47:31来源:红联作者:linux08071151 driver/usb/host/ ...

  5. linux下usb驱动编写

    linux下usb驱动编写(内核2.4)--2.6与此接口有区别2006-09-15 14:57我们知道了在Linux下如何去使用一些最常见的USB设备.但对于做系统设计的程序员来说,这是远远不够的, ...

  6. linux下IIC驱动开发分析

    1.  IIC规范 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线产生于在80年代,最初为音频和 ...

  7. Linux下I2C驱动框架全面解析

    I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...

  8. USB驱动框架分析1

    本文主要分析usb框架的主要数据结构,usb驱动框架的初始化,usb系统模型的建立过程.先贴一张网上找来的图,很清晰很详细. 上图浓缩了usb设备模型的建立流程,再次感谢网上前辈的经验总结.下面以文字 ...

  9. Linux的 i2c 驱动框架分析

    1.基本概念 总线设备驱动模型,是Linux 内核的一个基础,基本理论可以说按照大企业的分工原则,每个人只要负责自己的事情,向其他部门给出标准的接口调用,后勤部就负责后勤工作,厨房有可能跟后勤部产生工 ...

最新文章

  1. dataframe for 循环 数据格式 python_Python中的for循环
  2. [BZOJ4448][SCOI2015]情报传递[dfs序+树状数组]
  3. 将一列数据转换成一个字段数据,逗号分隔
  4. SAP 2020全球技术大会(SAP 2020 TechEd)中国区会场现在开始报名啦!
  5. C++--day05
  6. html5 cs js字母验证码,JavaScript生成图形验证码
  7. 大手笔!EDG夺冠TCL奖励300万,还送全系AI家电一套
  8. Python实战之子进程
  9. php xml构造,C++_C语言实现xml构造解析器,纯C实现xml构造解析器,所有实 - phpStudy...
  10. 2021振兴杯参赛后感(部分writeup)
  11. 置信区间,置信水平/置信度
  12. 一站式原创文章神器,让你轻松创作高质量文章
  13. 解决Qt5屏幕翻转问题
  14. access团员人数公式_2013年计算机二级Access上机模拟试卷二
  15. JavaScript模拟实现先进先出、先进后出效果
  16. 【微信小程序/实现】实现获取微信个人信息
  17. Arjun-url参数扫描工具
  18. 人力资本、人均受教育年限,受高等教育人数比重(1997-2020)
  19. ha456.jar打开dump文件报Unsupported major.minor version 51.0异常
  20. 通过Kong实现金丝雀发布

热门文章

  1. ggplot2-设置坐标轴
  2. Blender 建模案例一(2)
  3. 一文搞清楚软链接和硬链接
  4. Java中的引用传递
  5. C语言探索之旅 | 第二部分第一课:模块化编程
  6. 有向无环图—拓扑序列
  7. 团宝欠薪裁员续:合作商家停止接待团宝顾客
  8. Neo4j安装及简单使用
  9. 如何利用训练好的神经网络进行预测
  10. mysql定时任务自动备份