打印

初学者关于68013A驱动和固件程序的一些疑惑

[复制链接]
8610|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fshuangy|  楼主 | 2011-8-8 16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在用68013A做一个数据采集的项目,到了USB驱动和固件这里就卡住了 ,以下是我遇到的几个问题,可能很肤浅,请别见笑。呵呵。
由于是刚刚接触驱动和固件方面的知识,所以固件用的是cypress官网上下载的BULKLOOP(FX2文件夹里面的),驱动程序用的是ezsub.sys。(在checked文件夹里面,27KB那个)。下面来描述一下我的问题:
1:插上USB芯片后,在电脑设备管理器中可以看到Cypress EZ-USB FX2(68613) - EEPROM missing 字样,
    我认为这样应该属于驱动程序加载成功。但是在Cypress USB Console中看不到VIP和PID.用EZ-USB   
    Control  Panel 将 bulkloop.hex DOWNLOAD之后,发现设备管理器中的设备名称变成了 Cypress EZ-USB Sample Device  ,然后去看了一下INF文件,里面有这么两段话 USB\VID_0547&PID_1002.DeviceDesc="Cypress EZ-USB Sample Device"
USB\VID_04B4&PID_8613.DeviceDesc="Cypress EZ-USB FX2 (68613) - EEPROM missing"
请问发生这种情况是属于正常还是驱动方面有问题?因为按照道理讲,芯片的VID应该是04B4,PID是8613,就是说应该一直都显示Cypress EZ-USB FX2 (68613) - EEPROM missing 才对。
还有就是为什么在Cypress USB Console中看不到VIP和PID?用什么软件来调试bulkloop固件比较好?
2:驱动程序里面的缓冲区大小是怎么定义的?我在驱动程序里面看到这么两行代码
       inputBufferLength  = irpStack->;Parameters.DeviceIoControl.InputBufferLength;
   outputBufferLength = irpStack->;Parameters.DeviceIoControl.OutputBufferLength;
   这两行应该是输入和输出缓冲区的长度吧?但是我在找到了InputBufferLength和OutputBufferLength定义处后发现,里面没有说明这两个量究竟是多少,是已经默认了还是我没有找到,请指点一下。
3:这个问题和上一个问题有点关系,就是关于传输速率的问题,我看到论坛上有人说在工程中加入头文件cyioctl.h并调用其中的一个函数来改变缓冲区的大小就可以改变传输速率,请问这个函数在驱动程序的哪处调用,怎么调用比较好?
4:上位机的读取数据的长度是在哪里定义的?
希望能得到大家的指点,不胜感激!:handshake

相关帖子

沙发
dqyubsh| | 2011-8-8 20:22 | 只看该作者
1,看你的说明,至少安装过两个版本的驱动程序,否则不应该有EZ-USB Control  Panel和Cypress USB Console两个程序。
这两个驱动,都是cypress给的,但一个版本早,一个新,目前网站上还有一个更新的版本(Cypress Suite USB 3.x)。这几个版本不能同时安装,否则就会出现一些莫名其妙的问题,冲突。即便删除其中一个,也不会删除对应的驱动程序,除非手工删除WINDOWS目录下的一些文件,并修改注册表。
第一个版本,就是安装出现EZ-USB Control  Panel的那个版本,早已过时,不要再用了。如果对它的内容感兴趣,安装到一个不用的机器上,看看例子就删掉吧。
关于调试bulkloop,一种方法是用Cypress USB Console,手工向OUT端点发送一组数据,然后从IN端点取回数据,可以看到二者相同;另外一种方法,使用VC项目,位于C:\Cypress\USB\Util\CyBulk,它可以代替手工过程,完成自动测试。
2-4,关于主机应用程序,可以使用DeviceIoControl一类的较低级函数,10年前最早的EZ-USB那个时代的例子就是用这类函数;后来,cypress将这些函数封装成类,称为CYAPI,简化了应用,它支持VC6.0,32位平台;大概去年吧,又搞出个最新版的驱动,叫Cypress Suite USB 3.x,不仅支持CYAPI,还有个CyUSB.NET,目的是支持64位平台!
你所说的增加缓冲区的程序,使用cyioctl.h,应该属于最早的那个版本。遗憾的是,我没用过这个版本。一直用CYAPI了。
在最新的那个版本里,CyUSB.NET,包含一个例子,Streamer,它的测试结果是40M字节/s,完全可以取代之前的最早版本。因为用不到那么快,所以没有仔细研究这个例子。

使用特权

评论回复
板凳
babaluoshahao| | 2011-11-24 08:46 | 只看该作者
楼主现在,现在都搞清了吧?能不能帮帮小弟,我现在弄不清……

使用特权

评论回复
地板
zzzljb| | 2012-12-13 11:12 | 只看该作者
因为你的Bulkloop工程中将VID和PID改为了0547和1002.可以用keil查看一下bulkloop工程中的.a51文件就知道了。

使用特权

评论回复
5
doliphin| | 2012-12-13 14:37 | 只看该作者
官网AN70486和AN70983两篇应用文档中有关于上位机驱动的说明  包括你说的那个读多少字节的问题

使用特权

评论回复
6
笑拥江山梦| | 2016-4-13 10:03 | 只看该作者
我也很迷惑,在查资料中……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

75

帖子

2

粉丝