進行移植前先看看ST官網的一些資料,瞭解晶片的工作方式:
STM32MP1 引導鏈概述
https://wiki.stmicroelectronics.cn/stm32mpu/wiki/STM32MP1_boot_chain_overview
啟動步驟如下
- BROM(BL1):晶片內部程式,根據BOOT PIN讀取對應啟動裝置裡的程式到內部SYSRAM執行,工作在在
Secure World
安全模式下。由於SYSRM很小,一般只用於載入First stage bootloader (FSBL)
。 - FSBL(BL2):第一階段bootloader,負責初始化時鐘樹和DDR,然後載入
Second stage bootloader (SSBL)
並跳到DDR執行。常見的FSBL有U-boot SPL,Trusted Firmware-A,它們的區別在於是否對SSBL韌體進行一些驗證再執行,也就是Secure Boot
. - SSBL(BL3):第二階段bootloader,如果不需要Secure Boot,則可以直接由U-boot SPL拉起U-Boot執行。在Secure Boot時分為下面幾步執行:
- BL31:TF-A(Trusted Firmware-A)初始化安全執行環境,並對BL32進行進行韌體安全驗證啟動。
- BL32:OP-TEE(Trusted Execution Environment 可信執行環境) 工作在安全模式下,使用
ARM TrustZone
硬體的安全隔離環境獨立執行,可為使用者空間程式提供安全服務互動。啟動完成後切換到Normal World
非安全模式,並啟動BL33。 - BL33:U-boot
- Kernel
這裡有一篇文章有詳細說明:
https://www.cnblogs.com/arnoldlu/p/14175126.html