ZHCAEM6 October 2024 TPS25751 , TPS26750
在以下示例中,假设 EEPROM 的初始状态是低区和高区都具有相同的补丁捆绑包。PD 控制器从低区进行引导。图 2-6 展示了针对该初始条件的 EEPROM 存储器映射。
当主机必须更新 PD 控制器用于引导的补丁捆绑包时,首先会擦除高区指针,这样一来,如果在将新的补丁捆绑包写入高区时出现中断,可以保证 PD 控制器不会尝试加载这个补丁捆绑包。具体而言,会执行图 2-3 中的 UpdateRegionOfEeprom(1) 函数的步骤 1,图 2-7 展示了成功擦除高区指针后的存储器映射。如果在此状态下引导,则会从低区加载补丁捆绑包(版本 1)。
接下来,主机将新的补丁捆绑包(版本 2)写入高区。具体而言,会执行图 2-3 中的 UpdateRegionOfEeprom(1) 函数的步骤 2,图 2-8 展示了执行此步骤后的存储器映射。请注意,如果 PD 控制器使用此状态下的 EEPROM 进行引导,则仍会从低区加载补丁捆绑包(版本 1)。
接下来,主机使用 FLvy 命令验证 EEPROM 高区的内容。如果成功,则主机将 0x4400 写入到地址为 0x0400 的 HighRegionStart。此过程发生于图 2-3 中的 UpdateRegionOfEeprom(1) 的步骤 3,图 2-9 展示了执行此步骤后的存储器映射。如果 PD 控制器使用此状态下的 EEPROM 进行重新启动,则仍会先尝试从低区进行引导。
最后一步是擦除 LowRegionStart 值,以便 PD 控制器从高区引导。主机可以使用图 2-3 中所示的 UpdateRegionOfEeprom(1) 步骤 4 中提到的 WriteRegionPointer() 功能。图 2-10 展示了步骤 4 完成后的存储器映射。因为 LowRegionStart 现在为 0,所以低区的内容对 PD 控制器的引导方式没有影响。
下次主机须更新 EEPROM 映像时,它会执行 UpdateRegionOfEeprom(0),该过程以类似的方式进行。主机可以选择使用刚刚写入高区的相同新补丁捆绑包立即执行 UpdateRegionOfEeprom(0)。