armv9的ATF启动流程如下:
处理器复位后,先运行ROM中的代码,初始化系统时钟和内存控制器等基础设施。
ROM中的代码会加载BL1(Boot Loader Stage 1)程序到SRAM,并跳转到BL1的入口点。
BL1会初始化外设、DRAM等系统资源,并将控制权转移到BL2(Boot Loader Stage 2)。
BL2会执行一系列检查和验证过程,例如验证CPU ID、校验Firmware Image Package (FIP) 等。如果发现错误,则停止启动过程;否则进入下一步。
BL2会加载并解析FIP中的内容,其中包括BL31和其他组件。BL31是Secure Monitor,用于管理安全状态和处理异常情况。
如果需要配置TrustZone,在此阶段进行配置操作,并将控制权转移到BL31。
BL31负责完成各种安全任务,例如初始化TrustZone、设置安全策略、验证TEE等。最终将控制权传递给BL32或者OS Kernel。
如果是BL32,则为TEE(Trusted Execution Environment),负责运行安全应用程序等;否则为OS Kernel,开始正常启动操作系统。




