今天把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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

