0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ATF里都包括哪些东西呢?

Linux阅码场 来源:代码改变世界ctw ATF 作者:代码改变世界ctw 2022-06-08 09:56 次阅读

作者简介

baron,九年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计和开发。是国内较早一批做TEE的,对商用TEE、开源TEE研究也比较深入,对未来的安全架构/安全趋势也有着明确的看法...

1、什么是ATF

首先什么是TF-A(ATF)?ATF就是一个固件, 一段代码,一个为armv7-A/armv8-A/armv9-A提供的参考实现代码。(注意,这只是参考实现,你也可以不用ATF,用自己写的一个固件。)

b06f37a4-e6c0-11ec-ba43-dac502259ad0.png

2、那么ATF里都包括哪些东西呢?

最初的功能很简单:

cpu_context的保存和恢复,即: 双系统的切换

电源管理、PSCI等

但是随着技术的发展,功能也越来越多,越来越复杂,以下列举了当前的部分功能:

安全世界的初始化,例如异常向量表、一些控制寄存器和中断寄存器

CPU reset和power down的时序。包括Arm DynamIQ cpu的支持

标准的system IP的驱动,例如Generic Interrupt Controller (GIC), Cache Coherent Interconnect (CCI), Cache Coherent Network (CCN), Network Interconnect (NIC) and TrustZone Controller (TZC).

一种通用的SCMI驱动程序, 适用于电源控制接口,例如ARM SYSTEM Control Processor(SCP)

smc处理,using an EL3 runtime services framework

PSCI库的支持,用于CPU/Cluster/system的电源管理,这个库集成到了aarch64 el3的runtime中,也适用于aarch32 el3

secure monitor代码,用于world切换、中断routing

SPDs for the OP-TEE Secure OS, NVIDIA Trusted Little Kernel and Trusty Secure OS

SecureBoot实现

预集成TBB与Arm CryptoCell产品,利用其硬件Root的信任和加密加速服务。

3、ATF定义的启动模型

ATF将镜像进行了划分,BL1 BL2属于启动引导镜像,BL3属于runtime镜像。BL3又分为BL31 BL32 BL33对应的分别是ATF Runtime、REE Runtime、TEE Runtime。

(注:本文是Quick Start,不深入解释这些概念,请自行理解:BL1 BL2 BL31 BL32 BL33的概念、EL3 S-EL1 NS-EL1的概念)

b0ae77de-e6c0-11ec-ba43-dac502259ad0.png

4、ATF的rt_svc介绍(runtime service)

b0de612e-e6c0-11ec-ba43-dac502259ad0.png

4.1、SPD(opteed)举例

例如负责双系统切换的SPD,它是 OEN_TOS的RT-Service,它负责启动TEE和双系统切换。

b10927a6-e6c0-11ec-ba43-dac502259ad0.png

补充双系统切换时寄存器的保存和恢复模型( switchcpu_context模型)

b12ec0ba-e6c0-11ec-ba43-dac502259ad0.png

5、ATF参与的多系统交互模型

特权等级、security State之间的交互模型,ATF是一段跑在EL3特权等级的代码。如下是一个特权等级、security State之间的切换模型,可以看出所有的交互和跳转都是通过异常向量表进行的。

b15ad8d0-e6c0-11ec-ba43-dac502259ad0.png

异常特权等级之间的跳转模型都是通过同步异常或异步异常进行的:

b178a37e-e6c0-11ec-ba43-dac502259ad0.png

进入ATF的方式触发异常:同步异常(不限于smc)、异步异常(irq,fiq,serror)

➨ 如果是同步异常,那么会判断是不是smc调用触发的同步异常,如果是则进入跳转ATF中异常向量表中的同步异常程序smchandler64或smchandler32 在该程序中,解析smc id,来选择跳转到具体哪一个rt-svc(runtime service)

➨ 如果是异步异常,那么一定是触发了irq或fiq或serror中断等,此时进入跳转ATF中异常向量表中的异步异常程序,进而跳转到响应的中断处理函数。

6、ATF如何处理业务逻辑的呢

那么ATF里都有哪些业务逻辑呢,如何区分和处理的呢?

当有异常进来后,进行一些判断,如您是同步异常还是异步异常? 如果是异步异常,那么你是 dosomething 还是 转发中断 ?如果是同步异常,那么你是 dosomething,还是执行 RT-Service?

b1c34230-e6c0-11ec-ba43-dac502259ad0.png

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动程序
    +关注

    关注

    19

    文章

    770

    浏览量

    47277
  • 代码
    +关注

    关注

    30

    文章

    4557

    浏览量

    66866

