4130|3

493

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

我的USB学习经验展开--第一回 [复制链接]

USB相关展开-第一讲.pptx (1.78 MB, 下载次数: 16)
  应工作要求,需要进行USB Drv相关内容的维护作业,但是目前部门内部没有专人研究过这个领域,所以领导安排我来检讨学习相关内容,以便可以应对将来的变更。
  USB是个很大且很常用的模块,个人对此也比较感兴趣,所以正好借着这个机会,学习一下相关的知识。零星学习了小半年有余,对此多少有了一些了解。领导要求我把所知道的内容给大家展开一下。正好借着机会,整理一下思路与所学,跟坛友分享一下,查漏补缺,若有认知不对的地方,欢迎拍砖。计划是分8次展开,每月一次,本次论坛首发,恳请各位大佬不吝赐教。本次的部门展开是计划在5月17日进行,时间1小时。
  资料准备的是PPT,所以就使用文字对PPT进行一下描述。
第一页
  封面左边的这张图片摘自百度百科USB词条。第一眼看到就被它的暗黑风吸引了,于是也奠定了全文的暗黑基调。嗯。。。打印本文的话会比较费墨
  右下角的二维码是我的wechat号,欢迎交流技术。
第二页
  本页要说明的是这次USB Knowhow展开的计划。目前已能明确前6次内容,后两讲内容待定。因为我也在继续学习ing,所以稍后根据具体情况再决定最后两讲的内容。
第一次:
  主题是USB基础知识展开,分两部分进行,一是USB的基础知识概述,只是一些基本知识,并未涉及到具体的开发知识,计较没营养的一次展开;另一项是介绍一下我在学习过程中的主要参考书籍,供大家参考使用。
第二次:
  跟第三次一并展开的是USB开发基础知识,这里涉及了一些USB开发中的概念。本次为上回,主要展开的概念是端点、描述符、传输类型和事务。会使用一些具体的例子进行配合说明。
第三次:
  本次为USB开发基础知识的下回,展开的是USB包结构及分类。同样会配合一些具体例子说明。
第四次:
  主题是大部分USB开发人员都会涉及到的一个内容,USB设备的检出,也叫USB设备枚举。本次先说明一下USB设备的检出机制,然后以U盘为例,具体解析检出Log进行案例分析。
第五次:
  本回是参考圈圈大神的《圈圈教你玩USB》来进行的第一个实验,实现USB鼠标,从理论和代码两方面进行。其间会穿插一下我在调试串口波特率时遇到的一个小插曲。
第六次:
  有了之前的积累后,应该对USB有了大致的了解了,本次是概述一下Linux下USB设备驱动开发的过程。这部分涉及了很多的Linux内核知识,我对这方面了解的不多,把握不好尺度,计划大概先解析出启动流程和设备检出这两部分代码。
第七次:
  其实USB还有很多的内容没有涉及,比如CDC,NCM等等,再比如开源第三方库libusb。此处先dummy一下,占个位,到时再具体而定吧。
第三页:
  本讲的目录,不再赘述。
第四页:
  Point 1:什么是USB
  业内有两种说法:一种是You SB(你傻比),一种是USA(美国)的弟弟。摘自圈圈大神语录。这当然是开玩笑的,活跃一下气氛,不要当真。借着这个引子,突然想到一位好友之前朋友圈发过的一个看图猜词。右侧的蜜蜂是什么意思?
第五页:
  刚刚的USB解释当然是开玩笑,本页才是正经的解释。摘自百度百科。简单说,USB就是Universal Serial Bus 通用串行总线。一种通信协议技术,超赞的一个特性就是支持热插拔。
  
第六页:
Point 2 USB的优缺点:
  优点有很多,如图所述,比较显著的优点就是即插即用,可扩展性强,下页PPT中就列举一下好多种常见的USB设备。
  至于缺点,一是传输距离短,实现不了超常距离传输。再一个就是开发比较困难,门槛稍稍高一些,不如串口那么亲民大众。
  还有一个比较臭屁的缺点,它说要找出它的缺点是件很令人头疼的事情。呵呵,花无缺呗,
第七页:
  上页已经提到了,本页说明的是各种各样常见的USB设备。摄像头、U盘、鼠标、键盘、无线网卡、右上角那个是USB显微镜。
第八页:
  本页描述的是USB的发展历程。这里有一点希望能够明确的是,低速、全速、高速、超高速这几种叫法所对应的USB版本。不要以后再全速、高速,傻傻分不清楚。
  08年提出的是USB3.0,经过5年后,在13年出现了USB3.1,现在18年了,又过了5年,是不是下一代的标准又要出来了
第九页:
  本页描述的是,USB的接口类型,虽然有一些长得有点奇怪,但是也都是USB接口中的一种。在这里混个脸熟,以后见到它们时能知道这是USB的接头。
  USB接头分为公头和母头两种,插入的是公头,被插的是母头,
  突然想到了一个笑话:
