ZHCAEM6 October 2024 TPS25751 , TPS26750
在引导时,PD 控制器将首先从低区中的地址 LowRegionStart 和 LowAppConfigOffset 处读取 Header_ID。如果在读取低区 Header_ID 时出现任何错误,则 PD 控制器将从高区中的地址 HighRegionStart 和 HighAppConfigOffset 处读取 Header_ID。如果在读取高区 Header_ID 时出现任何错误,PD 控制器将返回并再次尝试低区。PD 控制器只会进行两次尝试,然后中止 EEPROM 加载过程。
如果 PD 控制器在低区中读取到正确的 Header_ID(预期为 0xACE0_0001),那么它将开始从低区读取补丁捆绑包。如果在读取补丁捆绑包时出现 CRC 错误,PD 控制器不会尝试从高区读取。如果 PD 控制器在高区中读取到正确的 Header_ID,那么它将开始从高区读取补丁捆绑包。如果在读取补丁捆绑包时出现 CRC 错误,PD 控制器会尝试从低区读取。但是,PD 控制器不会对任何区域进行超过两次的尝试。
因此,当更新 EEPROM 的其中一个区域时,在将区域起点指向该区域之前验证该区域中的新补丁捆绑包至关重要。
如果 EEPROM 加载过程中止,则 PD 控制器将相应地更新 BOOT_STATUS 寄存器并使 INT_EVENTx.ReadyForPatch 中断生效。然后,它将无限期等待主机通过 I2Cc 端口加载补丁或发出 GAID 4CC 命令以重新启动 PD 控制器。不存在 EEPROM 时,也会出现这种情况。
图 2-1 展示了 EEPROM 的存储器映射以及指针和偏移量所在的位置,其中假设 EEPROM 最初已在两个区域中写入了相同的补丁捆绑包。PD 控制器在地址 LowRegionStart 和 LowAppConfigOffset 处查找低区的 Header_ID,并在地址 HighRegionStart 和 HighAppConfigOffset 处查找高区的 Header_ID。
图 2-1 EEPROM 存储器映射