图 4-4 展示了 EEPROM 更新过程。对于 EEPROM 固件更新,整个过程应根据 EEPROM 存储器组织方式执行两次:第一次执行是更新一个区域,第二次执行是更新另一个区域。固件会自动确定需要先更新哪个区域(区域 0 或区域 1)。以下是从主机更新 EEPROM 补丁捆绑包的过程。
- 当器件在 FWUP 模式(外部 EEPROM 或 USB 端点引导模式)下完全正常运行时,主机可以启动闪存更新过程,并且在更新过程中应禁用端口。
- 主机将获取有关两个区域中哪个区域是当前活动区域的信息 - 活动区域是外部 EEPROM 上器件在当前引导期间成功加载了补丁捆绑包的区域,它可以是区域 0 或区域 1。在 FWUP 模式下,默认情况下可能将活动区域设置为区域 0。
- 主机应先尝试更新非活动区域的内容。仅当成功更新非活动区域后,主机才应尝试更新活动区域的内容。此流程确保在外部 EEPROM 上提供补丁捆绑包的冗余和有效副本,以便器件始终成功引导,从而使 EERPOM 更新过程进入失效防护。
- 主机应实施以下序列来更新补丁捆绑包:
- 执行 SFWI 命令以获取有关待更新区域的信息。
- 执行 SFWd 命令,通过 PD 控制器将补丁捆绑包数据刷写到外部 EEPROM。补丁捆绑包数据分为多个数据页,每页有 64 字节的数据。
- 在发送补丁捆绑包数据后执行 SFWs 或 SFWu 命令,以便完成整个 EEPROM 更新操作。如果需要安全刷写,请使用 SFWs 来写入签名数据和密钥数据(总共 64 字节)。否则,使用 SFWu 来结束 EEPROM 更新。如果这是第一次执行 EEPROM 固件更新,则这两条命令都会将区域标头交换到另一个未更新的区域。