This content has been marked as final. Show 2 replies
I did not get your question clearly.
CyU3PUsbStart() API just initializes the USB block in the FX3. CyU3PConnectState() is the one causes the FX3 device to enumerate.
Hi,I am jumping from (secondary stage) Boot Loader to Application (and vice versa) without device re-enumeration.Excerpt from FX3 Firmware API Guide CyU3PUsbStart description:<<<<<CY_U3P_ERROR_NO_REENUM_REQUIRED - FX3 Booter supports the No ReEnumeration feature that enables to have a
single USB enumeration across the FX3 booter and the final application. This error code is returned by CyU3PUsbStart () to
indicate that the No Re-Enumeration is successful and the sequence followed for the regular enumeration post
CyU3PUsbStart () is to be skipped.>>>>>As I have understood, in case of no ReEnumeration, CyFx3BootJumpToProgramEntry/CyU3PUsbJumpBackToBooter disable processing of (USB) interrupts temporarily and CyU3PUsbStart/CyFx3BootUsbStart enable them immediately again. I verified, USB requests (like get string descriptor, etc.) are processed by API default USB setup handler immediately after calling CyU3PUsbStart and before calling CyU3PUsbRegisterSetupCallback. So, there exists a gap where no user specific callbacks are called.Also, the device should handle setup requests somehow while jumping from one program to another. The best will be to delay the handling a bit until FX software is operational again. Right now the request hangs forever on host side if the request gets sent between CyFx3BootJumpToProgramEntry and CyU3PUsbStart.Regards,D