原文标题:ATF快速扫盲(Quick Start)

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问core2的程序可以直接使用core1的全局变量吗?

    如题,core2的程序可以直接使用core1的全局变量吗?就是不同核之前可以直接通信吗?是否还需要配置一些东西才能实现核间通信?
    发表于 02-20 08:05

    请问GTM模块的ATOM和TOM有什么区别

    如题,GTM模块的ATOM和TOM有什么区别
    发表于 02-06 06:35

    USB字符串描述符里面的序列号字符串到底是什么东西

    在设备描述符里面,有一个表示序列号字符串描述符的编号,请问这个序列号字符串的描述符是什么东西? 厂商字符串和设备字符串都能理解,而且在电脑的“设备与打印机”里面找到了。但请问这个序列号字符串有什么用
    发表于 01-24 08:06

    nuc505在IAR和MDK的环境下只能在SRAM进行仿真,无法下载到flash怎么解决?

    使用nuc505的板子在IAR和MDK的环境下只能在SRAM进行仿真,无法下载到flash,貌似是你们提供的505的flashloader存在问题,可以用ICP tool下载!
    发表于 01-17 06:14

    怎样才能在multisim添加ad7606的元器件来仿真

    在做一个采集电路,选用了ad7606,官网上只有ibis模型,貌似只有spice模型才能被添加到multisim去,怎样才能在multisim添加ad7606的元器件来仿真
    发表于 12-13 06:23

    电机振动都要查哪些东西

    请教个问题 ,电机振动都要查哪些东西? 一台高压10KV 450KW高压电机,送修好几次了,还是振动, 负载是水泵。
    发表于 12-12 06:42

    非变频电机配变频器,要注意哪些东西

    非变频电机配变频器,要注意哪些东西? 另外环境温度与机使用有什么关系? 电机温升与绝缘有什么样的关系??
    发表于 12-11 07:44

    ATF中bl32的启动方法

    ATF中bl32的启动 bl31中的runtime_svc_init函数会初始化OP-TEE对应的服务,通过调用该服务项的初始化函数来完成OP-TEE的启动。对于OP-TEE的服务项会通
    的头像 发表于 11-07 16:32 243次阅读
    <b class='flag-5'>ATF</b>中bl32的启动方法

    ATF的启动过程介绍

    ATF的启动过程根据ARMv8的运行模式(AArch32/AArch64)会有所不同,但基本一致。 在AArch32中是不会去加载bl31而是将EL3或者Monitor模式的运行代码保存在bl32
    的头像 发表于 11-07 15:48 496次阅读
    <b class='flag-5'>ATF</b>的启动过程介绍

    ATF启动流程介绍

    一、BL32(TEE OS)的准备 ATF启动流程 ATF流程 ATF冷启动实现分为5个步骤: • BL1 - AP Trusted ROM,一般为BootRom。 • BL2 - Trusted
    的头像 发表于 11-02 17:51 580次阅读
    <b class='flag-5'>ATF</b>启动流程介绍

    自研的regression脚本yrun都有哪些东西呢?

    yrun是处芯积律自研的regression脚本,yrun都有哪些东西呢?
    的头像 发表于 10-12 09:26 832次阅读
    自研的regression脚本yrun都有哪些<b class='flag-5'>东西</b>呢?

    官方sdk编译选项有没有支持非对齐访问的参数?

    官方sdk编译选项有没有支持非对齐访问的参数?
    发表于 09-14 08:11

    ATF-541M4低噪声增强模式伪HEMT微型无引线封装产品简介

    电子发烧友网站提供《ATF-541M4低噪声增强模式伪HEMT微型无引线封装产品简介.pdf》资料免费下载
    发表于 07-20 10:17 0次下载
    <b class='flag-5'>ATF</b>-541M4低噪声增强模式伪HEMT微型无引线封装产品简介

    开发板的CRC校验例程是什么意思

    之前做CRC校验,是有个一检验函数,两边用一个校验函数就可以了。 开发板的CRC校验例程是什么意思
    发表于 06-27 07:49

    ATF源代码中找不到关于make FIP_ QSPI_ OFFSET, FIP_ MMC_ OFFSET, FIP_ MEMORY_ OFFSET的信息是为什么

    ATF源代码中,我找不到任何关于make FIP_ QSPI_ OFFSET, FIP_ MMC_ OFFSET, FIP_ MEMORY_ OFFSET的信息,你能告诉我为什么吗?谢谢。
    发表于 05-19 10:15