cypress-FX2-USB驱动理解
--------------------------------------------------------------------------------
----------
如果要开发在Windows的环境下设备的驱动程序,
需要2个文件:
1、.sys文件(2进制文件)-驱动程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
文件
2、.inf文件(文本文件) -驱动程序安装文件(脚本文件)
--------------------------------------------------------------------------------
----------
驱动程序设计文件 - .sys文件
--------------------------------------------------------------------------------
----------
.sys文件可以由免费的"驱动程序开发工具"Windows DDK生成。
.sys文件编写说明:
首先,在sys文件设计中,入口函数为DriverEntry(),相当于C语言中的Main()。
在驱动程序中,如果需要使用资源,例如系统中断,
可以通过Windows提供的接口访问注册
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
,
从注册表中获得空闲的硬件资源,然后进行使用。
另外,Windows是调用
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
接口,例如ReadFile()来从驱动程序中读取数据, 具体实现则要求开发人员根据设备的寄存器定义完成。
例如,
A设备,读取数据时,数据保存在地址为0xA0的寄存器中,
B设备,读取数据时,数据保存在地址为0xB0的寄存器中,
而当这2种设备安装在电脑上时,
Windows并不管这些,
他只要调用驱动程序的ReadFile()函数,
而A设备和B设备各自的驱动程序必须完成不同的映射。
--------------------------------------------------------------------------------
----------
驱动程序安装文件 - .inf文件
--------------------------------------------------------------------------------
----------
.inf文件适用于安装工作不是很复杂的情况。
含有安装一个WDM设备驱动程序需要的所有必需的信息,例如创建的注册表项。
--------------------------------------------------------------------------------
----------
.inf文件详解
--------------------------------------------------------------------------------
----------
文件由节(Section)组成,
每个节又由很多的条目(Key=Value)组成。
.inf是一种线性的执行,不存在分支语句。
它按照节[]为单位来执行的,从某一个[Install]节开始执行,
从上到下执行该节中的条目,
如果该条目是一个节,那么就一条条执行子节中的条目,如此递归执行。
分号";"后的文字都会被视为注释。
例如:
; Installation INF for the Cypress Generic USB Driver for Windows 2000/XP
--------------------------------------------------------------------------------
----------
[Version] ;版本描述信息,主要用于版本控制。
Signature="$CHICAGO$" ;表明这个.INF文件可以用于windows 95以后的所有平台上,
Class=USB ;表明了设备的类型,
;常见类型有:Display(显卡)、Modem(调制解调器)、Printer(打印设备)
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
;所有的USB设备都有相同的ClassGuid,WDM靠128位的GUID来识别驱动程序
;但是例如com1,com2则是驱动的链接名,也叫obj name,可以自己定义
provider=%CYPRESS% ;变量CYPRESS,在[Strings]节中定义了这个变量
CYPRESS="Cypress"
--------------------------------------------------------------------------------
----------
[SourceDisksNames] ;列出指明安装文件所在盘的盘符序列码、描述符、卷标号和序列号。
1=%CYUSB_INSTALL%,,,
;[SourceDisksNames]节内语句的语法为:
;disk-ordinal = disk-description, disk-label,
disk-serial-number
;disk-ordinal(符序列码)-必选项,可设置为从1开始递增的整数
;disk-description(盘描述符)-必选项,用双引号括起的“字符串”或%字符串宏%描述盘的内容或目的。
;disk-label(盘卷标识)
;disk-serial-number未使用。
;本例中,
;disk-description(盘描述符)采用了%字符串宏%
;变量CYUSB_INSTALL,在[Strings]节中定义了这个变量
;CYUSB_INSTALL="Cypress Generic USB Driver Installation
Disk"
--------------------------------------------------------------------------------
----------
[SourceDisksFiles] ;指定安装时使用的源文件和盘符序列码、盘描述符 CyUsb.sys = 1
CyUsb.spt = 1
;[SourceDisksFiles]节内语句的语法为:
;file-name=disk-number[,subdir] [,file-size]
;file-name为必选项,是源盘上文件的名称。
;disk-number是包含file-name指定文件所在源盘的"盘符序列码"
;该盘符序列码需在[SourceDisksNames]节中列出。
;例如,从[SourceDisksNames]节中可知,盘符序列码=1,
;Subdir为可选项,指定文件所在源盘的子目录,如省略则源盘为缺省安装路径。
;file-size为可选项,表明文件的大小,以字节为单位。 --------------------------------------------------------------------------------
----------
[Manufacturer]
%MfgName%=Cypress
--------------------------------------------------------------------------------
----------
[DestinationDirs] ;定义系统路径信息。
CyUsb.Files.Ext = 10,System32\Drivers
;INF文件会指示安装程序在安装的过程中,
;将一些文件复制到硬盘上,或者将硬盘上的一些文件删除、重命名等。
;该节即指定了为实现上述目的的文件所在的目的路径。
;[DestinationDirs]节内语句的语法为:
;file-list-section=LDID,[Subdir]
;LDID列表如下
;...
;10表示windows directory
;...
;10,System32\Drivers表示安装到windows\System32\Drivers目录下
------------------------------------------------------------------------------------------
[CyUsb.NT] ;后缀.NT表示适用于NT技术的所有Windows平台
;
CopyFiles=CyUsb.Files.Ext
AddReg=CyUsb.AddReg
;指明要要复制的文件子节,用于安装,Copyfiles命令可以替换系
统正在访问的文件
;语法:CopyFiles=cfile
;指明添加注册表的子节,等号后面的为自定义节名,
------------------------------------------------------------------------------------------
[CyUsb.NT.HW] ;Windows 2000要求的.Services以及可能.HW
AddReg=CyUsb.AddReg.Guid
------------------------------------------------------------------------------------------
[CyUsb.NT.Services]
Addservice = CyUsb, 0x00000002, CyUsb.AddService
------------------------------------------------------------------------------------------
[CyUsb.AddService]
DisplayName = %CyUsb.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\System32\Drivers\CyUsb.sys
LoadOrderGroup = Base
------------------------------------------------------------------------------------------
[CyUsb.AddReg] ;自定义添加注册表项的节
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,CyUsb.sys
;语法:
;reg-root-string, [subkey], [value-name], [flags], [value]
;
;reg-root-string表示注册表的根名,有HKCR,HKR等等
;HKR表示采用节中指定的值
------------------------------------------------------------------------------------------
[CyUsb.Files.Ext]
CyUsb.sys
------------------------------------------------------------------------------------------
[CyUsb.AddReg.Guid]
HKR,,DriverGUID,,%CyUsb.GUID%
------------------------------------------------------------------------------------------
[Strings] ;这一节中定义了字符串变量,
;当某些字符串频繁地出现在INF文件中,
;为简化输入,可以在该节中定义一个字符串变量,代表该字符串出现在INF
文件中。
CYPRESS="Cypress"
MfgName="Cypress"
CYUSB_INSTALL="Cypress Generic USB Driver Installation Disk" VID_VVVV&PID_PPPP.DeviceDesc="Cypress Generic USB Device" CyUsb.SvcDesc="Cypress Generic USB Driver"
------------------------------------------------------------------------------------------
[Manufacturer]
%MfgName%=Cypress
------------------------------------------------------------------------------------------
[Strings]
CYPRESS="Cypress"
MfgName="Cypress"
CYUSB_INSTALL="Cypress Generic USB Driver Installation Disk" VID_VVVV&PID_PPPP.DeviceDesc="Cypress Generic USB Device" ------------------------------------------------------------------------------------------