《電子技術(shù)應用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > Slim Bootloader:專為物聯(lián)網(wǎng)應用量身定制

Slim Bootloader:專為物聯(lián)網(wǎng)應用量身定制

2018-11-06

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

  從構(gòu)建之初,Slim Bootloader就考慮了安全性、輕量級和高度優(yōu)化,可以利用EDK II框架中的強大工具和庫,可以根據(jù)系統(tǒng)的特殊需求進行隔離、配置和優(yōu)化,從而達到優(yōu)異的啟動性能,并最大限度地減少固件所占用的空間。同時具有模塊化、可擴展設(shè)計的優(yōu)點,根據(jù)源版本實現(xiàn)產(chǎn)品質(zhì)量參考,BSD許可證開源,實際產(chǎn)品可能會根據(jù)不同的許可證發(fā)布。

  Intel物聯(lián)網(wǎng)部門 Bootloader 的架構(gòu)原則是通過簡單靈活的架構(gòu)實現(xiàn)快速廣泛的采用,并利用內(nèi)部和外部開發(fā)社區(qū),以安全為基礎(chǔ)進行設(shè)計和開發(fā)。

  在設(shè)計中,Slim Bootloader具有幾大優(yōu)勢:

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

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

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

  利用經(jīng)過驗證的代碼,F(xiàn)SP二進制文件,以及已被驗證的BIOS中的平臺庫(例如:GPIO init);

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

  安全性,通過Intel?BootGuard實現(xiàn)基于硬件的啟動完整性保護的安全啟動,支持verified boot和Measured boot。

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

  初始化階段

5bdffd9d72b9d-thumb.png

  高級架構(gòu)

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

  啟動階段:

5bdffd9d42fa5-thumb.png

  啟動階段

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

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

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


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:[email protected]