Ng_MicHeAl
驱动牛犊
驱动牛犊
  • 注册日期2004-06-15
  • 最后登录2006-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3557回复:31

问一个也许很老的问题(枚举)100分――――在线等待,当场给分

楼主#
更多 发布于:2004-12-27 11:37
根据ezusb提供的ezloader(就是所谓的soft-load),向e2prom中用vend_ax写入b4 47 05 06 10 01 00(通过开发板),然后按照pdf文件的step by step,生成了一个类似ezloader.sys得sys文件(wdgtldr.sys ).firmware中得vid自然也是改成了1007。可以保证以上的步骤都是完全按照pdf中实现的。

完成后,在ezusb提供的开发板上,可以正确的实现枚举过程,先识别出wdgtldr.sys ,然后重新枚举找到ezusb.sys(我直接用的,没有修改)。然后用我自己vc的程序或者是开发板配套的ezmr程序,都可以实现firmware中得功能。

但是,问题是,我把e2prom拆下来放到我自己的板子上,上电后就只能识别出wdgtldr.sys,无法继续下去了。自然也就不对了。

这个问题我已经困惑了一个多星期,看了论坛上很多类似的贴子,但是总是没有什么进展。

会是板子的问题么?我参照开发板的sch和技术手册设计的,或者inf又问题么?上次发了一个贴,可惜没有人回答,这次重新发贴,希望大虾们帮帮忙,不胜感激,100分奉送~~~~解决了这个问题,我的项目就完成一大半了。

附inf:
[Version]
Signature="$CHICAGO$"
Class=USB
ClassGuid={36FC9E60-C465-11CF-8056-444553540000}

provider=%Cypress%
LayoutFile=layout.inf
;CatalogFile=ezusb.cat
;The CatalogFile entry above is an example and should be uncommented and modified for your driver
;DriverVer=12/27/2004, 1.0.0.0
;The DriverVer entry above is an example and should be uncommented and modified for your driver

[Manufacturer]
%Cypress%=Cypress

[SourceDisksNames]
1=%strWidgetSourceDiskName%,,,
;The above section is for example purposes
;Uncomment and modify this section for your driver

[SourceDisksFiles]
wdgtldr.sys=1
ezusb.sys=1
;The above section is for example purposes
;Uncomment and modify this section for your driver

[Cypress]

; Entry point for the widget after firmware download and renumeration
; Your firmware has been download, the device has ReNumerated, now we
; want to use the EZ-USB General Purpose Device Driver. Your finished
; product should use your own unique VID - see www.usb.org
%USBVID_0547&PID_1007.DeviceDesc%=EZUSB.Dev, USBVID_0547&PID_1007

;
; Entry point for the widget before firmware download and renumeration
; This VID/PID combination will call the EZ-Loader driver and download
; your firmware. Your finished product should use your own unique VID
; see www.usb.org for additional information
%USBVID_0547&PID_1006.DeviceDesc%=WIDGET.Dev, USBVID_0547&PID_1006



[ControlFlags]
ExcludeFromSelect=* ; removes all devices here from the device installer list

[PreCopySection]
HKR,,NoSetupUI,,1

[DestinationDirs]
EZUSB.Files.Ext = 10,System32Drivers
EZUSB.Files.Inf = 10,INF
WIDGET.Files.Ext = 10,System32Drivers
WIDGET.Files.Inf = 10,INF

[EZUSB.Dev]
CopyFiles=EZUSB.Files.Ext, EZUSB.Files.Inf
AddReg=EZUSB.AddReg
;This section is for Windows 98, if you do not wish to support Windows 98
;delete or comment out above section

[EZUSB.Dev.NT]
;CopyFiles=EZUSB.Files.Ext, EZUSB.Files.Inf
CopyFiles=EZUSB.Files.Ext
AddReg=EZUSB.AddReg

[EZUSB.Dev.NT.Services]
Addservice = EZUSB, 0x00000002, EZUSB.AddService

[EZUSB.AddService]
DisplayName = %EZUSB.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
;StartType = 2                  ; SERVICE_AUTO_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%System32Driversezusb.sys
LoadOrderGroup = Base

