CyFx3BootUsbStart with option "Re-Enumeration will not be done" fail after reboot (caused by very short USB disconnect / reconnect)

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
GuSc_293616
Level 3
Level 3
5 likes given First like given

Normally we use CyFx3BootUsbStart( CyTrue, ..) with option "Re-Enumeration will NOT be done" and it works as expected.

At the unusual situation where the device power up, start it's USB connect cycle, short after CyFx3BootUsbStart, CyFx3BootUsbConnect but before device became emumerated, a very short USB disconnect / re-connect occur. From this moment on, the device don't start it's enumeration cycle, firmware stay at bootloader and wait until USB connection is ready.

This behaviour can be easily reproduced within a debug session, by restarting the debug session directly after CyFx3BootUsbConnect have been called. From than till next device reset (power cycle or CyFx3BootDeviceReset), no USB enumeration will be triggered. Further firmware reloads within the debugger won't fix that.

If we call CyFx3BootUsbStart( CyFalse, ..)  with option "Re-Enumeration will be done" than it seems to work in any situation.

Is there a way to reset the USB within Second Stage Bootloader to ensure the same behavior like after first power up? Any thing to undo the changes cause by CyFx3BootUsbStart - option "Re-Enumeration will NOT be done"?

0 Likes
1 Solution

We think we found the reason for the behaviour, a other ciruit expected to be in reset state after a power cycle (USB cable unplug / plug) caused our FPGA to became active. This seems to triggger the strange behaviour, because they share resourceses.

View solution in original post

0 Likes
3 Replies
Hemanth
Moderator
Moderator
Moderator
First like given First question asked 750 replies posted

Hi,

Do you mean there is a (diconnect&connect) happening before enumeration and after calling CyFx3BootUsbConnect()?

But after the above disconnect and connect, the device does not enumerate?

- For reproducing the problem, did you suggest using JTAG debugging?

Regards,

Hemanth

Hemanth
0 Likes

Hi,

the short disconnect / connect is not caused by fx3 or our device. It's the customer which plugin the cable, wait very short time remove it and plug it in again. The hell know's why, but if he find the right comment between CyFx3BootUsbConnect() and end of enumeration, for his plug action, than the camera never enumerate. This can be reproduced with JTAG debugger, because I think the the fx3 is not entierly cleared during this plug action and the settings, which avoid re-enumeration during switch from second stage bootloader to application, are still in place and cause this behaviour (only a guess).

Regards,

Heiko

0 Likes

We think we found the reason for the behaviour, a other ciruit expected to be in reset state after a power cycle (USB cable unplug / plug) caused our FPGA to became active. This seems to triggger the strange behaviour, because they share resourceses.

0 Likes