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

    文章

    817

    浏览量

    47902
  • 代码
    +关注

    关注

    30

    文章

    4719

    浏览量

    68211

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

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

收藏 人收藏

    评论

    相关推荐

    INA111BP的Offset Voltage的TYP栏“+-100+-500/G”(uV)表示什么意思

    数据手册“Offset Voltage”不太会看。例如 INA111BP的 Offset Voltage的TYP栏“+-100+-500/G”(uV)表示什么意思?望专家前辈指教指教哦
    发表于 09-23 07:02

    INA118U的封装是什么?另外红色框的是什么东西

    我想问问INA118U的封装是什么?另外红色框的是什么东西
    发表于 09-20 13:47

    在ESP32使用esp-idf框架该如何获取系统上电时间

    ESP8266面可以通过 esp_get_time()函数 获取系统上电时间, 在 ESP32 使用 esp-idf 框架 该如何获取系统上电时间? 谢谢
    发表于 06-19 07:13

    电源模块是什么东西

    电源模块是什么东西 电源模块是一种电子设备,用于将输入的电能转换为所需的电压和电流,以满足各种电子设备和系统的需求。电源模块的设计和制造涉及到多个领域,包括电力电子、控制理论、热设计、电磁兼容性等
    的头像 发表于 06-10 16:20 1398次阅读

    如何烧录程序进入自己画的CYW20829板

    Hi,请问如何烧录程序进入自己画的CYW20829板?可以使用20829EVK的J11来实现么?或者有没有其它的烧录工具
    发表于 05-28 07:01

    智慧教室建设内容包括哪些?探索教育的未来

    的重要手段。那么,广凌智慧教室建设内容包括哪些方面?本文将对此进行详细探讨。广凌智慧教室建设内容包括高效的信息技术设施。这是智慧教室最基本的配置,
    的头像 发表于 02-23 18:41 398次阅读
    智慧教室建设内容<b class='flag-5'>包括</b>哪些?探索教育的未来

    请问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

    写好的C算法模块怎么样封装成SigmaStudio能用的图形模块

    请教下写好的C的算法模块,怎么样封装成SigmaStudio能用的图形模块?哪里有关于这个的方法说明文档?谢谢!
    发表于 11-30 06:42

    什么是差分输出方式?什么东西会影响差分输出幅值

    什么是差分输出方式?什么东西会影响差分输出幅值? 差分输出方式是一种电路设计技术,常用于提取信号的变化情况,以及对信号进行放大和处理。它可以将输入信号通过差动放大器进行放大,然后输出两个相位
    的头像 发表于 11-20 16:36 2107次阅读