ZHCAEM6 October 2024 TPS25751 , TPS26750
在以下示例中,假設(shè) EEPROM 的初始狀態(tài)是低區(qū)和高區(qū)都具有相同的補丁捆綁包。PD 控制器從低區(qū)進(jìn)行引導(dǎo)。圖 2-6 展示了針對該初始條件的 EEPROM 存儲器映射。
當(dāng)主機必須更新 PD 控制器用于引導(dǎo)的補丁捆綁包時,首先會擦除高區(qū)指針,這樣一來,如果在將新的補丁捆綁包寫入高區(qū)時出現(xiàn)中斷,可以保證 PD 控制器不會嘗試加載這個補丁捆綁包。具體而言,會執(zhí)行圖 2-3 中的 UpdateRegionOfEeprom(1) 函數(shù)的步驟 1,圖 2-7 展示了成功擦除高區(qū)指針后的存儲器映射。如果在此狀態(tài)下引導(dǎo),則會從低區(qū)加載補丁捆綁包(版本 1)。
接下來,主機將新的補丁捆綁包(版本 2)寫入高區(qū)。具體而言,會執(zhí)行圖 2-3 中的 UpdateRegionOfEeprom(1) 函數(shù)的步驟 2,圖 2-8 展示了執(zhí)行此步驟后的存儲器映射。請注意,如果 PD 控制器使用此狀態(tài)下的 EEPROM 進(jìn)行引導(dǎo),則仍會從低區(qū)加載補丁捆綁包(版本 1)。
接下來,主機使用 FLvy 命令驗證 EEPROM 高區(qū)的內(nèi)容。如果成功,則主機將 0x4400 寫入到地址為 0x0400 的 HighRegionStart。此過程發(fā)生于圖 2-3 中的 UpdateRegionOfEeprom(1) 的步驟 3,圖 2-9 展示了執(zhí)行此步驟后的存儲器映射。如果 PD 控制器使用此狀態(tài)下的 EEPROM 進(jìn)行重新啟動,則仍會先嘗試從低區(qū)進(jìn)行引導(dǎo)。
最后一步是擦除 LowRegionStart 值,以便 PD 控制器從高區(qū)引導(dǎo)。主機可以使用圖 2-3 中所示的 UpdateRegionOfEeprom(1) 步驟 4 中提到的 WriteRegionPointer() 功能。圖 2-10 展示了步驟 4 完成后的存儲器映射。因為 LowRegionStart 現(xiàn)在為 0,所以低區(qū)的內(nèi)容對 PD 控制器的引導(dǎo)方式?jīng)]有影響。
下次主機須更新 EEPROM 映像時,它會執(zhí)行 UpdateRegionOfEeprom(0),該過程以類似的方式進(jìn)行。主機可以選擇使用剛剛寫入高區(qū)的相同新補丁捆綁包立即執(zhí)行 UpdateRegionOfEeprom(0)。