ATF(ARM Trusted firmware)代码结构

代码结构

TF-A 代码在逻辑上分为前几节提到的三个引导加载程序阶段。代码也分为以下几类(在源代码中显示为目录):

  • 平台特定。架构特定代码的选择取决于平台。

  • 通用代码。这是平台和架构不可知的代码。

  • 图书馆代码。此代码包含所有其他代码常用的功能。PSCI 实现和其他 EL3 运行时框架作为库组件驻留。

  • 阶段特定。特定于引导阶段的代码。

  • 驱动程序。

  • 服务。EL3 运行时服务(例如:SPD)。特定的 SPD 服务驻留在services/spd目录中(例如services/spd/tspd)。

每个引导加载程序阶段都使用来自上述一个或多个类别的代码。基于上述,代码布局如下所示:

Directory    Used by BL1?    Used by BL2?    Used by BL31?
bl1          Yes             No              No
bl2          No              Yes             No
bl31         No              No              Yes
plat         Yes             Yes             Yes
drivers      Yes             No              Yes
common       Yes             Yes             Yes
lib          Yes             Yes             Yes
services     No              No              Yes

构建系统为每个引导加载程序阶段(其中 x = BL 阶段)提供了一个不可配置的构建选项 IMAGE_BLx。例如对于 BL1 , IMAGE_BL1 将由构建系统定义。这使 TF-A 能够仅为特定的引导加载程序阶段编译某些代码

所有汇编程序文件都有.S扩展名。每个引导阶段的链接器源文件的扩展名为.ld.S. 这些由 GCC 处理以创建扩展名为.ld.

FDT 提供硬件平台的描述,并在引导时由 Linux 内核使用。这些可以在fdts目录中找到。

参考


版权所有 (c) 2013-2020,Arm Limited 和贡献者。版权所有。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值