fyshe
驱动牛犊
驱动牛犊
  • 注册日期2001-05-07
  • 最后登录2004-06-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1556回复:4

都是固件惹的祸

楼主#
更多 发布于:2001-10-24 09:30
大家好:

我用DS2.0写的Ezusb2131QC的驱动一直都工作的很好,可是昨天写固件那家伙冒出一奇怪的想法:
   他在Firmware里面先disconnect,再Renumeration。
把这个固件下载到片子里面Run后,应用程序再也无法和设备联系了。在2000下,这个设备也就“光荣地”戴上感叹号了!!
   但是,用Cypress 提供的驱动(GPD)就好使。

先谢了!!


[fyshe 编辑于 2001-10-24 09:35]
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-10-24 11:54
例子EZUSB工程的说明文件里说这是专门为替换Cypress驱动(GPD)做的,这样说来应该没有什么差异才对。我曾经试验过,除了也出现你上一个帖子写的“Remove Device Warning”外,功能上好象都一样,但我不敢说完全一样。谢谢你,我唯一的驱动问题让你解决了!
技术资料上讲,EZUSB再枚举的物理过程的确是断了再连上,用软件模拟的方法来控制硬件实现的。究竟是怎么回事呢?要是你清楚就好了,我就又少了一个疑问。:)
fyshe
驱动牛犊
驱动牛犊
  • 注册日期2001-05-07
  • 最后登录2004-06-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-10-24 11:31
诚然,DS2.0里有个例子叫EZUSB。但是我一用这个例子生成的驱动,
一插上设备,立即蓝屏。

以前的固件很简单,利用BULK方式,EP2IN/EP2OUT。上位机,给一个指令,设备发送一大堆数据。

现在是他在固件里边作了一个断开再枚举的过程:
只要下载固件,start 8051,这时候8051就会使设备自行断开一下,再联上去。这些可能是通过8051设置某些寄存器来实现的,具体情况我也不明白。

另外,我用SoftICE跟踪了一下,
发现我的驱动在设备插入过程中(OnStartDevice())出现“Failed to open pipe object”,但是你可照常使用。
一旦下载它的那个烂固件,这个过程跟重新插入设备一样,在OnStartDevice())出现“Could not locate the interface”!!
奇怪也哉!!!

我也正在跟踪之,请大家关照,BOW~~




sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-10-24 11:14
DS2.0里有个例子叫EZUSB,请问能不能直接用?你写的驱动和这个例子有什么主要不同的地方?请多多指教。
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-10-24 11:10
[QUOTE]原本由 fyshe 发表
[B]他在Firmware里面先disconnect,再Renumeration。
[/B][/QUOTE]

请问fyshe:原来是怎么做的?先Renumeration,再disconnect?这个原理我不是很清楚,请您解释一下好吗?
游客

返回顶部