We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I developed a firmware for FX2 . I tested it in a board with fx2 and spartan FPGA. It worked fine . Now I want to use the same firmware for another board. Iam using cypress driver. When I download the firmware, the device does not enumarate as cypress sample device , some times it is taking a long time to enumarate . When it does not enumarate either it goes as unknown device or it is not listed in the devices list .Can any one say what is the reason for this . I used the same PID and VID of the previous board . Can I use the same PID and VID.?
have you used a USB sniffer to see what's happening on the bus?
what is a USB sniffer? I do not know anything about it
Good! You are half-way there :)
Now switch over to a Google window and enter "what is a usb sniffer".
If still wondering after checking out that information, then please come back with more specific questions.
"Now I want to use the same firmware for another board. ... When I download the firmware, the device does not enumarate as cypress sample device , some times it is taking a long time to enumarate . When it does not enumarate either it goes as unknown device or it is not listed in the devices list"
Does your first board still work fine on the PC? Then it isn't a problem of PC side, rather hardware problem on the new board.
a) Rush current on power up Is it a bus-powered device? Do you see any voltage drop on USB VBUS line caused by the FPGA power up? An external power source may be required, if the power up takes too much current.
b) Other points are, - Crystal OSC stability - Noise - Soldering crack etc. "I used the same PID and VID of the previous board . Can I use the same PID and VID.?""
As long as the same USB configuration (device and configuration descriptor set) is kept on the firmware, you can apply the same VID/PID, even to a MCU from another manufacturer.
Anyway, isn't it better to change the VID/PID, as you are using the VID/PID of cypress sample device :-)
If you connect multiple devices of the same VID/PID to single PC, assign unique serial number to each device, to identify the devices. It sound like the enumeration is disturbed. Not all of software USB sniffers can catch USB enumeration fully. These sniffers can.
USBlyzer http://www.usblyzer.com/
SourceUSB http://www.sourcequest.com/
Most of sniffers attach a probe (filter driver) just to a high-level device driver. Such a sniffer can't catch early enumeration sequence, because high-level device driver is assigned to the device in the later stage of enumeration. Above sniffers attach probes to low-level system drivers, too, to catch the early enumeration stage.
Once enumerated, any sniffer can catch the traffic.
Tsuneo
yes my first board is working good.MY second board is comercial board purchased newly.so there cannot be any problems as u have mentioned in (b). I tried a USB trace to see what is happening during enumaration .PNP is not supported it says . i dont know the reasons for it.
PNP 6.443719 QUERY_DEVICE_RELATIONS OUT 0 \Device\USBPDO-7 0x89781008 STATUS_NOT_SUPPORTED 0 #350 PNP 6.443722 QUERY_DEVICE_RELATIONS IN 0 \Device\USBPDO-7 0x89781008 STATUS_NOT_SUPPORTED 0 #351 PNP 6.443725 QUERY_DEVICE_RELATIONS OUT 0 \Device\USBPDO-7 0x89781008 STATUS_NOT_SUPPORTED 0 #352 PNP 6.443726 QUERY_DEVICE_RELATIONS IN 0 \Device\USBPDO-7 0x89781008 STATUS_NOT_SUPPORTED 0 #353 PNP 6.443898 SURPRISE_REMOVAL OUT 0 \Device\USBPDO-7 0x89781008 STATUS_SUCCESS 0 #354 PNP 6.443978 SURPRISE_REMOVAL IN 0 \Device\USBPDO-7 0x89781008 STATUS_SUCCESS 0 #355 CLEANUP 6.452120 - OUT 0 \Device\USBPDO-7 0x89781008 STATUS_SUCCESS 0 #356 PNP 6.465621 REMOVE_DEVICE OUT 0 \Device\USBPDO-7 0x89781008 STATUS_SUCCESS 0 #357 PNP 6.465677 REMOVE_DEVICE IN 0 \Device\USBPDO-7 0x89781008 STATUS_SUCCESS 0 #358 PNP 26.352920 QUERY_ID OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #359 PNP 26.352944 QUERY_ID IN 0 0x897F96D0 0x89765008 STATUS_SUCCESS 0 #360 PNP 26.352948 QUERY_CAPABILITIES OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #361 PNP 26.352950 QUERY_CAPABILITIES IN 0 0x897F96D0 0x89765008 STATUS_SUCCESS 0 #362 PNP 26.352952 QUERY_DEVICE_TEXT OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #363 PNP 26.352954 QUERY_DEVICE_TEXT IN 0 0x897F96D0 0x89765008 STATUS_SUCCESS 0 #364 PNP 26.352956 QUERY_DEVICE_TEXT OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #365 PNP 26.352958 QUERY_DEVICE_TEXT IN 0 0x897F96D0 0x89765008 STATUS_SUCCESS 0 #366 PNP 26.352960 QUERY_ID OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #367 PNP 26.352961 QUERY_ID IN 0 0x897F96D0 0x89765008 STATUS_SUCCESS 0 #368 PNP 26.353091 QUERY_ID OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #369 PNP 26.353094 QUERY_ID IN 0 0x897F96D0 0x89765008 STATUS_SUCCESS 0 #370 PNP 26.353097 QUERY_ID OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #371 PNP 26.353099 QUERY_ID IN 0 0x897F96D0 0x89765008 STATUS_SUCCESS 0 #372 PNP 26.353116 QUERY_RESOURCE_REQUIREMENTS OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #373 PNP 26.353147 QUERY_RESOURCE_REQUIREMENTS IN 0 0x897F96D0 0x89765008 STATUS_SUCCESS 0 #374 PNP 26.353178 QUERY_BUS_INFORMATION OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #375 PNP 26.353180 QUERY_BUS_INFORMATION IN 0 0x897F96D0 0x89765008 STATUS_SUCCESS 0 #376 PNP 26.353248 QUERY_RESOURCES OUT 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #377 PNP 26.353250 QUERY_RESOURCES IN 0 0x897F96D0 0x89765008 STATUS_NOT_SUPPORTED 0 #378 PNP 45.124684 QUERY_DEVICE_RELATIONS OUT 0 0x897F96D0 0x898726C0 STATUS_NOT_SUPPORTED 0 #379 PNP 45.124687 QUERY_DEVICE_RELATIONS IN 0 0x897F96D0 0x898726C0 STATUS_NOT_SUPPORTED 0 #380 PNP 45.126834 REMOVE_DEVICE OUT 0 0x897F96D0 0x898726C0 STATUS_NOT_SUPPORTED 0 #381 PNP 45.126857 REMOVE_DEVICE IN 0 0x897F96D0 0x898726C0 STATUS_SUCCESS 0
thanks for lot of information. it was really helpull to me punitha
I changed the port and it is working fine . I need one more help also. How to get the unique PID and VID for my device? thanks
"I changed the port and it is working fine"
Aha, it was surely a hardware problem, but not on the board :-) "How to get the unique PID and VID for my device?"
a) For temporary use of development,
you can apply any VID/PID, unless the pair conflicts with existing pairs on your PC. The VID/PID pairs registered to your PC are listed up on this registry key.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_????&Pid_????
Choose a VID which doesn't appear on above registry, for example 0xFFFF.
Then, search this candidate VID on the registered INF files The INF files are held in this folder.
C:\Windows\inf\
As the default, this folder is invisible. You'll need to change the folder option to see this folder on the explorer. Search the VID string, for example "VID_FFFF", in all .inf files in this folder using an utility like Grep, or multi-file search of your favorite text editor, or Windows search companion (search contents).
No INF file has the VID string, the candidate VID is free on your PC. You can use any PID under this VID.
b) For production,
- Buy a VID from USB.org - US$2,000 www.usb.org/.../
- USB device manufacturers distribute unique PID under their VID, for sales promotion. SiLabs, FTDI, Microchip, etc.