ZHCAEM6 October   2024 TPS25751 , TPS26750

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2EEPROM 引导流程
    1. 2.1 引导过程
    2. 2.2 更新 EEPROM 映像
    3. 2.3 命令
    4. 2.4 EEPROM 更新示例
  6. 3源代码示例
    1. 3.1 UpdateRegionOfEeprom()
    2. 3.2 UpdateRegionOfEeprom_Step1
    3. 3.3 UpdateRegionOfEeprom_Step2()
    4. 3.4 UpdatingRegionOfEeprom_Step3()
    5. 3.5 UpdatingRegionOfEeprom_Step4()
    6. 3.6 WriteRegionPointer()
  7. 4从 EEPROM 故障中恢复
  8. 5结语
  9. 6参考资料

EEPROM 更新示例

在以下示例中,假设 EEPROM 的初始状态是低区和高区都具有相同的补丁捆绑包。PD 控制器从低区进行引导。图 2-6 展示了针对该初始条件的 EEPROM 存储器映射。

 EEPROM 的初始状态图 2-6 EEPROM 的初始状态

当主机必须更新 PD 控制器用于引导的补丁捆绑包时,首先会擦除高区指针,这样一来,如果在将新的补丁捆绑包写入高区时出现中断,可以保证 PD 控制器不会尝试加载这个补丁捆绑包。具体而言,会执行图 2-3 中的 UpdateRegionOfEeprom(1) 函数的步骤 1,图 2-7 展示了成功擦除高区指针后的存储器映射。如果在此状态下引导,则会从低区加载补丁捆绑包(版本 1)。

 执行 UpdateRegionOfEeprom(1) 步骤 1 之后的 EEPROM 状态图 2-7 执行 UpdateRegionOfEeprom(1) 步骤 1 之后的 EEPROM 状态

接下来,主机将新的补丁捆绑包(版本 2)写入高区。具体而言,会执行图 2-3 中的 UpdateRegionOfEeprom(1) 函数的步骤 2,图 2-8 展示了执行此步骤后的存储器映射。请注意,如果 PD 控制器使用此状态下的 EEPROM 进行引导,则仍会从低区加载补丁捆绑包(版本 1)。

 执行 UpdateRegionOfEeprom(1) 步骤 2 之后的 EEPROM 状态图 2-8 执行 UpdateRegionOfEeprom(1) 步骤 2 之后的 EEPROM 状态

接下来,主机使用 FLvy 命令验证 EEPROM 高区的内容。如果成功,则主机将 0x4400 写入到地址为 0x0400 的 HighRegionStart。此过程发生于图 2-3 中的 UpdateRegionOfEeprom(1) 的步骤 3,图 2-9 展示了执行此步骤后的存储器映射。如果 PD 控制器使用此状态下的 EEPROM 进行重新启动,则仍会先尝试从低区进行引导。

 执行 UpdateRegionOfEeprom(1) 步骤 3 之后的 EEPROM 状态图 2-9 执行 UpdateRegionOfEeprom(1) 步骤 3 之后的 EEPROM 状态

最后一步是擦除 LowRegionStart 值,以便 PD 控制器从高区引导。主机可以使用图 2-3 中所示的 UpdateRegionOfEeprom(1) 步骤 4 中提到的 WriteRegionPointer() 功能。图 2-10 展示了步骤 4 完成后的存储器映射。因为 LowRegionStart 现在为 0,所以低区的内容对 PD 控制器的引导方式没有影响。

 执行 UpdateRegionOfEeprom(1) 步骤 4 之后的 EEPROM 状态图 2-10 执行 UpdateRegionOfEeprom(1) 步骤 4 之后的 EEPROM 状态

下次主机须更新 EEPROM 映像时,它会执行 UpdateRegionOfEeprom(0),该过程以类似的方式进行。主机可以选择使用刚刚写入高区的相同新补丁捆绑包立即执行 UpdateRegionOfEeprom(0)。