[EZUSB.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,ezusb.sys

[EZUSB.Files.Ext]
ezusb.sys

;[EZUSB.Files.Inf]
;wdgtldr.Inf

[WIDGET.Dev]
CopyFiles=WIDGET.Files.Ext, WIDGET.Files.Inf
AddReg=WIDGET.AddReg
;This section is for Windows 98, if you do not wish to support Windows 98
;delete or comment out above section

[WIDGET.Dev.NT]
;CopyFiles=WIDGET.Files.Ext, WIDGET.Files.Inf
CopyFiles=WIDGET.Files.Ext
AddReg=WIDGET.AddReg

[WIDGET.Dev.NT.Services]
Addservice = WIDGET, 0x00000002, WIDGET.AddService

[WIDGET.AddService]
DisplayName = %WIDGET.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
;StartType = 2                  ; SERVICE_AUTO_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%System32Driverswdgtldr.sys
LoadOrderGroup = Base

[WIDGET.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,wdgtldr.sys

[WIDGET.Files.Ext]
wdgtldr.sys

;[WIDGET.Files.Inf]
;wdgtldr.Inf

;---------------------------------------------------------------;

[Strings]
strWidgetSourceDiskName = "Cypress USB Drivers"
;The string above and the strings below should be modified to meet your needs
Cypress="Cypress Semiconductor"
USBVID_0547&PID_1006.DeviceDesc="Using widget.inf for EZ-Loader before ReNumeration (wdgtldr.sys)"
USBVID_0547&PID_1007.DeviceDesc="Cypress Widget afterReNumeration (ezusb.sys)"
EZUSB.SvcDesc="Cypress General Purpose USB Driver (ezusb.sys)"
WIDGET.SvcDesc="Cypress General Purpose USB Driver w/ Widget Loader (wdgtldr.sys)"
;The Windows DDK provides a chkinf tool that can be used to check your inf for errors.
;The chkinf tools requires Perl which can be downloaded, at the time of publication,
;at http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl
;end of widget inf file

[编辑 -  12/27/04 by  Ng_MicHeAl]
lzyuer
驱动牛犊
驱动牛犊
  • 注册日期2004-09-05
  • 最后登录2005-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-27 12:42
  我觉得你应该让板子先识别ezusb.sys后,再重新枚举找wdgtldr.sys,具体操作自己改吧 。ezusb.sys主要是用于和usb接口的,这个没装,通讯根本实现不了的。
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-27 12:55
说得很有道理
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
Ng_MicHeAl
驱动牛犊
驱动牛犊
  • 注册日期2004-06-15
  • 最后登录2006-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-27 13:03
就是说改inf?
怎么改呢?

对换PID/VID ?


lzyuer:
为什么这么说呢?还有就是开发板的枚举过程和自己的板子有什么区别?

Ng_MicHeAl
驱动牛犊
驱动牛犊
  • 注册日期2004-06-15
  • 最后登录2006-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-27 13:48
自己顶
lzyuer
驱动牛犊
驱动牛犊
  • 注册日期2004-09-05
  • 最后登录2005-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-27 14:02
就是说改inf?  没错!
怎么改呢?       这个自己摸索吧,我不知道你的实际情况,没法              帮你

对换PID/VID ?
        


lzyuer:
为什么这么说呢?还有就是开发板的枚举过程和自己的板子有什么区别?

 
      你看到的开发板的枚举也许是个假相,你先确定
          没有下载固件之前的PID/VID,就知道哪个PID/VID对应
          哪个sys了
Ng_MicHeAl
驱动牛犊
驱动牛犊
  • 注册日期2004-06-15
  • 最后登录2006-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-27 14:13
我用softice得drivermonitor看了,的确是先从e2prom中读出b4 47 05 06 10 01 00,然后找到wdgtldr.sys,然后就停止了,不再枚举。而换到开发板就是在读取wdgtldr后,停顿1秒不到,重新枚举,找到ezusb.sys,进入正常的状态。困惑就在此~~~~~~~~~

Ng_MicHeAl
驱动牛犊
驱动牛犊
  • 注册日期2004-06-15
  • 最后登录2006-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-27 14:16
还有你说――――

应该让板子先识别ezusb.sys后,再重新枚举找wdgtldr.sys

这个有没有什么资料可以说明?我参照得是《EZ Loader Custom USB Firmware Loader Driver >中得步骤来的。

lzyuer
驱动牛犊
驱动牛犊
  • 注册日期2004-09-05
  • 最后登录2005-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-27 17:35
  前几天我也受到这个问题的困扰,慢慢想出来的道理,一开始也是
照着EZ Loader Custom USB Firmware Loader Driver 做,可是总是出错,在板上也发了帖子,和别人交流了一下 :)
dalaba
驱动小牛
驱动小牛
  • 注册日期2001-09-12
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望11点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-27 18:56
先做个试验看看你的板子是否完美?
在eeprom中写入开发板的vidpid,安到你的板子上,连上主机后出现的设备应该是Cypress Development Board。
用ezmr的download按钮下载一个例子,比如bulkloop.hex
再枚举后出现的是Cypress EZ-USB Sample Device。

再做个试验看看你的firmware是否完美?
把你的firmware里的vidpid改成bulkloop里的vidpid
编译后把这个hex下载,再枚举后出现的还是Cypress EZ-USB Sample Device。
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-28 08:06
TO:dalaba
你所描述的是CYPRESS提供的原装的开发板才是那样的,而自己做的伴是要修改VID/PID的,所以得到的结果不是你描述的那样的!

TO:Ng_MicHeAl
你问的问题,你可以去搜索一下,在这个论坛上有一个人问过一个类似的问题,他们争论的很激烈,在那个帖子上你可以找到答案的,也可以重新找到自己的思路的!
你可以去看看那个!祝你好运!
reuterk
驱动牛犊
驱动牛犊
  • 注册日期2004-12-24
  • 最后登录2005-02-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-28 09:52
向e2prom中写入的第一个字节怎么可能是0xb4?
你没有说是使用2131还是68013,但是这两款mcu在load时,第一个字节决不是0xb4;

还真不清楚开发板和你的板子会有两个不同的结果,估计是在使用开发板之前,你使用了control panel下载了mcu中的固件,而其中的描述表地址是一样的,在没有断电的情况下,读出的描述表可能会‘正确’的,其实设备只是被枚举成了default设备而已
Ng_MicHeAl
驱动牛犊
驱动牛犊
  • 注册日期2004-06-15
  • 最后登录2006-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-12-28 10:20
to lzyuer:

你出现的问题是什么样的?最后用你的方法解决了?

to reuterk:
我用的是cy7c64613,所以参照手册的说明如果使用soft-load,那么就是0xb4。没错的。“估计是在使用开发板之前,你使用了control panel下载了mcu中的固件,而其中的描述表地址是一样的,在没有断电的情况下,读出的描述表可能会‘正确’的,其实设备只是被枚举成了default设备而已”---不太明白,解释的清楚一下好么?

to cahwlx1982:
谢谢,不过我用ezloader和其他的关键词搜索,都没有什么感觉?:(能把那个贴子的一些大概得信息告诉我么?比如日期什么的?

to dalaba:
谢谢你的建议,我开始用我自己的firmware,出现这个问题,后来为了排除错误的可能性,就直接用EZ Loader Custom USB Firmware Loader Driver中得例子ep_pair了,结果还是一样,所以我认为应该
firmware没有问题。至少先解决枚举吧。


-----------------------------------------------

新的一天开始了,真的希望元旦前能解决,还希望各位大虾们不惜赐教,分数我会给你们的,如果不够,我会另外开贴的。3x all
dalaba
驱动小牛
驱动小牛
  • 注册日期2001-09-12
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望11点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-28 11:14
[quote]TO:dalaba
你所描述的是CYPRESS提供的原装的开发板才是那样的,而自己做的伴是要修改VID/PID的,所以得到的结果不是你描述的那样的!

我当然知道自己做的板子是要修改vidpid的,枚举出来的设备不是开发板描述的那样,我的建议这不是为了让你证明一下你的板子和firmware是不是都正确吗?

如果板子和firmware都正确,再把eeprom和firmware里的vidpid换成你的inf里的vidpid,如果你的inf没错的话,eeprom里的vidpid必定枚举出wdgtldr.sys,firmware里的vidpid再枚举出ezusb.sys。

这样都不行的话就无话可说了。去庙里烧拄香没准管用。 :)
Ng_MicHeAl
驱动牛犊
驱动牛犊
  • 注册日期2004-06-15
  • 最后登录2006-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-12-28 11:55
to dalaba:
请问:“在eeprom中写入开发板的vidpid”,开发板的vidpid是多多少?1002是应该写在firmware中得,那么写到eeprom得是多少?

还有,能不能看看我的inf,正确么?
dalaba
驱动小牛
驱动小牛
  • 注册日期2001-09-12
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望11点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-12-28 12:15
你用的是cy7c64613,我没用过,是fx芯片吗?

iic文件在Cypress\\USB\\Examples\\EzUsb\\eeprom images下面,有几种情况:
1,b0 47 05 80 00 00 00 ---这是2131开发板上的eeprom内容
2,b4 47 05 80 00 01 00 02 00
3,b4 47 05 80 00 01 00 06 00--2,3是你用的片子
readme里写着:(a "B0" for EZ-USB, or a "B4" for EZ-USB FX as the first byte, the format load code)

总之 0547 0080是ezusb和ezusb fx开发板eeprom里写的vidpid。

1002是firmware中的,这个没错。

[Strings]
USBVID_0547&PID_0080.DeviceDesc="Cypress EZ-USB Development Board"
USBVID_0547&PID_1002.DeviceDesc="Cypress EZ-USB Sample Device"

inf容我吃饭了慢慢看。

[编辑 -  12/28/04 by  dalaba]
Ng_MicHeAl
驱动牛犊
驱动牛犊
  • 注册日期2004-06-15
  • 最后登录2006-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-12-28 12:19
cy7c64613,是fx芯片

我去试试看,inf就麻烦了。:)

