PEI Foundation
PEI Foundation是PEI階段的一個Image,與底層硬體有關的一層,專門處理和指令集相關的平台結構,包含了SEC以及PEI的一小片段。在SEC階段結束後,PEI最一開始的code是一段Platform-specific的Machine Code,這在Platfom移植上會有困難。因此,我們會盡量讓PEI Foundation的code越小越好,以減少移植上的困難。
PEI Foundation主要負責了4個項目:
- Dispatch PEIMs。
- Maintain Boot Mode。
- Initial Memory。
- Invoke DXE Loader。
PEI Foundation會建立一個所有PEIMs都可以看到的System Table叫PEI Service Table,這可能被定義為Function,Command或者是Capability Manifested。因為PEI階段直到最後面才有Memory可以使用,因此指向PEI的Pointer會傳進每一個PEIM的Entry Point以及PPI (PEIM To PEIM Interface)。
而PEI Foundation提供了下列7種的服務:
- PPI Service - PEIM To PEIM Interface是用來讓PEIM之間做溝通,這個Service會存放在Temporary-RAM中,主要提供了4種Function:InstallPpi (), ReInstallPpi (), LocatePpi () and NotifyPpi ()。
- Boot Mode Service - 管理系統的Boot mode,像S3, S5, Normal boot, Diagnostic等,主要提供了2種Function:GetBootMode () and SetBootMode ()。
- HOB Service - 建立一個HOD的資料結構,收集並傳給下一個DXE階段,主要提供了2種Function:GetHobList () and CreateHob ()。
- Firmware Volume Service - 在FFS (Firmware File System)中尋找PEIMs以及其他Firmware Files,主要提供了3種Function:FfsFindNextVolume (), FfsFindNextFile () and FfsFindSectionData ()。
- PEI Memory Service - 管理永久記憶體在初始化前後的操作,主要提供了5種Function:InstallPeiMemory (), AllocatePages (), AllocatePool (), CopyMem () and SetMem ()。
- Status Code Service - 提供Debug Error Code的Reporting服務,主要Function為:PeiReportStatusCode ()。
- Reset Service - 提供系統Cold Boot or Warm Boot的服務,主要Function為:PeiResetSystem ()。