You are here

FX3 - Downloading an application after second stage boot loader. | Cypress Semiconductor

FX3 - Downloading an application after second stage boot loader.

Summary: 1 Reply, Latest post by PRAG on 23 Nov 2015 01:47 AM PST
Verified Answers: 0
Last post
Log in to post new comments.
eniv4's picture
13 posts


I would like to use the second stage boot loader to download a "final application" (different descriptors than the second stage boot loader) and then have FX3 renumerate for the final application.

For the second stage boot loader, I am using Fx3BootAppGcc and have enabled renumeration.
For the "final application", I have added a cold reset call [CyU3PDeviceReset(CyFalse)] on a reset event.

Starting from a loaded second stage boot loader, after I reprogram the device with the "final application" it renumerates to the ROM boot loader. Any idea why?

Looks like a reset is happening as part of the renumeration but the firmware entry for the final application is not loaded. As a side not, I'm also storing the firmware entry address in the "final application" USB events handler , before resetting:

  // Stopping the application if it's active.

  // Perform cold reset.
 *((uint32_t *)0x40000000) = (uint32_t)(&CyU3PFirmwareEntry);
  CyU3PDeviceReset (0);


PRAG's picture
Cypress Employee
173 posts


The CyU3PDeviceReset(0) call will wipe out all existing code/data from RAM and cause the chip to boot from ROM bootloader code.

This is expected behaviour.

If you wish to go back to your own second stage bootloader upon receiving a USB reset, call the CyU3PJumpBackToBooter() API.

Log in to post new comments.