和网卡,交换机等网络设备的驱动不同,USB驱动里对协议的体现是非常明显的。前者因为体系太庞大,所以采用严格分层方式,所以其驱动被定义在物理层等偏下的层次,主要负责数据通道的建立,和信包的收发。而USB就不是如此,它不仅要管信包的收发,还要解决信包的组织等等。因此USB的驱动必须严格按协议所要求的操作流程来写。目前的USB1.1和USB2.0从USB 的HOST,根HUB及device的硬件组成到通讯过程都写的非常详细明确。不仅有包的组织连寄存器的定义与设置都有相关规定,而USB HOST芯片提供商也基本是遵从它的。但它过于庞大,所以依协议从头写一个USB驱动工作量太大了。我不知你是在什么平台上开发的,我是在Linux下开发的所以我参照了Linux的源码和Vxworks的源码,在此基础上实现了EHCI驱动。
驱动大致是linux/drivers/usb/usb.c,linux/drivers/usb/hub.c,linux/drivers/usb/hcd.c和自己开发的ehci.c文件。前面三个文件最后编成usbcore.o。这只是host的驱动,devices的驱动你可以参照其具体的源码来改,如U盘,我改的是usb-storage.c
驱动的流程非常复杂,至少是我目前碰到过的最复杂的一个外设驱动。代码的追踪的进入方向是三个方面进行。Host & Bus initialize,root hub initialize,还有devices initialize。还是要花不少时间的。
这里还要注意的是,普通PC平台USB Host是作为一个字符设备挂载在PCI总线的。而很多嵌入式系统则不是,所以针对自己的硬件平台要去掉这部分。
PCI总线本身是一套复杂的规范,USB对其的应用仅是一个数据通道,在在PC机上CPU是通过PCI总线和大多数外围设备进行通讯,USB的HOST也就依此规范做。但嵌入式设备上由于系统的精简,建立通讯通道可以用其他更为简单灵活的方式。如LPC总线等(我的板子上用的就是它)。好像三星的2410上也不是采用PCI。当然从规范化角度用PCI做会好些,但工作量反而加大了不少。所以根据具体的硬件平台可以更灵活的采用具体的解决方法。
相关推荐
文在分析 USB 设备驱动和蓝牙协议栈的基础上,总结了 Linux 下开发蓝牙 USB 驱动程序的一般方法,并深入剖析了 其关键技术。 2 Linux 蓝牙协议栈 BlueZ 简介 BlueZ 目前已成为一个开放性的源码工程。它可以很好 地...
miniusb驱动miniusb驱动miniusb驱动miniusb驱动miniusb驱动miniusb驱动miniusb驱动miniusb驱动
USB开发大全 (USB设备驱动开发深度解析-宋宝华.pdf usb 中文协议 USB结构体系.pdf 嵌入式Linux的USB驱动程序开发.pdf linux设备驱动开发详解-usb篇.pdf 快速USB学习.doc
media mass storage subsystem, which connects to a Host computer via its Universal Serial Bus (USB) port. The Host and UFI Device communicate by exchanging Command Blocks, data, and status ...
NVME通用驱动和USB3.1驱动
全志Allwinner ADB Driver: 全志USB驱动和ADB驱动
usb串口驱动,usb转miniusb或者usb转type c线都可用
usb-console驱动
收集的几个好的USB开发学习的资料,并且包括USB中文协议. USB开发合集 (包括usb 中文协议 USB结构体系.pdf 嵌入式Linux的USB驱动程序开发.pdf linux设备驱动开发详解-usb篇.pdf 快速USB学习.doc)
USB驱动程序USB驱动程序USB驱动程序USB驱动程序USB驱动程序USB驱动程序USB驱动程序USB驱动程序USB驱动程序USB驱动程序USB驱动程序
Linux蓝牙协议栈的USB设备驱动
小型USBmini接口的下载驱动,适用于一些显示屏和其他硬件的下载
:为了配合USB驱动程序的开发,首先...并以LPC2368为例,阐述了运用 DDK和DriverStudio工具包,开发USB设备驱动程序的过程和USB驱动程序的调用过程。利用DriverWorks开发驱动程序 快捷方便,必将有着广阔的应用前景。
电脑32位 64位都可以的,不限制 欧姆龙USB驱动 软件+安装视频
驱动之家万能USB驱动驱动之家万能USB驱动驱动之家万能USB驱动驱动之家万能USB驱动驱动之家万能USB驱动驱动之家万能USB驱动
usb转rs485驱动 ,485 驱动 Windows Linux Mac WinCE 驱动 都有。
USB协议的简单介绍,去掉了长篇累牍的说教,取其精华。
联想台式机usb3.0驱动,联想台式机usb3.0驱动,联想台式机usb3.0驱动,联想台式机usb3.0驱动。
台达PCL可编程控制器 USB驱动 ex2系列
VMwareUSB驱动,把主机的USB挂载到VM虚拟机时需要安装!!