FX3: Firmware download on existing SPI flash

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

cross mob
Anonymous
Not applicable
        Hello! I've got the following issue using SPI-Boot with USB-Fallback: Whenever a reset (or power-up) occurs, The firmware is loaded from the SPI flash. So far, this works quite OK. Now I'm looking for a method to a) load a different firmware to the RAM (test of a new release before flashing) and later b) overwriting the flash. For both, I need special bootloaders present in FX3. How am I able to to this "in system", i.e. purely SW driven? (I will not be able to just change the PMODE pins in my own future HW, so this is no option). A hard way would probably be invalidating the flash before changing something, but I don't like to do this just to test with alternative RAM-based versions. Regards   
0 Likes
1 Solution
Anonymous
Not applicable

Hi,

   

The solution is obvious - your SW that runs in FX3 must support this.
Speaking in terms of "firmware" and "bootloader":

a) Save bootloader in flash. Load firmware only to RAM at runtime.
b) Merge firmware and bootloader, so that you can load/run new SW. See http://www.cypress.com/?app=forum&id=167&rID=78171 as one of examples.

   

Me myself implemented similar to Cypress Bootloader's A0 vendor request in my firmware. With this request I can upload any data (incl. new program) into FX3 RAM.

br,
kalev  

View solution in original post

0 Likes
6 Replies
Anonymous
Not applicable

Hi,

   

The solution is obvious - your SW that runs in FX3 must support this.
Speaking in terms of "firmware" and "bootloader":

a) Save bootloader in flash. Load firmware only to RAM at runtime.
b) Merge firmware and bootloader, so that you can load/run new SW. See http://www.cypress.com/?app=forum&id=167&rID=78171 as one of examples.

   

Me myself implemented similar to Cypress Bootloader's A0 vendor request in my firmware. With this request I can upload any data (incl. new program) into FX3 RAM.

br,
kalev  

0 Likes
Anonymous
Not applicable
        Hello Kalev! Thanks for the link. However, the example is not present in the drop box any more... Meantime, I realized a solution with "CyBootProgrammer.img" and prior invalidation of SPI flash / use of cold reset. Works fine so far, however the need for a power cycle after flash programming is not welcome. It would be very helpful to gain insight by looking at the source code of "CyBootProgrammer.img" and the BootLoader. Any idea where I can get access to? Further more a link to man page of the ominous 0xA0 vendor request functionality in these two images (and how to address from host) would be helpful. Regards, Peter   
0 Likes
Anonymous
Not applicable
        In meantime, I found out that "cyfxflashprog" corresponds to "BootProgrammer.img". If you can give me the hint, which source code part corresponds to the BootLoader ROM (the one that starts up when FX3 comes up for USB boot mode), this would propably answer all questions...   
0 Likes
Anonymous
Not applicable

Hi,

   

Boot loader example project is in Cypress  ...\firmware\boot_fw directory.

   

Also, FX3 API sources might be useful. These are available at

   

http://www.cypress.com/?rID=57990

   

FX3 firmware sources, version 1.3.1

   

br,

   

kalev

0 Likes
Anonymous
Not applicable
        Thanks! All current questions answered and cold reset working...   
0 Likes
Anonymous
Not applicable

hi,

   

can any one give me the link to download ez usb suite for windows (64 bit)  os. because the one which is available in the fx3 page is throwing error when I open it .

0 Likes