Fx3 USB Bootloader (AN76405 / "Fx3BootAppGcc") and (re-)enumeration?

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

cross mob
Anonymous
Not applicable

Hello!

   

I am trying to get the fx3boot usb bootloader example to work. Uploading works, however, there seems to be a usb (re-)enumeration problem which I don't understand.

   

I am using the CYUSB3KIT-003 EZ-USB® FX3™ SuperSpeed Explorer Kit connected to a SuperSpeed USB port of my laptop. I also can read the Debug messages sent over the Uart using this board.

   

I execute the following steps:

   
        
  • Compile the "Fx3BootAppGcc" firmware and download it to the FX3 RAM via Cypress USB Control Center
  •     
  • Compile the "USBBulkLoopAuto" example firmware, read, verify and transmit the the img file according to AN76405
  •     
  • The USBBulkLoopApp seems to be transmitted correctly. It starts but stops with the Uart debug message "CyU3PUsbStart failed to Start, Error code = 254". Code 254 is CY_U3P_ERROR_NO_REENUM_REQUIRED.
  •    
   

I tried to modify the function CyFxBulkLpApplnInit() of the USBBulkLoopApp (e.g. leaving out the registration of the descriptors). However, it is still not clear to me how to initialize USB after the execution continues in the downloaded firmware after having used the bootloader. Does anybody have a hint for me how to get the USBBUlkLoopApp working with the bootloader? Thank you very much!

   

Regards
Michael
 

0 Likes
2 Replies
Anonymous
Not applicable

Hi,

   

In your Booter code, set the first parameter of CyFx3BootUsbStart API to CyFalse.

   

(please refer to readme.txt in the FX3BootAppGcc Example project for more details)

   

Regards,

   

-Madhu Sudhan

0 Likes
Anonymous
Not applicable

Thank's a lot! I have understood and it works.

   

One more thing: In the documentation of CyFx3BootUsbSetDesc (Firmware API Guide, 1.3.3, page 164) the note says: "If the noReEnum option to the CyFx3BootUsbStart API is used, this API makes a copy of the descriptor to pass to the full firmware application". Do you have a hint for me, where I can access those descriptors in the full (U3P) firmware? I can't find an "U3P equivalent" to CyFx3BootUsbGetDesc(). How can I access those descriptors in the main firmware?

0 Likes