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