全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

TF-A启动流程详解

时间:2023-09-11 16:59

人气:

作者:admin

标签: 代码  芯片  ROM 

导读:bl 1 bl 1 是 TF-A 的第一个启动阶段,芯片复位以后就会运行 bl1 镜像,TF-A 提供了 bl1 源码。但是,实际上 bl1一般是半导体厂商自己编写的内部 Boot ROM 代码,并没有使用 TF-A 提供的 bl1 镜像...

bl 1

bl 1 是 TF-A 的第一个启动阶段,芯片复位以后就会运行 bl1 镜像,TF-A 提供了 bl1 源码。但是,实际上 bl1一般是半导体厂商自己编写的内部 Boot ROM 代码,并没有使用 TF-A 提供的 bl1 镜像。因此 bl1部分的实现就千差万别,不同的半导体厂商有不同的实现方法。

一般 bl1 要做的就是初始化 CPU,如果芯片支持不同的启动设备,那么还需要初始化不同的启动设置,比如 NAND、EMMC、SDUSB或串口等。然后根据 BOOT 引脚的高低电平来 判断当前所选择的启动设备,从对应的启动设备中加载 bl2 镜像,并放到对应的内存中,最后跳转到 bl2镜像并运行。

bl 2

bl 2 会进一步的初始化芯片,比如初始化 DDR、MMU、串口等。bl2 会将剩下三个阶段 (bl31、bl32 和bl33)对应的镜像加载到指定的内存中,最后根据实际情况来启动剩下三个阶段的镜像。

bl 31

在 AArch64 中,bl31 主要是 EL3 的 Runtime 固件。

bl 32

bl32 一般为安全系统(TEE OS)固件,比如 OP-TEE。TF-A 为 AArch32 提供了 EL3 的 Runtime 软件,这个Runtime 软件就是 bl32 固件,sp_min 就是这个 Runtime 软件。大家可以打开 TF-A 的 bl32
源码文件夹,其下就有一个名为“sp_min”的子文件夹,这个就是 bl32 的 sp_min 源码,如图所示:

图片

bl32 提供运行时安全服务,在 TF-A 中默认使用 sp_min。sp_min 是一个最小的 AArch32 安全负载(Secure Payload),整合了 PSCI 库以及 AArch32 的 EL3 运行时软件。sp_min 可以替代可信系统(TEE OS)或者可信执行环境(TEE),比如 OP-TEE。用户可以自行选择 bl32 使用哪个软件包。

bl32 充当安全监控(secure monitor),因此它向非安全系统(non-secure os,比如 linux)提供了一些安全服务。非安全的应用软件可以通过安全监控调用(secure monitor calls)来使用这些安全服务,这些代码支持标准的服务调用,比如 PSCI。

bl 33

bl33 就是 Normal World 下的镜像文件,比如 uboot。

至此,我们对 TF-A 的基本启动流程有了一个大概的了解,我们知道了 TF-A 分为多个阶段,不同的阶段其工作内容不同。但是,在实际的开发中并不一定会用到 TF-A 中所有启动阶段。

TF-A 是用于完成安全启动的,OP-TEE 是 TEE OS,如果使用 OP-TEE 的话它会和 linux 内核同时运行,OP-TEE负责可信应用,linux 就是普通的应用程序。

TF-A 分为了不同阶段:bl1、bl2、bl31、bl32 和 bl33,这个主要是面向 AArch64 的,对于 AArch32 而言只有 4个阶段:

bl1:第 1 个阶段,一般为芯片内部 ROM 代码

bl2:第 2 个阶段,可信启动固件

bl32:EL3 运行时(Runtime)软件

bl33:非安全固件,比如 uboot

其中 bl1、bl2 和 bl32 都属于 TF-A 的一部分(如果你使用 TF-A 提供的 bl1 的话)。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信