Slim Bootloader:專爲物聯網應用量身定製

由於物聯網設備存儲空間有限,成本要求嚴苛,因此Bootloader需要滿足佔用空間小、功能安全、極速啟動等需求。英特爾Slim Bootloader 就是專為物聯網應用案例量身定製,是一款開源的啟動固件解決方案,當系統上電時負責初始化系統的核心硬件組件,然後加載和啟動所需要的操作系統。

從構建之初,Slim Bootloader就考慮了安全性、輕量級和高度優化,可以利用EDK II框架中的強大工具和庫,可以根據系統的特殊需求進行隔離、配置和優化,從而達到優異的啟動性能,並最大限度地減少固件所佔用的空間。同時具有模塊化、可擴展設計的優點,根據源版本實現產品質量參考,BSD許可證開源,實際產品可能會根據不同的許可證發佈。

Intel物聯網部門 Bootloader 的架構原則是通過簡單靈活的架構實現快速廣泛的採用,並利用內部和外部開發社區,以安全為基礎進行設計和開發。

在設計中,Slim Bootloader具有幾大優勢:

簡單快速,線性執行流程實現可預測性,通過FSP API將複雜的芯片初始化代碼進行抽象,包括TempRamInit, FspMemoryInit, FspTempRamExit, FspSiliconInit, NotifyPhase;

具有靈活性,將初始化代碼分成具有標準化接口的模塊化階段:– Stage1A (SRAM/Flash) => Stage1B (Flash/CAR) => Stage2 (MEM),且不同的Payload用於引導不同的OS或應用程序;

可移植性,核心代碼高度模塊化,通過提供不同的靜態庫,不同的開發板/芯片可以用過hook函數實現平臺相關的初始化;配置(內置或外置)支持多種開發板;

利用經過驗證的代碼,FSP二進制文件,以及已被驗證的BIOS中的平臺庫(例如:GPIO init);

編譯框架,支持多種OS(Windows 和 Linux)和多種工具鏈;

安全性,通過Intel®BootGuard實現基於硬件的啟動完整性保護的安全啟動,支持verified boot和Measured boot。

下面針對初始化階段和啟動階段分別講述Slim Bootloader的優勢:

初始化階段

Slim Bootloader:专为物联网应用量身定制

高級架構

如上圖所示,系統的初始化階段,電路板和芯片初始化,包括資源分配,GPIO、ACPI等。Payload階段包括通用媒介驅動、自定義功能、特定的OS加載協議等。其中*OS loader是默認Payload,也支持使用其他的payload。

啟動階段:

啟動階段

如圖所示,啟動階段包括第1A階段、第1B階段、第2階段、有效負載階段。在第1A階段,通過彙編代碼重置矢量階段,進行基本初始化,包括設置臨時存儲器、調試輸出;在第1B階段,進行內存初始化,加載配置數據;在第2階段,進行PostMemory,芯片初始化、ACPI,PCI枚舉等;OsLoader / FWU 有效負載包括操作系統啟動邏輯和媒體驅動程序。

Slim Bootloader可以利用EDK2構建基礎架構,支持Windows和Linux環境,支持多種平臺,支持多個目標(D / R);必備工具包括VisualStudio(Windows)、GCC工具鏈(Linux)、NAMM、Python、iASL、OpenSSL;由pythonBuildLoader.py構建qemu,圖片存放於Slimbootloader.bin中。

另外,Payload提供靈活的基礎架構來擴展功能,英特爾SlimBootloader執行基礎硬件初始化;有效負載執行特定的加載/引導。可以看出,Payload是一個模塊化組件,能夠輕鬆更改默認有效負載,有效負載可以高度定製,以提供所需的確切功能;Payload可以是通用引導加載程序或特殊用途的特殊應用程序。


分享到:


相關文章: