Bingqi23

  • 2018-06-04
  • 回复了主题帖: TI课随你变 票选你选型觉得最困难的元器件 获奖名单公布!

    信息已确认,谢谢EE。

  • 2018-05-09
  • 发表了主题帖: 我的USB学习经验展开--第一回

      应工作要求,需要进行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设备。  至于缺点,一是传输距离短,实现不了超常距离传输。再一个就是开发比较困难,门槛稍稍高一些,不如串口那么亲民大众。  还有一个比较臭屁的缺点,它说要找出它的缺点是件很令人头疼的事情。呵呵,花无缺呗,:call:。 第七页:  上页已经提到了,本页说明的是各种各样常见的USB设备。摄像头、U盘、鼠标、键盘、无线网卡、右上角那个是USB显微镜。 第八页:  本页描述的是USB的发展历程。这里有一点希望能够明确的是,低速、全速、高速、超高速这几种叫法所对应的USB版本。不要以后再全速、高速,傻傻分不清楚。  08年提出的是USB3.0,经过5年后,在13年出现了USB3.1,现在18年了,又过了5年,是不是下一代的标准又要出来了{:1_86:}?第九页:  本页描述的是,USB的接口类型,虽然有一些长得有点奇怪,但是也都是USB接口中的一种。在这里混个脸熟,以后见到它们时能知道这是USB的接头。  USB接头分为公头和母头两种,插入的是公头,被插的是母头,:shy:  突然想到了一个笑话:显示器:我好惨啊,整天被人看。键盘说:我更惨呢,每天被人打。鼠标:我才惨呢,每天被人摸。主机:你们有我惨吗?每天被人按肚脐眼!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原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2018-05-08
  • 加入了学习《手把手教你学ARM-STM32》,观看 手把手教你学ARM-STM32 第一讲 绪论(上)

  • 2018-05-05
  • 回复了主题帖: 就在本帖跟帖,就能赢好礼:创新驱动变革—R&S示波器助力功率电子测试!

    嗯,看到了PPT最后的更低价格,有多低呐。 其实我平时对示波器的基本使用,也就是测量时序时间,截取通信波形,再就是保存截屏画面导出到U盘,然后就木有了。 貌似这几项功能好像不用太先进的示波器吧:titter:

  • 2018-05-02
  • 加入了学习《模拟电子技术基础》,观看 模拟电子技术基础课程特点及如何学习该课程

  • 加入了学习《模拟电子技术基础》,观看 模拟信号与模拟电路

  • 回复了主题帖: 【100%中奖】免费申请样品,抽红包,关键还必中!错过一次悔终身的活动强势来袭!

    中了5块钱。嘎嘎

  • 2018-04-30
  • 加入了学习《Type C (USB3.1/3.0 & DP over Type C) 介绍及解决方案》,观看 Type C (USB3.1/3.0 & DP over Type C) 介绍及解决方案

  • 2018-04-06
  • 加入了学习《嵌入式Linux应用于开发实践》,观看 什么是嵌入式系统

  • 加入了学习《嵌入式Linux应用于开发实践》,观看 嵌入式学习线路

  • 回复了主题帖: EEWORLD大学堂----嵌入式Linux应用于开发实践

    老师,是一万零九百六,不是一万零九千六百啦

  • 2018-03-01
  • 回复了主题帖: HID类设备报表 解析流程 求助 !!!

    未来就在脚下 发表于 2018-2-26 15:30 是的    USB初始化加载程序已经做好了   就差报表解析程序了    完全没有头绪
    手头有设备吗?能截到Log不

  • 2018-02-19
  • 回复了主题帖: HID类设备报表 解析流程 求助 !!!

    是USB中的HID吗

  • 2018-02-18
  • 回复了主题帖: EEWORLD 2018开年送礼,答题赢红包啦!

    哈哈,活动维护中字样

最近访客

< 1/2 >

统计信息

已有28人来访过

  • 芯币:1216
  • 好友:8
  • 主题:20
  • 回复:408
  • 课时:--
  • 资源:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言