浅谈USB驱动架构
2015-08-05 14:32
134 查看
去年,老师让我分析基于HD3系统芯片的WindowsCE USB驱动的可行性。USB驱动非常庞大,多个软件层次相互交错,以及各种协议,USB系统对于一般人很难理解,我对其也只是理解一个大概,下面,我对USB驱动架构的认识做一个总结。
USB系统可以分为两个系统:(1)主机系统HOST;(2)设备系统(Device)。
下图所示是典型的USB驱动架构。
module,独立于硬件的协议栈,支持USB Host协议、USB Hub功能。
(1)UHCI:通用主机控制接口,USB1.0/1.1;
(2)OHCI:开放主机控制接口,USB1.0/1.1;
(3)EHCI:增强主机控制接口,USB2.0;
HCD的内部结构如下图所示:
其中,HCD包含了Platform Device Driver、Host Controller Driver、Root Hub Driver。
USB Core和HCD构成了USB驱动的核心部分,在上层就是用各种USB设备的厂商提供相应的驱动程序。
以如下一个带OTG技术的WindowsCE USB驱动架构为例,可以将USB驱动从上到下分为3层:
(1)应用层:Client(USB Device Driver);
(2)总线层:USBD;
(3)硬件层:USB HCD;
USB Host的应用协议支持4种应用:RNDIS、Print、Mass Storage、HID;其中HID(Human Interface Device)是一种通信协议。
USB OTG控制器的上层是USB OTG控制器的驱动,USB OTG Core Driver是协议层(总线层),如果做Host,它会使用USB Host协议栈;如果做Device,它会使用USB Device协议栈。
http://jazka.blog.51cto.com/809003/737486
http://blog.csdn.net/henry000/article/details/7183423
http://bbs.csdn.net/topics/310195515 http://blog.csdn.net/LoongEmbedded/article/details/7519808
USB系统可以分为两个系统:(1)主机系统HOST;(2)设备系统(Device)。
USB主机系统Host
USB主机系统中,USB主机控制器是一块核心的处理芯片,主机控制器通过根集线器(Root Hub)与外部USB从机设备相连。USB主机控制器包含硬件、软件、固件等部分。USB设备系统Device
USB设备按功能可分为两部分:集线器Hub、功能部件。如下图所示,主机通过根集线器连接到各种外围设备(集线器、功能部件)。
USB驱动架构
下图所示是典型的USB驱动架构。USB core
USB Core包含Host Core Driver、Hub Driver,简称USBDmodule,独立于硬件的协议栈,支持USB Host协议、USB Hub功能。
HCD(Host Controller Driver)
硬件之上运行的是HCD,USB HCD包含三种USB接口规范:(1)UHCI:通用主机控制接口,USB1.0/1.1;
(2)OHCI:开放主机控制接口,USB1.0/1.1;
(3)EHCI:增强主机控制接口,USB2.0;
HCD的内部结构如下图所示:
其中,HCD包含了Platform Device Driver、Host Controller Driver、Root Hub Driver。
USB Core和HCD构成了USB驱动的核心部分,在上层就是用各种USB设备的厂商提供相应的驱动程序。
以如下一个带OTG技术的WindowsCE USB驱动架构为例,可以将USB驱动从上到下分为3层:
(1)应用层:Client(USB Device Driver);
(2)总线层:USBD;
(3)硬件层:USB HCD;
USB Host的应用协议支持4种应用:RNDIS、Print、Mass Storage、HID;其中HID(Human Interface Device)是一种通信协议。
USB OTG控制器的上层是USB OTG控制器的驱动,USB OTG Core Driver是协议层(总线层),如果做Host,它会使用USB Host协议栈;如果做Device,它会使用USB Device协议栈。
USB设备工作流程
当设备功能驱动希望向某个管道发出读写请求时,首先构造请求(USB Request Block,URB)发给USB总线驱动(USBD中的Hub Driver),USB总线驱动解释该请求,并转换请求发往USB主机控制器端口驱动(usbport.sys,应该属于HCD),进而通过小端口驱动(usbohci.sys等,应该属于USB HCD)与设备进行通信。具体如下图所示:参考文献
http://blog.csdn.net/arnoldlu/article/details/25386603 http://blog.csdn.net/myarrow/article/details/8500155 /article/1885145.htmlhttp://jazka.blog.51cto.com/809003/737486
http://blog.csdn.net/henry000/article/details/7183423
http://bbs.csdn.net/topics/310195515 http://blog.csdn.net/LoongEmbedded/article/details/7519808
相关文章推荐
- 网站优化之网站结构诊断技巧
- 开源项目架构分析之 -- Asterisk
- 大型网站架构演变和知识体系
- 怎么让网站在浏览器网址前面显示小图标?
- 使用百度统计对网站进行流量分析和统计
- launcher架构解析
- 粗略地在iOS中使用URLManager架构
- 可伸缩系统的架构经验
- Tumblr:150亿月浏览量背后的架构挑战
- TravelCMS旅游网站系统前台诞生记-2(后台框架篇)
- TravelCMS旅游网站系统前台诞生记-2(后台框架篇)
- uC/OS-II内核架构解析(1)---嵌入式RTOS(转)
- 网站服务架构
- 10个学习Android开发的网站推荐
- 七牛李道兵谈“架构坏味道”
- 使用七牛云存储在网站中进行图片外链
- WSTMall网站系统最新官方版
- WSTMall网站系统最新官方版
- 一个可以下载所有操作系统的网站
- wampserver改变默认网站目录的办法