- 博客(71)
- 资源 (5899)
- 收藏
- 关注
原创 DriverStudio的USB编程类函数
DriverStudio的USB编程类函数DriverWorks提供了三个类:KUsbLowerDevice、KUsbInterface和KUsbPipe类,用于实现USB设备操作。KUsbLowerDevice类用于逻辑设备的编程,KUsbInterface类用于借口的编程,KUsbPipe类用于管道的编程。1、KUsbLowerDevice类 KUsbLowerDevi
2009-05-30 08:52:00 3602
原创 USB描述符
描述符 USB采用USB标准描述符说明一个USB设备,这些描述符包括设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。对于高速设备还包括设备限定描述符和其他速率配置描述符。设备类和供应商也可以自己定义其设备专用描述符,分别称为设备类定义描述符和供应商自定义描述符。 (1)设备描述符 (Device Descriptor)用于指出USB设备的总体信息,其内容对该设备中
2009-05-23 21:35:00 3802 2
原创 一个典型的Windows 2000 INF文件
一个典型的Windows 2000 INF文件[Version]Signature=”$Windows NT$”Class=USBClassGUID={36FC9E60-C465-11CF-8056-444553540000}Provider=%YsuLyw%LayoutFile=layout.infDriverVer=12/12/2001,1.0.1.0
2009-05-16 21:37:00 2114
原创 一个典型的Windows 98 INF文件
一个典型的Windows 98 INF文件[Version]Signature=”$CHICAGO$”Class=USBProvider=%YsuLyw%DriverVer=12/12/2001,1.0.1.0 [Manufacturer]%YsuLyw%=YsuLyw ;调用Models节 [YsuLyw]
2009-05-16 21:23:00 1904
原创 INF文件的定义
INF文件的定义在定义INF文件时,应遵循如下语法规则:1节名称和项名称都不区分大小写2节名称必须使用“[]”括起来3各个节的顺序是任意的,但节中各项的顺序可能是固定的4使用反斜线“/”作为续行符5使用分号“;”标示注释行6使用%XXX%表示一个字符串
2009-05-16 21:11:00 2544
原创 设备驱动程序INF文件——INF文件的节
INF文件的节 INF文件是一个文本文件,由许多按层次结构排列的节组成,他们以方括号中的节名称开始,如[Version]、[Manufacturer]等,后面是改接所含有的各个项,如Signature、DriverVer等。节中各项的基本定义格式为entry=value[,value…] 其中,“entry”标示项名称,“value”标示该想的取值。节名和项名称
2009-05-16 15:11:00 5168 2
原创 设备驱动程序INF文件的处理过程
设备驱动程序INF文件的处理过程当Windows发现有USB设备连接时,其设备管理器会把系统所有的INF文件中的数据和该USB设备的设备信息或接口信息进行比较,已找到与之匹配的INF文件。对于Windows 98,为避免在每次检测到新设备时都需读取INF文件本身,他建立了一个保存INF文件调用信息的数据库,其文件名为drvdata.bin和drvidx.bin,他们位于“Windows/INF
2009-05-16 14:50:00 4351
原创 设备驱动程序安装的重要文件
设备驱动程序安装的重要文件INF文件 INF(Device Information File设备信息文件)是一个文本文件,包含一个或多个USB设备、设备驱动程序和其安装过程的详细信息,如该设备使用哪个驱动、系统注册表中应存储哪些信息等,以确保其硬件设备能够正确的配置和安装。 在USB设备驱动程序安装完毕后,该设备的一些基本信息(如DeviceDesc、Hardw
2009-05-16 14:36:00 2797
原创 USB设备驱动程序开发框架
USB设备驱动程序开发框架USB设备驱动程序开发框架的源代码文件文件名说明Driver.h驱动程序头文件DrvInit.c入口例程和卸载例程DrvPnp.c即插即用例程DrvDispatch.c分发例程DrvPowe
2009-05-16 11:28:00 2677
原创 Visual C++开发设备驱动程序的注意事项
Visual C++开发设备驱动程序的注意事项 简单的说,使用Makefile项目来创建设备驱动程序的过程就是在Visual C++中调用DDK命令的过程,其与DDK命令提示窗口的执行顺序完全一样,驱动程序的可执行文件也被存放在同一个目录中。他们之间的区别只是一个在DDK的命令提示窗口,一个在Visual C++的集成开发环境中调用这些命令罢了。但其与使用Visual C++开发W
2009-05-16 11:15:00 2623
原创 设备驱动程序DrvBuild.bat批处理文件
设备驱动程序DrvBuild.bat批处理文件 在使用Makefile项目创建设备驱动程序时,需要执行DrvBuild.bat批处理文件,其调用格式如下:DrvBuild [build_options] 其中,“DDK_PATH”标示DDK安装的根目录;“Driver_DRIVE”标示设备驱动程序源代码文件所在的磁盘驱动器;“Driver_PATH”标示
2009-05-16 11:00:00 3223
原创 Visual C++设备驱动开发环境设置
Visual C++设备驱动开发环境设置Visual c++集成开发环境(IDE)下,驱动开发人员可以使用并设置它的Makefile项目,以使其能直接编译、连接设备驱动程序的眼袋吗。这时,开发人员不需要单独进入DDK命令提示窗口就可得到设备驱动程序的可执行文件。Malefile项目在开发用户应用程序时,现在已经很少使用Makefile项目了,其他Visual C++向导,如App Wi
2009-05-16 10:39:00 2638
原创 NMAKE
NMAKENMAKE.EXE是一个32b的Microsoft程序维护工具,他根据其描述文件中的命令来构造一个工程,调用语法如下:NMAKE [options][/f filename][/x filename][macros][targets][@commandfile]其中,“targets”参数指明NMAKE的构造目标,如果未使用targets,则NMAKE将默认其构造的第一个目标
2009-05-16 09:28:00 3085
原创 BUILD工具的调用
BUILD工具的调用BUILD工具既可以在DDK的命令提示窗口中直接调用,也可以使用批处理文件来间接调用,其语法都是一样的,如下所示:build[option…]其中,“build”为BUILD工具的命令关键字,他不区分大小写;“option”为要传递给BUILD工具的选项,他们区分大小写,且每个选项前都有一个半字线(-)。下表列出了常用的BUILD选项。常用的BUILD选项
2009-05-16 09:13:00 1828
原创 构造日志文件
构造日志文件BUILD工具在创建目录文件过程中会产生一些日志文件,以表明其所创建文件的状态,如下所例1、 build.log:NMAKE的命令列表。2、 build.wrn:警告信息列表。3、 build.err:错误信息列表。有些编译程序和连接程序的警告信息被BUILD工具过滤掉了,这些信息不会显示在DDK的命令提示窗口中,打他们仍会存在于build.log和build
2009-05-16 09:01:00 1646
原创 makefile文件
makefile文件下面程序清单列出了一个标准的makefile文件,它激活DDK中的宏定义文件makefile.def。驱动开发人员请不要修改这个文件,如果需要向该项目添加或删除源文件,请更改sources文件中的SOURCES宏。典型的makefile文件##DO NOT EDIT THIS FILE!!!EDIT ./sources. If you want to add a
2009-05-16 08:56:00 1477
原创 dirs文件
dirs文件通过dirs文件,BUILD工具可以递归创建其他目录中的目标源文件。dirs文件通常存在于含有子目录的上层目录中(如DDK的根目录),其子目录可以是源文件所在的目录,也可以使其他含有dirs文件的目录。在dirs文件中可以使用DIRS宏,以指明BUILD工具需要构造的目录列表,其各个目录之间可以用空格键或“tab”键来分割,但DIRS宏只能列出当前目录的下一级目录。即当存在多级
2009-05-16 08:51:00 2451
原创 SOURCES
SOURCES指明目标程序源文件的文件名(包括他们的扩展名),其各个文件名之间可以用空格键或“tab”键来分割,且它们都必须存放在该sources文件所在的目录中。对uUSB设备驱动程序,SOURCES列出了其各个处理例程所在源文件的文件名。系列程序清单列出了USB设备驱动程序的一个典型sources文件。它指明该驱动程序可执行文件的文件名为usbdriver.sys,存放路径为为obj子
2009-05-16 08:41:00 2145
原创 INCLUDES
INCLUDES指明BUILD工具在编译过程中搜索头文件时所需的路径名,其每条路经以“;”分割。BUILD工具也会在其默认的路径列表中搜索头文件,但INCLUDES搜索路径的优先级高于其默认路径的优先级。即BUILD工具将首先搜索INCLUDES的搜索路径,然后在搜索其默认路径。
2009-05-16 08:24:00 1557
原创 TARGETLIBS
TARGETLIBS指明BUILD工具在创建目标文件过程中所必须连接的一些库文件。对于USB设备驱动程序,其必须连接usbd.lib库文件,语句如下:TARGETLIBS=$(BASEDIR)/lib/*/free/usbd.lib
2009-05-16 08:20:00 2004
原创 Sources文件
Sources文件 为指明创建设备驱动程序的详细信息,开发人员必须在驱动程序源文件所在的每一个子目录中都建立一个sources文件,且应遵循如下规则:1、 文件名必须是sources,没有扩展名。2、 文件内容由能够被BUILD工具所知别的宏定义组成,其定义格式如下:MACRONAME=MacroValue 其中,“MacroValue”是一个字符型
2009-05-16 08:17:00 5222 3
原创 环境变量
BUILD工具需要使用一些环境变量,他们大多数是在自由构造环境或检查构造环境的初始化时,由DDK的setenv.bat批处理文件建立的。其中,有些环境变量可以被sources文件直接引用,而其他环境变量只能被BUILD工具内部调用。 在sources文件中直接引用系统环境变量的语法为:$(VariableName),其中“VariableName”为环境变量的名字
2009-05-15 21:40:00 1545
原创 BUILD工具的操作过程
BUILD工具 BUILD工具是创建设备驱动程序的主要工具,它从单个NMAKE概念出发,可以成批编译各种目标源文件。简单的说,BUILD工具知识建立在NMAKE基础上的一个连接程序,它使用makefile文件来激活NMAKE,以执行真正的比一工作,并产生一个或多个BUILD产品,如自由版本或检查版本的设备驱动程序。下图是BUILD工具的操作过程。BUILD工具的操作过程
2009-05-15 21:38:00 2133
原创 WDM驱动设计系统环境设置
系统环境设置在编写USB设备驱动程序时,开发人员需要使用下列软件: 1、 Microsoft Visual C++。 2、 SDK(Software Development Kit,软件开发工具包),它是可选的。 3、 DDK(Driver Development Kit,驱动开发工具包)。 Visual C++是包含标准编译工具(编译程序和连接程序)的集成开发环境,通过正确设置,其可以用来建立内
2009-05-15 21:12:00 2772 2
原创 驱动程序的几个对象
驱动程序对象是由TYPE,SIZE,DeviceObject,Flags,DriverStart,DriverSize,DriverSection,DriverExtension,DriverName,HardwareDatabase,FastIoDispatch,DriverInit,DriverStartIo,DriverUnload,MajorFunction组成。其中TYPE,SI
2009-05-14 15:04:00 1486
原创 USB常见术语及缩略词
ACK 确认信号Active Device 正在使用的设备Asynchronous Data 异步数据Asynchronous RA 异步
2009-05-14 11:32:00 3199
转载 USB设备的电源设计考虑
USB设备的电源设计考虑作者:duoduo 在USB接口有四根线,分别是VBUS,D-,D+,GND。其中VBUS线是HOST/HUB向USB设备供电的电源线。HOST/HUB每个端口通过VBUS提供的电流最大为500mA,电压范围是4.4V-5.5V,但是这并不是意味着设备可以无条件地使用VBUS向自己提供500mA的电流。 根据USB规范,从
2009-05-13 18:15:00 3545 2
转载 PCI卡的PCB布线规则
PCI卡的PCB布线规则 作者:duoduo PCI卡的布线比较讲究,这是PCI信号的特点决定的。在常规性的高频数字电路设计中我们总是力求避免阻抗不匹配造成的信号反射、过冲、振铃、非单调性现象,但是PCI信号却恰恰是利用了信号的反射原理来传输物理信号,为使能够合理利用信号反射同时又尽力避免较大的过冲、振铃和非单调性等副作用,PCI-SIG在PCI规范中对PCB物理实现做了一些规
2009-05-13 18:14:00 2185
转载 我学习USB设计的历程
首先谢谢这位大哥的这篇文章,学习是一个痛苦的过程,但是却会有甜美的收获,将自己的感受写出来与大家分享,把资源上载共同利用,真的是我们开发人员共同应当努力的,建设几个”优美“的开发圈圈。谢谢-献给即将学习USB和对此感兴趣的朋友作者:duoduohttp://www.ifelec.com 最初想学习USB的原因在于当时非常非常想有一台通用编程器,商用的编程器虽
2009-05-13 17:25:00 2748 5
原创 USB描述符
USB是个通用的总线,端口都是统一的。但是USB设备却各种各样,例如USB鼠标,USB键盘,U盘等等,那么USB主机是如何识别出不同的设备的呢?这就要依赖于描述符了。 USB的描述符主要有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,HID描述符,报告描述符等等。关于报告描述符,请看我以前写的:《USB HID报告及报告描述符简介 》 http://h
2009-05-13 14:54:00 2595
原创 USB HID报告及报告描述简介
在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符。 USB HID设备是通过报告来给传送数据的,报告有输入报告和输出报告。输入报告是USB设备发送给主机的,例如USB鼠标将鼠标
2009-05-13 14:48:00 3583
原创 USB电气特性
标准的USB使用4根线:5V电源线(Vbus),差分数据线负(D-),差分数据线正(D+),地(Gnd)。在USB OTG中,又增加了一种mini接口,使用的是5根线,比标准的USB多了一根身份识别(ID)线。USB使用的是差分传输模式,有两根数据线,分别是D+和D-。在USB的低速和全速模式中,采用的是电压传输模式。而在高速模式下,则是电流传输模式。关于具体的高低电平门限值,请参看USB协议。为
2009-05-13 11:36:00 3229
原创 USB设备状态
USB设备状态 USB外设通过数据线与主机连接后,由于其特殊的电气特性,主机立刻知道有外设插入,主机读取外设的描述符,并根据其进行配置。配置完成后,外设和主机就可以进行数据传输。USB外设有若干可能的状态。 (1)连接状态 USB设备可被连接到USB接口上或从接口断开,USB设备处在断开时的设备状态不包括在本篇说明之中。本篇说明中仅讨论那些处在连接状态的设备特性与操作。 (2)加电状态(Power
2009-05-13 11:33:00 5342
原创 USB通信协议
要对USB传输有个清楚的了解首先必须要了解两个基本概念:端点和管道。(l)端点 所有的传输都是传送到设备端点,或是从设备端点发出。端点其实就是一个能够储存多个字节的缓存器。在USB规范中,端点被定义为“USB设备中唯一可寻址部分,是主机与设备之间通信流的来源或去向。” 每个端点所需的唯一地址是由端点编号和方向组成的。编号范围可以是0-15,方向则基于主机的角度:创表示朝向主机,
2009-05-13 11:33:00 8299 3
原创 USB一种主从结构
USB是一种主从结构。主机叫做Host,从机叫做Device(也叫做设备),集线器也被当作一种特殊的设备处理。USB的数据交换只能发生在主机和设备之间,主机和主机,设备和设备之间不能互连。为了在物理上区分主机和设备,使用了不同的插头和插座,这个在USB的连接器一节中会讲到。所有的数据传输都由主机主动发起,而设备只是被动的负责应答。例如,在读数据时,USB先发出读命令,设备收到该命令后,才返回数据。
2009-05-13 11:31:00 10828
原创 USB总线协议概述
USB总线属于一种轮讯方式总线,主机控制端口初始化所有的数据传输。每一总线动作最多传送三个数据包,包括令牌(Token)、数据(Data)、联络(HandShake)。按照传输前制定好的原则,在每次传送开始时,主机送一个描述传输动作的种类、方向、USB设备地址和终端号的USB数据包,这个数据包通常被称为令牌包(TokenPacket)。USB设备从解码后的数据包的适当位置取出属于自己的
2009-05-12 10:24:00 7484 4
原创 USB 软件、端点和管道
在实际的实现上,具体的系统要比这复杂,不同层次的实现者对USB有不同要求,这使得我们必须从不同的层次观察UBS系统。UBS系统提出了一些重要的概念来支持现代个人计算机所提出的可靠性要求,所以USB的分层理解是必须的。它能使不同层次的实现者只关心UBS相关层次的特性功能细节,而不必掌握从硬件结构到软件系统的所有细节。通信服务的协议按照不同的功能分为功能层、设备层和接口层。 模型
2009-05-12 10:09:00 6331
原创 USB编码方式
当USB发送包时,采用的是NRZI(non return to zero invert)数据编码。在NRZI数据编码中,“1”表示在电平上无变化,而“0”表示电平有变化,也就是说如果数据为1,则NRZI编码不变;若数据为0,则NRZI编码发生改变。 但这样的编码方式会遇到一个很严重的问题,若有重复相同的“1”信号一直进入时,就会造成数据长时间无法转换,逐渐累积,而导致“塞车”
2009-05-12 10:05:00 2798
原创 Win 2K OS对硬件中断的处理机制
Win 2K OS将设备的中断请求抽象为独立于平台的中断对象。中断对象包括总线类型、中断优先级别、总线矢量号、中断模式(电平触发、边沿触发)等。操作系统总是将中断对象和一定中断等级(RIQL,Interrupt Request Level)联系在一起,中断的IQRL级别高低,依赖于发生中断的总线类型和总线级别,一个驱动程序可以产生多个具有同一IRQL级别的中断对象。中断对象也总是和一定的
2009-05-12 09:57:00 1999
原创 Win 2K OS的用户模式环境组成
内核模式组件并不实现用户界面,我们看见的是称为子系统的系统扩展组件。根据工作内容的不同,子系统可以分为两个大类:整体子系统和环境子系统。1.整体子系统 整体子系统执行一些必要的系统功能,比如:装载、管理和卸载服务以及驱动程序,与帐号管理器和LOGON进程一起实现系统的安全性管理等。2.环境子系统 环境子系统主要是为应用程序提供编程接口和执行的环境。Microsotf
2009-05-12 09:49:00 1640
qt-win-noncommercial-msvc-3.2.1
2014-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人