阅读:3557回复:31
问一个也许很老的问题(枚举)100分――――在线等待,当场给分
根据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] |
|
沙发#
发布于:2004-12-27 12:42
我觉得你应该让板子先识别ezusb.sys后,再重新枚举找wdgtldr.sys,具体操作自己改吧 。ezusb.sys主要是用于和usb接口的,这个没装,通讯根本实现不了的。
|
|
板凳#
发布于:2004-12-27 12:55
说得很有道理
|
|
|
地板#
发布于:2004-12-27 13:03
就是说改inf?
怎么改呢? 对换PID/VID ? lzyuer: 为什么这么说呢?还有就是开发板的枚举过程和自己的板子有什么区别? |
|
地下室#
发布于:2004-12-27 13:48
自己顶
|
|
5楼#
发布于:2004-12-27 14:02
就是说改inf? 没错!你看到的开发板的枚举也许是个假相,你先确定 没有下载固件之前的PID/VID,就知道哪个PID/VID对应 哪个sys了 |
|
6楼#
发布于:2004-12-27 14:13
我用softice得drivermonitor看了,的确是先从e2prom中读出b4 47 05 06 10 01 00,然后找到wdgtldr.sys,然后就停止了,不再枚举。而换到开发板就是在读取wdgtldr后,停顿1秒不到,重新枚举,找到ezusb.sys,进入正常的状态。困惑就在此~~~~~~~~~
|
|
7楼#
发布于:2004-12-27 14:16
还有你说――――
应该让板子先识别ezusb.sys后,再重新枚举找wdgtldr.sys 这个有没有什么资料可以说明?我参照得是《EZ Loader Custom USB Firmware Loader Driver >中得步骤来的。 |
|
8楼#
发布于:2004-12-27 17:35
前几天我也受到这个问题的困扰,慢慢想出来的道理,一开始也是
照着EZ Loader Custom USB Firmware Loader Driver 做,可是总是出错,在板上也发了帖子,和别人交流了一下 :) |
|
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。 |
|
10楼#
发布于:2004-12-28 08:06
TO:dalaba
你所描述的是CYPRESS提供的原装的开发板才是那样的,而自己做的伴是要修改VID/PID的,所以得到的结果不是你描述的那样的! TO:Ng_MicHeAl 你问的问题,你可以去搜索一下,在这个论坛上有一个人问过一个类似的问题,他们争论的很激烈,在那个帖子上你可以找到答案的,也可以重新找到自己的思路的! 你可以去看看那个!祝你好运! |
|
11楼#
发布于:2004-12-28 09:52
向e2prom中写入的第一个字节怎么可能是0xb4?
你没有说是使用2131还是68013,但是这两款mcu在load时,第一个字节决不是0xb4; 还真不清楚开发板和你的板子会有两个不同的结果,估计是在使用开发板之前,你使用了control panel下载了mcu中的固件,而其中的描述表地址是一样的,在没有断电的情况下,读出的描述表可能会‘正确’的,其实设备只是被枚举成了default设备而已 |
|
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 |
|
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。 这样都不行的话就无话可说了。去庙里烧拄香没准管用。 :) |
|
14楼#
发布于:2004-12-28 11:55
to dalaba:
请问:“在eeprom中写入开发板的vidpid”,开发板的vidpid是多多少?1002是应该写在firmware中得,那么写到eeprom得是多少? 还有,能不能看看我的inf,正确么? |
|
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] |
|
16楼#
发布于:2004-12-28 12:19
cy7c64613,是fx芯片
我去试试看,inf就麻烦了。:) |
|
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)" |
|
18楼#
发布于:2004-12-28 12:41
我并不会写驱动,inf也看不大懂,不过我很懒,会照葫芦画瓢,我把你的inf中看不懂的都去掉了,并且按照cypress提供的ezusbw2k.inf把你的inf改了点。
把你的softload驱动直接拷到system32\\drivers下面试试,我想没有任何问题了。请看看我改动后的文件有没有低级错误。 你对inf作出的改进和修改,鉴于我的水平的确不够,就没啥意见了。 |
|
19楼#
发布于:2004-12-28 12:50
应该肯定的是你的过程都没错。
eeprom写:b4 47 05 06 10 01 00,后面两个字节是02 00?还是06 00?或者可要可不要?我不清楚,你可以试试。 firmware写:47 05 07 10。 保证搞定。 |
|
上一页
下一页