Figure 4-4 shows the EEPROM update process. For EEPROM firmware update, the whole process
shall be executed twice as per the EEPROM memory organization: the first execution
is to update one region and the second execution is to update the other region.
Firmware will automatically determine which region (Region-0 or Region-1) needs to
be updated first. Below is the process for EEPROM patch bundle update from a
host.
- The flash update process can be initiated by the host when the device is fully functioning in the FWUP mode (External EEPROM or USB Endpoint Boot Mode), and the port shall be disabled during the update process.
- The host will get information on which of the two regions is the current active region – The active region is the region on the external EEPROM from which the device successfully loaded the patch bundle during the current boot, and it could be either Region-0 or Region-1. In FWUP mode, it may set the active region as Region-0 as default.
- The host shall first attempt to update the contents of the inactive region. Only after the inactive region is successfully updated, the host shall attempt to update the contents of the active region. This process ensures that a redundant and valid copy of the patch bundle is available on the external EEPROM so that the device always successful boots, thereby making the EERPOM update process fail-safe.
- The host shall implement the sequence below to update the patch bundle:
- Execute SFWi command to get information on which region to update.
- Execute SFWd command to flash the patch bundle data to the external EEPROM through the PD controller. The patch bundle data is divided into data pages and each page has 64 bytes of data.
- Execute SFWs or SFWu command after the patch bundle data is sent to complete the whole EEPROM update operation. If secure flashing is required, use SFWs to write signature data and key data (total 64 bytes). Otherwise, use SFWu to end the EEPROM update. Both commands will swap the region header to the other region which has not been updated if this is the first execution of the EEPROM firmware update.