dalaba
驱动小牛
驱动小牛
  • 注册日期2001-09-12
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望11点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-12-28 12:35
[Version]
Signature="$CHICAGO$"
Class=USB
provider=%Cypress%
LayoutFile=layout.inf

[Manufacturer]
%Cypress%=Cypress

[Cypress]

; Entry point for the widget after firmware download and renumeration
; Your firmware has been download, the device has ReNumerated, now we
; want to use the EZ-USB General Purpose Device Driver. Your finished
; product should use your own unique VID - see www.usb.org
%USBVID_0547&PID_1007.DeviceDesc%=EZUSB.Dev, USBVID_0547&PID_1007

;
; Entry point for the widget before firmware download and renumeration
; This VID/PID combination will call the EZ-Loader driver and download
; your firmware. Your finished product should use your own unique VID
; see www.usb.org for additional information
%USBVID_0547&PID_1006.DeviceDesc%=WIDGET.Dev, USBVID_0547&PID_1006

[PreCopySection]
HKR,,NoSetupUI,,1

[DestinationDirs]
EZUSB.Files.Ext = 10,System32Drivers
EZUSB.Files.Inf = 10,INF
WIDGET.Files.Ext = 10,System32Drivers
WIDGET.Files.Inf = 10,INF

[EZUSB.Dev]
CopyFiles=EZUSB.Files.Ext, EZUSB.Files.Inf
AddReg=EZUSB.AddReg

