今天把68013A-56焊接在CCD2的CPLD PCB上,配套的EEPROM存儲器還沒有焊接上,所以想用它試驗一下Cypress的基礎(chǔ)開發(fā)實例。研究了一上午,結(jié)果驅(qū)動都沒裝上。
我用一種我沒想到的方式解決的這個問題,詳見文章尾部敘述。
如果有人能給我一點提醒,非常感謝!Please contact "sunmaoduo@163.com"
插入設(shè)備(后文簡稱 FX2LP),顯示Unknown Device如下圖:
Figure 1
雙擊顯示,代碼43:
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
以上是插入設(shè)備時的反應(yīng)。
Cypress提供的Vista(compatible with Windows 7)驅(qū)動文件包括cyusb.inf、cyusb.sys,根據(jù)TRM中的相關(guān)內(nèi)容:
Figure 7
我修改了cyusb.inf文件中的相關(guān)項,現(xiàn)將cyusb.inf內(nèi)容列出(大部分和Cypress Suite USB 3.4.7 附帶的通用驅(qū)動配套inf文件相同):
————————————————————————————————————————

; Installation INF for the Cypress Generic USB Driver for Windows Vista ; Processor support for OS unknown platforms. ; ; (c) Copyright 2011 Cypress Semiconductor Corporation ; [Version] Signature = " $WINDOWS NT$ " Class = USB ClassGUID ={36FC9E60-C465-11CF- 8056 - 444553540000 } provider =%CYUSB_Provider% CatalogFile = CYUSB.cat DriverVer = 10 / 17 / 2011 , 3.4 . 7.000 [SourceDisksNames] 1 =%CYUSB_Install% ,,, [SourceDisksFiles] CYUSB.sys = 1 [DestinationDirs] CYUSB.Files.Ext = 10 ,System32\Drivers [ControlFlags] ExcludeFromSelect = * [Manufacturer] %CYUSB_Provider%= Device,NT,NTx86,NTamd64 ; for all platforms [Device] %VID_04B4&PID_8613.DeviceDesc%=CyUsb, USB\VID_04B4& PID_8613 ; 修改了VID、PID,下同 ; for windows 2000 non intel platforms [Device.NT] %VID_04B4&PID_8613.DeviceDesc%=CyUsb, USB\VID_04B4& PID_8613 ; for x86 platforms [Device.NTx86] %VID_04B4&PID_8613.DeviceDesc%=CyUsb, USB\VID_04B4& PID_8613 ; for x64 platforms [Device.NTamd64] %VID_04B4&PID_8613.DeviceDesc%=CyUsb, USB\VID_04B4& PID_8613 [CYUSB] CopyFiles = CYUSB.Files.Ext AddReg = CyUsb.AddReg [CYUSB.HW] AddReg = CYUSB.AddReg.Guid [CYUSB.Services] Addservice = CYUSB, 2 ,CYUSB.AddService [CYUSB.NT] CopyFiles = CYUSB.Files.Ext AddReg = CyUsb.AddReg [CYUSB.NT.HW] AddReg = CYUSB.AddReg.Guid [CYUSB.NT.Services] Addservice = CYUSB, 2 ,CYUSB.AddService [CYUSB.NTx86] CopyFiles = CYUSB.Files.Ext AddReg = CyUsb.AddReg [CYUSB.NTx86.HW] AddReg = CYUSB.AddReg.Guid [CYUSB.NTx86.Services] Addservice = CYUSB, 2 ,CYUSB.AddService [CYUSB.NTamd64] CopyFiles = CYUSB.Files.Ext AddReg = CyUsb.AddReg [CYUSB.NTamd64.HW] AddReg = CYUSB.AddReg.Guid [CYUSB.NTamd64.Services] Addservice = CYUSB, 2 ,CYUSB.AddService [CYUSB.AddReg] ; Deprecating - do not use in new apps to identify a CYUSB driver HKR,,DevLoader,, * ntkern HKR,,NTMPDriver,,CYUSB.sys ; You may optionally include a check for DriverBase in your application to check for a CYUSB driver HKR,,DriverBase,,CYUSB.sys HKR, " Parameters " , " MaximumTransferSize " , 0x10001 , 4096 HKR, " Parameters " , " DebugLevel " , 0x10001 , 2 HKR,,FriendlyName,, %CYUSB_Description% [CYUSB.AddService] DisplayName = %CYUSB_Description% ServiceType = 1 ; SERVICE_KERNEL_DRIVER StartType = 3 ; SERVICE_DEMAND_START ErrorControl = 1 ; SERVICE_ERROR_NORMAL ServiceBinary = % 10 % \System32\Drivers\CYUSB.sys AddReg = CYUSB.AddReg LoadOrderGroup = Base [CYUSB.Files.Ext] CYUSB.sys [CYUSB.AddReg.Guid] HKR,,DriverGUID,, %CYUSB.GUID% [Strings] CYUSB_Provider = " Cypress " CYUSB_Company = " Cypress Semiconductor Corporation " CYUSB_Description = " Cypress Generic USB Driver " CYUSB_DisplayName = " Cypress USB Generic " CYUSB_Install = " Cypress CYUSB Driver Installation Disk " VID_04B4 &PID_8613.DeviceDesc= " Cypress USB Generic Driver (3.4.7.000)FRANK64 " ; 修改成自定義的名字 CYUSB.GUID = " {76C2F9FD-3238-48aa-A217-06A805FE4DC9} " ; 利用GUIDGEN.EXE生成了新的GUID CYUSB_Unused = " . "
————————————————————————————————————————
?
然后點擊更新驅(qū)動程序,將目標文件夾指向我創(chuàng)建的.inf文件和對應(yīng)的.sys文件所在的文件夾,確定,顯示:
Figure 8
其實就是沒有更新驅(qū)動…一切都沒有變化(原因是沒有成功識別設(shè)備的VID&PID):
Figure 9
Figure 10
?
回想一下,首次插入USB設(shè)備的時候,即便沒有安裝驅(qū)動,系統(tǒng)也應(yīng)該能夠通過標準請求得到USB設(shè)備默認的VID、PID吧,可是我插入USB設(shè)備后,VID、PID俱不顯示,而沒有VID&PID系統(tǒng)當然不知道安裝什么驅(qū)動程序,也無法把我改好的.inf文件和設(shè)備捆綁起來。這是否說明問題出在硬件上,比如USB電纜?
Answer:不是硬件問題,也不是電纜問題!下面是次日上午,我發(fā)現(xiàn)的奇怪現(xiàn)象:
上午我把68013A without EEPROM(后文簡稱FX2LP)的板子拿到實驗室,連接我的臺式機(XP x86)和同學的筆記本電腦(Win7 x64),發(fā)現(xiàn)竟然都能識別出VID_04B4 & PID_8613,并且成功安裝Cypress Suite USB 3.4.7提供的驅(qū)動(XP:wxp x86,7:wlh x64)。而我實驗室和宿舍的兩臺筆記本(Win7 x64)的 USB2.0接口 均不能識別FX2LP的VID和PID。
當我決定把FX2LP插在USB3.0接口上試一試的時候,奇跡發(fā)生了(下列圖中的Win7個性化效果不同于之前的截圖,因為下列圖截圖于實驗室筆記本win7,之前是宿舍筆記本win7):
這里有一個細節(jié):
1、當首次用USB2.0接口連接FX2LP時,顯示"unknown device"在"通用串行總線控制器",錯誤代碼43,顯然Windows給FX2LP安裝了一個驅(qū)動(圖4),不過驅(qū)動程序存在錯誤(43);
2、當首次用USB3.0接口連接FX2LP時,顯示"未知設(shè)備"在"其它設(shè)備",而且沒有安裝任何驅(qū)動;
Figure 11
VID&PID均得到了識別
Figure 12
且成功安裝了驅(qū)動(在啟動計算機時,F(xiàn)8禁用了強制驅(qū)動簽名)。
Figure 13
下圖是安裝完驅(qū)動的效果,名字上的FRANK64是我在inf文件中加的:
Figure 14
總結(jié)如下:
我比較一下成功識別和失敗的計算機的不同:
1、失敗的計算機除了帶有USB2.0還帶有USB3.0接口;
2、成功的計算機只帶有USB2.0接口。
我想問題可能出在這個USB3.0接口上,我使用帶有USB3.0接口的計算機的電腦時,當FX2LP連接在USB2.0接口上時,無法識別VIDPID,但是如果FX2LP連接在USB3.0接口時,可以成功顯示VIDPID,并成功安裝驅(qū)動。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
