Write custom FW update tool for FX3

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

cross mob
LeGa_3963206
Level 4
Level 4
50 replies posted 25 replies posted 10 replies posted

Hi,

I'm trying to write my custom FW update tool for FX3 based on example app for Visual studio.

Particularly, I want to provide visual progress bar displaying current progress of burning I2C EEPROM.

Here are some things that aren't quite clear for me so I'll be glad to get help:

1) CyAPI.h contains class "CCyFX3Device" but only DownloadFW() and IsBootLoaderRunning() methods are documented. What about all other methods?

e.g. DownloadBufferToDevice?

2) "CCyFX3Device" extends class "CCyUSBDevice". Which of its methods are used for DownloadFW()? Can I get the source of  DownloadFW?

3) Can I get the sources of CyBootProgrammer.img?

Thanks,

Leonid

0 Likes
1 Solution

Hello,

The two points that you mentioned in the previous response is correct and we do not give out the BootLoader Source code.

Can you please let me know the reason why you require the BootLoader source. What exactly do you want to do with the update tool for FX3?

If you are looking to just program the RAM, I2C EEPROM or the SPI Flash, the control center application source can be used/altered for the same.

Best Regards,

Yatheesh

View solution in original post

0 Likes
8 Replies
YatheeshD_36
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello,

The DownloadFW() and DownloadBufferToDevice() function source is present in the CyAPI.lib source code. Please download the CYUSB Suite Source from this link: https://www.cypress.com/file/289981/download  to obtain the CyAPI.lib source.

The USBFlagProg project in the FX3 SDK is the same as CyBootProgrammer.img. Please refer to the same.

Best Regards,

Yatheesh

0 Likes

Hi, Yatheesh

Thanks, I found sources of CyAPI

As for "USBFlagProg" - I searched all over Cypress installation but didn't found any. Could you please, clarify where can I found one?

Thanks,

Leonid

0 Likes

Hello Leonid,

The USBFlashProg project is present in the following path: <FX3 installation directory>\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxflashprog

Apologies, the project is USBFlashProg and not USBFlagProg.

Thanks,

Yatheesh

0 Likes

Hi Yatheesh,

Looks like this project contains bug - when burned to RAM Control center asks to reset FX3 again before burning another image.

I investigated the issue - this example doesn't respond to IsBootLoaderRunning function from CyAPI.

Particularly this example doesn't handle at all request 0xA0 which is used in CyAPI

Moreover, there is no handling of "Program RAM" option in this example

Could you please check and advice solution/workaround?

Thanks,

Leonid

0 Likes

I think there is misunderstanding.

There are two different parts:

1) Cypress FX3 USB BootLoader Device

     can only burn RAM

2) Cypress FX3 USB BootProgrammer Device (compiled to CyBootProgrammer.img)

     programmed to RAM when user wants to burn I2C

     can burn I2C and SPI

Where can I get source of the first one?

0 Likes

Hello,

The two points that you mentioned in the previous response is correct and we do not give out the BootLoader Source code.

Can you please let me know the reason why you require the BootLoader source. What exactly do you want to do with the update tool for FX3?

If you are looking to just program the RAM, I2C EEPROM or the SPI Flash, the control center application source can be used/altered for the same.

Best Regards,

Yatheesh

0 Likes

Hi Yatheesh,

It's not enough to alter ControlCenter because FX3 FW part also should be altered respectively

Right now I see that USBFlashProg (CyBootProgrammer.img) can't burn RAM

BTW, Cypress\EZ-USB FX3 SDK\1.3\firmware\boot_fw example looks like bootloader, doesn't it?

Anyway looks like I got what I need. Thanks for support

Thanks,

Leonid

0 Likes

Hello Leonid,

Cypress\EZ-USB FX3 SDK\1.3\firmware\boot_fw uses second stage boot loader, to load the firmware. You can use this to jump between the actual firmware and the second stage boot loader and to rerun or reload the firmware.

Best Regards,

Yatheesh

0 Likes