一、Cypress USB驱动程序的几个版本
截至目前,CY网站上至少公布了三个版本的驱动程序,最后那个SuiteUSB也在更新,罗列几个如下:
1,早期EZUSB.SYS,这是给AN2131年代写的驱动程序,90年代公布,目前CY网站上已经删除。
2,后期CYUSB.SYS,这是给FX2和FX2LP写的驱动,是前者的升级版本。随着《CY3684 EZ-USB FX2LP开发套件》一起发布。
3,2009年开始的SuiteUSB 3.4.2,2011年的3.4.4,同时上述2项废止。全称叫“SuiteUSB 3.4 - USB Development tools for Visual Studio”,最新3.4.4公布时间2011年01月12日。
2和3可以统称为CYUSB,它和EZUSB的区别如下:
1,EZUSB的VID ,PID是04B4,1002,具体由ezusbw2k.inf指定。这就是所谓通用驱动GPD( General Purpose Drive),主机控制台叫EZ-USB Control Panel。主机采用WindowsAPI进行开发,使用标准IOCTL函数。它由安装CypressEZ-USBDevelopmentKit开发包得到,版本号是261700。
2,CYUSB的VID,PID是04B4,1004,具体由INF文件指定,对应的驱动应该是cyusb.sys,cyusbpre.inf,控制台使用Cypress USB Console。主机使用CyAPI函数,当然IOCTL也可用(但与老版本有变化,见CYUSB.PDF)。它由安装“CY3684 EZ-USB FX2LP 开发套件”获得。最近一次更新时间是2010 年 01 月 05 日,它的软件资料也指向了SuiteUSB,即下面第三条所列。
CYUSB包含2个文件:
3,SuiteUSB,上个版本是3.4.2,如今更新到3.4.4。它与CYUSB的差别在于,它支持.NET平台,可以使用C++、C#语言开发上层应用。硬件上支持64位操作系统。SuiteUSB的下载地址:http://china.cypress.com/?rID=34870。3.4.2版本缺省安装在C:\Program Files\Cypress,最新的3.4.4版本缺省安装在C:\Cypress\Cypress Suite USB 3.4.4。
从目前看,2和3都是可选的,随着Windows 7的推广,3会应用越来越广。如果使用VC6编程,只能选择2;如果使用C++、C#则选择3。我了解的信息是,2可以运行在 Windows 2000, Windows XP、Windows Vista 32位、Windows 7 32位操作系统,但不能运行于Vista 64位、Windows 7 64位版本。
二、Cypress Suite USB3.4.4介绍
cyusb.sys驱动程序 |
Cypress通用USB驱动程序 |
C#库:cyusb.dll |
用于与cyusb.sys, usbhid.sys, usbstore.sys驱动程序通讯的类库 |
C++库:cyapi.lib |
用于与cyusb.sys通讯的类库 |
CyControlCenter, CyConsole etc. |
C# 与 C++ 演示代码 |
可运行与下列操作系统和平台:
CPU 类型:
3.4.4包含了C#与C++的例子,即,二者都支持。这就打消了USB驱动升级带来的向下兼容的疑虑。我们可以放心地使用新的CYUSB.SYS,不管是C#开发环境还是C++环境。
三、Cypress Suite USB 3.4.4目录结构
C:\Cypress\Cypress Suite USB 3.4.4目录下共有5个子目录,分别列出:
1,C:\Cypress\Cypress Suite USB 3.4.4\Firmware目录下有5个子目录:
子目录名 |
文件名 |
内容 |
Bin |
Hex2bix.exe |
Hex格式固件转换成IIC格式 |
Include |
Fx2.h fx2regs.h fx2regs.inc fx2sdly.h syncdly.h |
固件开发时用到的include文件 |
Lib |
EZUSB.LIB USBJmpTb.a51 USBJmpTb.OBJ |
固件开发时用到的库函数 |
Bulkloop |
bulkloop.c等 |
批量传输的例子 |
CyStreamer |
CyStreamer.c等 |
Screamer、streamer一类流式程序加载的固件 |
这些固件与之前的CYUSB版本的固件(前文第2项)并无太多差别。
2,C:\Cypress\Cypress Suite USB 3.4.4\CyAPI —— Cypress开发的USB支持函数
使用基于.NET 2.0 DLL库,CyAPI,软件开发人员可以快速建立一个与Cypress GPD cyusb.sys通讯的应用。cyusb.sys是通用驱动程序,经Windows logo确认。最初是在Studio 2005 和 .NET 2.0/3.0平台上开发的。
C:\Cypress\Cypress Suite USB 3.4.4\Firmware目录下有5个子目录和2个文件:
子目录名 |
文件名 |
内容 |
Examples\ cybulk |
若干 |
批量传输的C++示例 |
Examples\cydesc |
若干 |
读取设备描述符的C++示例 |
Examples\FxEEPROM |
若干 |
BC++示例 |
Examples\Streamer |
若干 |
测试端点吞吐量的C#示例,支持同步和批量传输 |
Inc |
CyAPI.h cyioctl.h usb100.h usb200.h |
头文件 |
Lib\ BC6 |
CyAPI.lib |
BC++函数库 |
LIB\x64 |
CyAPI.lib |
64位C函数库 |
Lib\x86 |
CyAPI.lib |
32位C函数库 |
|
CyAPI.chm |
CyAPI文档 |
|
CyAPI.pdf |
CyAPI文档 |
3,C:\Cypress\Cypress Suite USB 3.4.4\CyConsole
C:\Cypress\Cypress Suite USB 3.4.4\CyConsole目录下有3个文件:
子目录名 |
文件名 |
内容 |
|
CyConsole.exe |
控制台程序 |
|
CyConsole.chm |
控制台程序文档 |
|
CyConsole.pdf |
控制台程序文档 |
4,C:\Cypress\Cypress Suite USB 3.4.4\CyUSB.NET
C:\Cypress\Cypress Suite USB 3.4.4\CyUSB.NET目录下有3个子目录,4个文件:
子目录名 |
文件名 |
内容 |
Bin |
BulkLoop.exe CyControl.exe CyUSB.dll Screamer.exe |
.NET平台下的应用程序 |
Lib |
CyUSB.dll |
支持文件 |
Examples\ BulkLoop |
若干 |
C#编写的环路测试例程 |
Examples\ Control Center |
若干 |
C#编写的控制中心例程,可测试cyusb.sys、usbhid.sys、usbstore.sys支持的各种设备 |
Examples\ Screamer |
若干 |
C#编写的同步传输例程 |
Examples\ Template |
若干 |
C#编写的用于显示设备连接、驱动程序连接的模板 |
|
CyControlCenter.chm CyControlCenter.pdf |
控制中心例程的文档 |
|
CyUSB.NET.chm CyUSB.NET.pdf |
.NET类库,CyUSB.dll的文档 |
5,C:\Cypress\Cypress Suite USB 3.4.4\Driver —— USB底层驱动,IOCTL支持
C:\Cypress\Cypress Suite USB 3.4.4\Driver目录下有2个子目录,2个文件:
子目录名 |
文件名 |
内容 |
inc |
cyioctl.h |
IOCTL支持的头文件 |
bin\w2k\x86 |
cyusb.inf cyusb.sys |
Windows2000 32bit平台的安装文件 |
bin\wlh\x64 |
cyusb.inf cyusb.sys |
Vista 64bit平台的安装文件 |
bin\wlh\x86 |
cyusb.inf cyusb.sys |
Vista 32bit平台的安装文件 |
bin\wxp\x64 |
cyusb.inf cyusb.sys |
Windows XP 64bit平台的安装文件 |
bin\wxp\x86 |
cyusb.inf cyusb.sys |
Windows XP 32bit平台的安装文件 |
|
CyUSB.chm CyUSB.pdf |
IOCTL支持文档,INF文件制作过程 |
需要说明的是,类库CyAPI.lib 和 Cyusb.dll 是高级接口,而CYUSB.SYS是低级接口。我们可以使用IOCTL操作设备(如同EZ-USB,前文第一项,但与早期的定义差别很大),也可以使用类库。
四、硬件、固件的相关文章
AN14557——讲述了开发USB应用的变迁,从EZUSB的对设备句柄进行IO操作,到后来的静态链接库方式的CYAPI(它只能操作使用 cyusb.sys 的设备),到目前的SuiteUSB.net 2.0(它可以操作 cyusb.sys, usbstor.sys、usbhid.sys上的设备)。文章讲述了使用Visual Studio 2005建立新应用的过程。
AN15456——FX2LP硬件设计和调试指南。讲述了最小系统的构成,如果出现问题根据CLKOUT管脚的四种情况查找故障原因。重点讲述了驱动程序的故障排除。
AN50963——在使用小容量EEPROM的前提下,如何建立一个固件,可以自动下载到FX2LP中。
AN45197——Hex2Bix转换程序的用法。讲述了将.Hex格式转换成BIX(raw binary)、A51、IIC格式的操作方法。
AN45471——制造商命令设计指南。
AN61244——固件的优化。
AN58790——C#编写的Bulk传输的主机应用。
AN1196——FX2 PCB设计建议。讲述了电路板分层、铺地、眼图等一系列内容
AN1200——串口波特率发生器,软件等。针对全速设备。
AN1193——EZ-USB定时器中断的用法。
AN58985——使用VC++2008进行固件下载。如何解析一个HEX文件,并使用CYAPI.LIB将其下载到器件的RAM中。
AN4053——通过同步传输或者批量传输端点的流应用。
AN1036——电磁噪声环境下的USB错误处理。
High-speed USB PCB Layout Recommendations —— PCB布线建议。
AN13632——测试USB信号质量。
USB Compliance Testing Overview——USB符合(Windows logo)测试概述。
AN52970——WHQL数字签名的过程。
USBDriverUpdate.pdf——把系统较早时间的cyusb.sys升级到新版。
AN61465——详细讲解了使用CYUSB.SYS制作INF文件的过程(针对新版Suite USB)。
五、INF文件的构建
1,AN61465详细介绍了INF文件的结构。
2,C2启动模式下的INF文件
3,C0启动模式下加载SPT文件的INF文件
文章评论(0条评论)
登录后参与讨论