I was looking for a way to re-program a firmware into FX3S without changing PMODE and found the 2 stage boot loader. According to KBA90266, the main firmware should not be re-enumerated if it needs to switch back to the bootloader (via CyU3PUsbJumpBackToBooter). Does that mean the only way to use Second Stage Boot Loader should be like the discussion described in this thread How to erase and reprogramming SPI EEPROM without hardware changing involved? ?
I tried the Second Stage Boot Loader(in Cypress\EZ-USB FX3 SDK\1.3\firmware\boot_fw\src) in SDK and in the code I changed CyFx3BootUsbStart (CyTrue, myUsbEventCallback) to CyFx3BootUsbStart (CyFalse, myUsbEventCallback). After programming the .img into SPI FLASH and boot from it, I can program my normal firmware through control center just like the device booting from ROM code boot loader. When my normal firmware was running, can I jump back to the 2 stage boot loader previously programmed into SPI FLASH? Is Second Stage Boot Loader still working? Thank you!
You can reset the device by CyU3PDeviceReset(CyFalse); API. The device will reset and boot from SPI, i.e. the second stage boot-loader firmware.