显示器:我好惨啊,整天被人看。
键盘说:我更惨呢,每天被人打。
鼠标:我才惨呢,每天被人摸。
主机:你们有我惨吗?每天被人按肚脐眼!
USB插口:你们知道我每天都在干嘛吗
第十页:
  到重点了。这里提到了一个概念,USB Host Controller,叫做USB主控器。
  它到底是个什么东西,在wiseGeek上找到了一个解释,感觉还不错,原文是这样说的:
A Universal Serial Bus (USB) host controller is an interface that allows an enabled piece of hardware to interact and communicate with a particular piece of software. The USB connection is an input and output port that comes standard with most computers and a variety of other digital equipment that allows data to be transmitted through a cable or any other form of direct connection. A USB host controller manages the communication between peripheral devices and the computer system. Most modern computers have hi-speed host controllers and many older computers can have a host controller easily installed in an open slot on its motherboard.
                          http://www.wisegeek.com/what-is-a-usb-host-controller.htm
  概括来讲,就是它是一个管理外设与主机进行通信的东东。
  还有一个概念是hub。这个东西很常见了,就是一个1分多的分线器。可以把一个U口分出好多个U口。其中与host controller相关联的叫作roothub(根集线器)。
  上图描述的是我的PC上的host controller中的状态。共有5个host controller,有4个uhci和1个ehci。这都代表什么意思,下页说明。
第十一页:
  本页列举了一下USB Host Controller的分类。分为OHCI、UHCI、EHCI和xHCI这四种。
  OHCI、UHCI都是USB1.1的接口标准,而EHCI是对应USB2.0的接口标准,最新的xHCI是USB3.0的接口标准。
  1. OHCI(Open Host Controller Interface)是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,比如它还支持Apple的火线(Firewire,IEEE 1394)接口。与UHCI相比,OHCI的硬件复杂,硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单。主要用于非x86的USB,如扩展卡、嵌入式开发板的USB主控。
  2. UHCI(Universal Host Controller Interface),是Intel主导的对USB1.0、1.1的接口标准,与OHCI不兼容。UHCI的软件驱动的任务重,需要做得比较复杂,但可以使用较便宜、较简单的硬件的USB控制器。Intel和VIA使用UHCI,而其余的硬件提供商使用OHCI。
  3. EHCI(Enhanced Host Controller Interface),是Intel主导的USB2.0的接口标准。EHCI仅提供USB2.0的高速功能,而依靠UHCI或OHCI来提供对全速(full-speed)或低速(low-speed)设备的支持。
  4. xHCI(eXtensible Host Controller Interface),是最新最火的USB3.0的接口标准,它在速度、节能、虚拟化等方面都比前面3中有了较大的提高。xHCI支持所有种类速度的USB设备(USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed)。xHCI的目的是为了替换前面3中(UHCI/OHCI/EHCI)。
最后一页:
  这里列举一下我在学习过程中使用的参考书。第一本《Universal Serial Bus Specification》,这就是官方的USB2.0协议。在解析包协议的时候,参考使用,权威文档。书很厚,但是目前只用到了第九章。
  《USB开发大全》这本书在偶然在公司发现的,由于看到它的时候比较晚,所以对我的帮助没有其他基本那么显著。不过它最后帮我印证了一些我的猜想和假设。
  《Linux那些事儿之我是USB》第一版和第二版。这是本奇书。作者在用侃大山的方式讲解了技术相关的内容。第一版1200页,洋洋洒洒一大堆,其中充满了各种段子,很是风趣。在第二版的时候,进行了裁减,只剩了450页,裁掉了一大半的内容。同时对章节内容进行了重新排版。段子少了,更像一本教科书了。我个人还是比较喜欢第一版。
  《圈圈教你玩USB》我是跟着这本书入门的,为此还不包邮买了一块配套开发板。这才是真爱。跟着圈圈的步伐,一步一步地完成了第一个实验,USB鼠标。然后才对USB设备有了具体的概念和理解。
  墨迹了这么多,第一次就先到这里吧。下一回的展开中,会涉及到一些开发干货了。

此内容由EEWORLD论坛网友Bingqi23原创,如需转载或用于商业用途需征得作者同意并注明出处

此帖出自Linux开发论坛

最新回复

谢楼主分享  详情 回复 发表于 2018-5-13 17:54
点赞 关注(4)

回复
举报

935

帖子

1

TA的资源

禁止发言

沙发
 
此帖出自Linux开发论坛
 
个人签名存储芯片/MCU/SRAM/PSRAM/DDR/FLASH/MRAM。web.www.sramsun.com  QQ3161422826 TEL:13751192923
 

回复

104

帖子

1

TA的资源

一粒金砂(中级)

板凳
 
坐等LZ讲解,学习学习。。。
此帖出自Linux开发论坛
 
个人签名淡泊明志 宁静致远
 
 

回复

6423

帖子

17

TA的资源

版主

4
 
谢楼主分享
此帖出自Linux开发论坛
 
个人签名training
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表