本文簡單總結了一下aarch64的啟動流程,内容簡單。
i.MX8M系列bootloader鏡像flash.bin所需的檔案:
flash.bin的布局
i.mx8m系列的啟動流程如下,fit image被燒錄進系統,系統上電時,ROM code首先加載的hdmi/dp的固件,然後加載并驗證SPL 和 DDR 固件,這些images在内部 RAM 中執行并負責初始化基本功能,例如 DDR、UART、PMIC 和時鐘。
一旦 DDR 可用,SPL 代碼就會将FIT 中的images(ATF,TEE)到它們的特定執行位址,HAB API 會驗證 U-Boot,ATF 和 OPTEE(可選項)。
SPL首先會跳轉到ATF固件,驗證成功後ATF會将控制權移交給optee,一旦optee初始化完成,optee就會切換到非安全世界啟動uboot,再啟動核心。而optee會繼續駐留在記憶體中,為linux核心提供安全相關的服務。
基本分為EL3-EL0,從高level轉低level通過ERET指令,從低level轉高level通過exception方式。
各個級别說明:
Non-secure EL0: Unprivileged applications, such as applications downloaded from an App Store.
Non-secure EL1: Rich OS kernels from, for example, Linux, Microsoft Windows, iOS.
Non-secure EL2: Hypervisors, from vendors such as Citrix, VMWare, or OK-Labs.
Secure EL0: Trusted OS applications.
Secure EL1: Trusted OS kernels from Trusted OS vendors such as Trustonic.
Secure EL3: Secure Monitor, executing secure platform firmware provided by Silicon vendors and OEMs ARM Trusted Firmware
aarch64的啟動過程基本分為BL1->BL2->(BL31/BL32/BL33),i.MX8M中的流程為:BL1(ROM code)->BL2(SPL)->BL31(ATF)->BL33(uboot),optee是BL32。
