ZHCAEM6 October 2024 TPS25751 , TPS26750
在引導(dǎo)時,PD 控制器將首先從低區(qū)中的地址 LowRegionStart 和 LowAppConfigOffset 處讀取 Header_ID。如果在讀取低區(qū) Header_ID 時出現(xiàn)任何錯誤,則 PD 控制器將從高區(qū)中的地址 HighRegionStart 和 HighAppConfigOffset 處讀取 Header_ID。如果在讀取高區(qū) Header_ID 時出現(xiàn)任何錯誤,PD 控制器將返回并再次嘗試低區(qū)。PD 控制器只會進(jìn)行兩次嘗試,然后中止 EEPROM 加載過程。
如果 PD 控制器在低區(qū)中讀取到正確的 Header_ID(預(yù)期為 0xACE0_0001),那么它將開始從低區(qū)讀取補丁捆綁包。如果在讀取補丁捆綁包時出現(xiàn) CRC 錯誤,PD 控制器不會嘗試從高區(qū)讀取。如果 PD 控制器在高區(qū)中讀取到正確的 Header_ID,那么它將開始從高區(qū)讀取補丁捆綁包。如果在讀取補丁捆綁包時出現(xiàn) CRC 錯誤,PD 控制器會嘗試從低區(qū)讀取。但是,PD 控制器不會對任何區(qū)域進(jìn)行超過兩次的嘗試。
因此,當(dāng)更新 EEPROM 的其中一個區(qū)域時,在將區(qū)域起點指向該區(qū)域之前驗證該區(qū)域中的新補丁捆綁包至關(guān)重要。
如果 EEPROM 加載過程中止,則 PD 控制器將相應(yīng)地更新 BOOT_STATUS 寄存器并使 INT_EVENTx.ReadyForPatch 中斷生效。然后,它將無限期等待主機通過 I2Cc 端口加載補丁或發(fā)出 GAID 4CC 命令以重新啟動 PD 控制器。不存在 EEPROM 時,也會出現(xiàn)這種情況。
圖 2-1 展示了 EEPROM 的存儲器映射以及指針和偏移量所在的位置,其中假設(shè) EEPROM 最初已在兩個區(qū)域中寫入了相同的補丁捆綁包。PD 控制器在地址 LowRegionStart 和 LowAppConfigOffset 處查找低區(qū)的 Header_ID,并在地址 HighRegionStart 和 HighAppConfigOffset 處查找高區(qū)的 Header_ID。