注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

LINUX驱动学习——内核USB驱动编写之一USB驱动的简介  

2012-08-28 21:51:17|  分类: USB系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

LINUX驱动学习——内核USB驱动编写一USB驱动的简介

开发USB的驱动,无外乎有以下几种类型:
1、USB的HOST驱动(或者说主机驱动)。
2、USB的设备驱动(或者说从端驱动)。
3、OTG。
另外,还有主机端的设备驱动开发,这块儿基本上都已经由操作系统抽象出来,提供了接口,而主机驱动,基本上操作系统也提供了,嵌入式设备一般是作为slave设备来工作的,当然,如果你需要作为HOST来工作,那只好自己来实现了。
具体说,主机控制器驱动程序实现的功能包括以下几点:
1)  解析,维护urb,根据不同的端点分类缓存urb。
2)  实现不同USB传输类型的调度工作。
3) USB数据的实际传输工作。
4)  实现虚拟根HUB的功能。
而从实际情况来看,更多的是作为设备驱动(SLAVE)进行驱动开发。也就是USB GADGET驱动,Linux Gadget子系统主要分为三层:第一层为芯片驱动层,负责将各种USB device控制器抽象为统一的函数接口,以供上层驱动程序调用;第二层主要是对操作函数的简单封装;第三层为设备驱动层,可根据系统的需求实现所对应的功能。图1所示是Linux Gadget子系统的驱动层次。(基本不以WIN的USB情况来讲,整个流程是一样的,但是WIN封装的更高)
而OTG是为了满足现在的USB设备特别是一些便携设备的互通互连,这些USB设备既有HOST也有SLAVE端,他们会自动的判断是转到哪一方。

所以说,基本学习的最多的还是USB的设备驱动。这也是最多,用得最广的。从键盘、鼠标到U盘,移动硬盘,音乐设备等等。其中HID设备(人机工程学设备,前面的键盘啥的)是最最常见的。
USB的驱动又向后延迟了一下,不要紧,目标盯紧了就行。慢慢预热,慢慢来。

  评论这张
 
阅读(1068)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017