[EZUSB.Dev.NT]
AddReg=EZUSB.AddReg

[EZUSB.Dev.NT.Services]
Addservice = EZUSB, 0x00000002, EZUSB.AddService

[EZUSB.AddService]
DisplayName = %EZUSB.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 2 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\\System32\\Drivers\\ezusb.sys
LoadOrderGroup = Base

[EZUSB.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,ezusb.sys

[EZUSB.Files.Ext]
ezusb.sys

[EZUSB.Files.Inf]
wdgtldr.Inf

[WIDGET.Dev]
CopyFiles=WIDGET.Files.Ext, WIDGET.Files.Inf
AddReg=WIDGET.AddReg

[WIDGET.Dev.NT]
AddReg=WIDGET.AddReg

[WIDGET.Dev.NT.Services]
Addservice = WIDGET, 0x00000002, WIDGET.AddService

[WIDGET.AddService]
DisplayName = %WIDGET.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 2 ; SERVICE_AUTO_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\\System32\\Drivers\\wdgtldr.sys
LoadOrderGroup = Base

[WIDGET.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,wdgtldr.sys

[WIDGET.Files.Ext]
wdgtldr.sys

[WIDGET.Files.Inf]
wdgtldr.Inf

;---------------------------------------------------------------;

[Strings]
Cypress="Cypress Semiconductor"
USBVID_0547&PID_1006.DeviceDesc="Using widget.inf for EZ-Loader before ReNumeration (wdgtldr.sys)"
USBVID_0547&PID_1007.DeviceDesc="Cypress Widget afterReNumeration (ezusb.sys)"
EZUSB.SvcDesc="Cypress General Purpose USB Driver (ezusb.sys)"
WIDGET.SvcDesc="Cypress General Purpose USB Driver w/ Widget Loader (wdgtldr.sys)"
dalaba
驱动小牛
驱动小牛
  • 注册日期2001-09-12
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望11点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-12-28 12:41
我并不会写驱动,inf也看不大懂,不过我很懒,会照葫芦画瓢,我把你的inf中看不懂的都去掉了,并且按照cypress提供的ezusbw2k.inf把你的inf改了点。

把你的softload驱动直接拷到system32\\drivers下面试试,我想没有任何问题了。请看看我改动后的文件有没有低级错误。

你对inf作出的改进和修改,鉴于我的水平的确不够,就没啥意见了。
dalaba
驱动小牛
驱动小牛
  • 注册日期2001-09-12
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望11点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-12-28 12:50
应该肯定的是你的过程都没错。

eeprom写:b4 47 05 06 10 01 00,后面两个字节是02 00?还是06 00?或者可要可不要?我不清楚,你可以试试。
firmware写:47 05 07 10。

保证搞定。
上一页
游客

返回顶部