Yes, it is possible to program the EEPROM with the new firmware using the FPGA and then reset the device to boot the new firmware from the EEPROM.
But in this case, the I2C bus will be Multi-Master (CX3 and FPGA) which can be the reason for the bus collision as mentioned in Errata 6 of the CX3 datasheet.
As CX3 communicates with the MIPI block and sensor through I2C, please confirm that no other communication is going on the I2C bus while CX3 is communicating with MIPI and the sensor.
If I keep the CX3 in reset state when programing EEPROM by FPGA (thus CX3 cannot work and only FPGA is a I2C master), is it OK? After programing EEPROM is finished, keep the CX3 to normal state.
If I keep the CX3 in a reset state when programming EEPROM by FPGA (thus CX3 cannot work and only FPGA is an I2C master), is it OK? After the programming EEPROM is finished, keep the CX3 to the normal state.
>> Please let me know the status of PMODE lines when the CX3 is in reset (Powered up).
If the PMODE lines are configured for I2C boot then on power up the CX3 will boot from EEPROM without waiting for FPGA to program the EEPROM. You can configure the PMODe lines to USB boot - Program the EEPROM (using FPGA) - Change the PMODE lines to I2C boot with USB fallback (Z1Z) - Reset the CX3 - CX3 will boot with the new firmware.