2 Replies Latest reply on Aug 1, 2018 11:16 PM by prchc_3505471

    FX3 firmware boot from I2C based EEPROM


      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.