FX3 firmware boot from I2C based EEPROM

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

cross mob
prchc_3505471
Level 2
Level 2
First like given

Hi All,

In our design, we want to keep FX3 firmware in I2C based EEPROM and PMOD[2:0] pins for I2C boot mode. So very first time, as EEPROM will be blank, FX3 bootROM fallback to USB mode and user can upload application-firmware into EEPROM using cypress-control-center utility.

Now, in future, whenever we have new app-firmware and need to upgrade it, let me explain my plan as described below:

[1] Host based user-app (GUI) will give vendor-command to FX3 over control end-point (EP0). This command says that "User want to upgrade FX3 frimware now".

[2] On this command received, FX3 will erase its EEPROM area where older (running RAM firmware) is stored.

[3] Then it will perform soft-reset. i.e. cold-boot

[4] So, on next boot cycle, However PMOD[2:0] is for I2C boot, it will not find valid image from EEPROM and so fallback to USB-boot.

[5] So now user can upload new firmware into I2C based EEPROM using cypress-control-center utility. Finally, on next reboot, FX3 will start running new firmware.

Now, let me ask few queries on this:

[1] Is this plan is suitable ? or do you foresee any issue ?

[2] How good to boot from I2C based EEPROM instead of SPI based FLASH memory ? Is there any drawback with EEPROM & I2C compared to SPI flash ? One I can see is EEPROM size. We can get maximum 2 Mbits (256 KB) chips available in market.

[3] Is there any drawback in above plan compared to If I put second-stage bootloader and maintaining two spaces for app-firmware in SPI-flash, so while firmware upgradation, if any issue occurs, it can revert back to existing app-firmware ?? But I don't see any extra advantage in this SPI-flash based redundant solution, because in my above plan anyway user will get control on USBboot to upgrade new firmware.

I hope your valueable suggestion here.

Thanks,

Premji

0 Likes
1 Solution
abhinavg_21
Moderator
Moderator
Moderator
50 likes received 25 likes received 10 likes received

Hi,

Yes your plan looks fine to me. You can boot from USB for the first time and then program the EEPROM with the new firmware.

Either NOR flash or I2C EEPROm both are fine for storing the firmware image. The difference lies in erasing, EEPROM can be erased bytewise but flash memory can be erased only block wise. If it is fine for you then its your choice.

Thanks & Regards

Abhinav

View solution in original post

2 Replies
abhinavg_21
Moderator
Moderator
Moderator
50 likes received 25 likes received 10 likes received

Hi,

Yes your plan looks fine to me. You can boot from USB for the first time and then program the EEPROM with the new firmware.

Either NOR flash or I2C EEPROm both are fine for storing the firmware image. The difference lies in erasing, EEPROM can be erased bytewise but flash memory can be erased only block wise. If it is fine for you then its your choice.

Thanks & Regards

Abhinav

Thanks Abhinav for reply.

I noted your point.

0 Likes