ATF(TF-A)
文章平均质量分 88
TODO
优惠券已抵扣
余额抵扣
还需支付
¥59.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
代码改变世界ctw
12年手机安全、汽车安全、芯片安全开发经验。擅长Trustzone/TEE/安全的设计与开发。作有《Armv8/Armv9架构从入门到精通》、《Trustzone/TEE/安全快速入门班》、《Secureboot从入门到精通 训练营》等课程。
展开
-
ATF架构开发精讲-专题目录
ATF原创 2023-04-01 10:30:59 · 239 阅读 · 0 评论 -
[ATF]-ATF的代码学习篇-一篇就够了
★★★ 个人博客导读首页—点击此处 ★★★.说明:在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位文章目录1、ATF里都有什么?2、ATF的编译3、ATF的启动4、进入ATF的和退出ATF方式(1)、进入ATF的方式(2)、退出ATF的方式5、ATF中向量表的介绍6、ATF中栈的设置7、ATF中寄存器的保存和恢复8、ATF的rt_svc介绍(runtime service)(1)、SMC Calling convention文档(2)、DECLARE_.原创 2020-10-29 23:10:11 · 9368 阅读 · 3 评论 -
5. System Design 5.7. CPU Reset
本文档介绍了用于处理 CPU 的框架的高级设计 在受信任固件 A (TF-A) 中重置。它还描述了平台如何 集成商可以在一定程度上根据系统配置定制此代码, 从而简化和优化启动流程。本文档应与文档结合使用,该文档提供了有关重置代码的更多实现详细信息。专门用于冷启动路径。原创 2024-07-25 19:31:49 · 569 阅读 · 0 评论 -
5. System Design 5.2. 身份验证框架和信任链
本文档旨在描述身份验证框架 在受信任固件 A (TF-A) 中实现。本文档介绍身份验证框架的内部详细信息,以及 可用于指定信任链的抽象机制。原创 2024-07-25 19:26:42 · 760 阅读 · 0 评论 -
5. System Design 5.9. Building FIP images with support for Trusted Board Boot
此构建的结果将是 bl1.bin、fip.bin 和 fwu_fip.bin二进制文件。FIP 和 FWU_FIP都将包含与 选定的信任链。使用 mbed TLS 源代码将影响 TF-A 的许可 使用此库生成的二进制文件。也可以在输出构建目录中找到这些证书。要构建 FWU_FIP,平台所需的任何 FWU 图像都必须在 命令行。构建和安装非安全镜像和SCP FWU镜像(NS_BL1U, NS_BL2U 和 SCP_BL2U) 不在本文档的讨论范围之内。文档,了解相应的内容 要使用的 mbed TLS 版本。原创 2024-07-25 19:33:05 · 46 阅读 · 0 评论 -
5. System Design 5.8. Trusted Board Boot
可信板启动 (TBB) 功能可防止恶意固件运行 在平台上,通过验证所有固件图像,包括 正常世界的引导加载程序。它通过使用建立信任链来实现这一点 公钥加密标准 (PKCS)。本文档介绍可信固件-A (TF-A) TBB 的设计,该规范, 手臂DEN0006D。它应与设计文档结合使用,该文档实现了 TBBR 的特定方面。原创 2024-07-25 19:32:34 · 64 阅读 · 0 评论 -
5. System Design 5.6. PSCI Power Domain Tree Structure
平台必须导出 和 API 才能启用通用 PSCI 代码 填充一棵树,用于描述中电源域的层次结构 系统。这种方法不灵活,因为对拓扑进行了更改 需要更改代码。对于平台来说,描述其电源域树会简单得多 在数据结构中。通用 PSCI 代码生成 MPIDR 以填充电源域 树。它还使用 MPIDR 在树中查找节点。假设 平台将使用与通用 PSCI 生成的完全相同的 MPIDR 代码不可缩放。MPIDR 的使用还限制了 电源域树中的级别设置为四个。因此,有必要将MPIDR的分配与MPIDRs的分配脱钩。原创 2024-07-25 19:31:10 · 41 阅读 · 0 评论 -
5. System Design 5.5. 中断管理框架
此框架负责管理路由到 EL3 的中断。它还 允许 EL3 软件配置中断路由行为。它的主要 目标是实现以下两个要求。原创 2024-07-25 19:29:31 · 40 阅读 · 0 评论 -
5. System Design 5.4.Firmware Design
可信固件 A (TF-A) 实现可信板启动的子集 需求 (TBBR) 平台设计文档 (PDD) 供 Arm 参考 平台。TBB 序列在平台通电并运行时开始 到它对正常运行的固件进行放手控制的阶段 DRAM中的世界。这是冷启动路径。TF-A 还将实现为运行时服务。PSCI 是接口 从普通软件到实现电源管理用例的固件 (例如,辅助 CPU 启动、热插拔和空闲)。正常世界的软件可以 通过 Arm SMC(安全监视器呼叫)指令访问 TF-A 运行时服务。SMC 指令必须按照 SMC 呼叫约定的规定使用 (原创 2024-07-25 19:28:52 · 58 阅读 · 0 评论 -
5. System Design 5.3.Arm CPU Specific Build Macros
本文档介绍了特定于 CPU 的各种构建选项 用于启用勘误解决方法和启用优化的操作框架 对于平台上的特定 CPU。原创 2024-07-25 19:27:36 · 36 阅读 · 0 评论 -
4.Components 4.24. Context Management Library
Arm TrustZone 架构有助于实现硬件强制隔离 在各种安全状态(安全/非安全/领域)下运行的软件。通用寄存器、大多数系统寄存器和矢量寄存器 不是每个世界的银行。当在安全状态之间移动时,它是 安全监控软件的责任 (BL31(AArch64) / BL32(Aarch32)) 在 TF-A 中,而不是硬件中,用于保存和恢复寄存器状态。有关详细信息,请参阅AArch64 的 Trustzone。原创 2024-07-25 19:23:29 · 44 阅读 · 0 评论 -
4.Components 4.23. DebugFS接口
可选的 DebugFS 接口可通过供应商特定的 EL3 服务进行访问。指 有关详细信息,请参阅组件文档。原创 2024-07-25 19:22:47 · 32 阅读 · 0 评论 -
4.Components 4.22. Vendor Specific EL3 Monitor Service Calls
本文档列举并描述了供应商特定的 EL3 监视器服务 调用。这些是 EL3 监视器供应商定义的服务调用。它们通过从异常执行的(“SMC 调用”)指令访问 低于EL3的水平。SMCTF-A 使用的特定于供应商的 EL3 监视器服务调用的源定义位于 头文件。表 1:显示特定于供应商的服务的不同版本以及每个版本所做的更改每个子服务都有自己的版本,为子服务版本分配一个 FID。当一个人应该更新顶级版本时,有一些基本规则。原创 2024-07-25 19:22:05 · 27 阅读 · 0 评论 -
4.Components 4.21. Granule Protection Tables Library
结构是表示物理地址空间的一种方式,并且 GPT 库可以使用的属性来初始化表。基本物理地址区域大小此内存区域的所需属性(映射类型、PAS 类型)请参见 中的类型。程序员应该为 API 提供一个包含结构的数组,然后库将检查所需的内存访问布局 有效性并创建表来实现它。pas_region_t`是公共类型,但建议使用宏 和 来填充 这些结构而不是手动进行,以降低未来的风险 兼容性问题。这些宏采用基本物理地址、区域大小、 和 PAS 类型作为参数来生成pas_region_t结构。原创 2024-07-25 19:21:30 · 30 阅读 · 0 评论 -
4.Components 4.20. RMM-EL3通信接口
本文档定义了 RMM 和 EL3 之间的通信接口。此接口包含两个部分:启动接口和运行时 接口。当 CPU 进入时,Boot Interface 定义了 EL3 和 RMM 之间的 ABI R-EL2 在启动后首次使用。冷启动接口定义了 ABI 对于冷启动路径和热启动接口定义相同 温暖的路径。RMM-EL3 运行时接口定义了 EL3 服务的 ABI,可以是 由 RMM 调用,以及在处理 来自 NS 的 SMC 呼叫。以下各节将更详细地讨论这些接口。原创 2024-07-25 19:20:51 · 31 阅读 · 0 评论 -
4.Components 4.19. Realm Management Extension (RME)
FEAT_RME(或简称 RME)是 Armv9-A 扩展,是的一个组件。TF-A 支持启动 RME 从版本 2.6 开始。本章讨论为支持 RME 和 而对 TF-A 进行的更改 提供了有关如何使用 RME 构建和运行 TF-A 的说明。原创 2024-07-25 19:19:54 · 32 阅读 · 0 评论 -
4.Components 4.18. 信任链绑定
清单”节点描述:证书节点的容器。性能相容:用法:必填值类型:定义:必须是“arm, cert-descs”证书节点描述:描述使用的证书属性 在身份验证过程中。性能根证书用法:对于没有父级的证书是必需的。换言之,经过验证的证书 使用信任根公钥。值类型:图像 ID用法:对于每个具有唯一 ID 的证书都是必需的。值类型:父母用法:它指的是它们的父图像,通常包含 用于验证证书的信息。此属性对于所有非根证书都是必需的。根证书不需要此属性 由于根证书是使用信任根进行验证的 公钥由平台提供。原创 2024-07-25 19:18:51 · 41 阅读 · 0 评论 -
4.Components 4.17. Translation (XLAT) Tables Library
本文档介绍翻译表库(版本 2)的设计 由受信任固件 A (TF-A) 使用。该库提供用于创建页面的 API 基于内存布局描述的表格,以及设置系统 与内存管理单元 (MMU) 相关的寄存器,并执行 所需的翻译后备缓冲区 (TLB) 维护操作。原创 2024-07-25 17:12:28 · 40 阅读 · 0 评论 -
4.Components 4.16. 安全分区管理器(MM)
安全分区是实例化的软件执行环境 S-EL0,可用于实现简单的管理和安全服务。由于 S-EL0 是非特权异常级别,因此安全分区依赖于 特权固件(即 TF-A),被授予对系统和处理器的访问权限 资源。系统地址映射中的内存和设备区域。PE系统寄存器。一系列同步异常(例如 SMC 函数标识符)。请注意,目前 TF-A 仅支持处理一个安全分区。安全分区使 TF-A 能够仅实现必要的安全 在 EL3 中服务,并在 S-EL0 的分区中实例化其余部分。此外,可以使用多个安全分区来隔离不相关的区域 彼此的服务。原创 2024-07-25 17:11:18 · 32 阅读 · 0 评论 -
4.Components 4.15. EL3 安全分区管理器
本文档介绍了基于 FF-A 规范的 EL3 SPMC 设计。EL3 SPMC 提供参考 FF-A 兼容实现,无需 S-EL2 虚拟化支持, 帮助尽早采用和迁移到 FF-A。原创 2024-07-25 17:09:33 · 45 阅读 · 0 评论 -
4.Components 4.14. 安全分区管理器
基于FF-A规范[1]的S-EL2 SPMC,可在以下领域实现虚拟化 安全世界,管理多个 S-EL1 或 S-EL0 分区。基于 FF-A 规范的 EL3 SPMC,管理单个 S-EL1 分区 在安全世界中没有虚拟化。EL3 SPM 基于 MM 规范,传统实现管理 单个 S-EL0 分区 [2]。这些实现在各自的软件体系结构上有所不同,并且只有一个 可以在构建时选择。描述项目符号 1 的实现。当 SPMC 位于 S-EL2 时。不是架构规范,它可能会提供假设 在规范中指定为实现定义的部分。原创 2024-07-25 17:03:43 · 21 阅读 · 0 评论 -
4.Components 4.13. SDEI: 软件委托异常接口
软件委托异常接口 (SDEI) 是 Arm 规范,用于 非安全世界,使用固件注册处理程序以接收通知 关于系统事件。固件将首先通过以下方式接收系统事件 异步异常,作为响应,安排已注册的处理程序执行 在不安全的 EL 中执行。与 SDEI 调度程序交互的正常世界软件(使 SDEI 请求和接收通知)称为SDEI 客户端。一个 客户端在已注册的处理程序处收到事件通知,即使它 正在执行,但异常被屏蔽。可供 客户特定于平台1.另请参阅确定客户端 EL的。原创 2024-07-25 16:50:36 · 26 阅读 · 0 评论 -
4.Components 4.12. Library at ROM
ROM 库”功能允许平台构建函数库,以 放置在 ROM 中。这通过利用 中的可用空间来减少 SRAM 的使用。只读存储器。“ROM 库”包含一个跳转表,其中包含以下函数列表: 放置在 ROM 中。函数可以来自一个或多个库。在将功能编程到ROM中后,可以对其进行修补。特定于平台的库可以放置在 ROM 中。功能可以通过一个或多个 BL 图像来访问。原创 2024-07-25 16:46:18 · 19 阅读 · 0 评论 -
4.Components 4.11. 可靠性、可用性和可维护性(RAS)扩展
对应于 NS 节点的 EA 和 Error 中断首先在固件中处理通过适当的机制向 NS 世界发出错误信号禁止内核直接访问 RAS 错误记录固件为内核创建 CPER 记录以进行导航和处理固件通过 SDEI 将错误信号传回内核FFH 与异常处理框架结合使用。由以下原因导致的异常 非安全环境中的错误被路由到 EL3 并在 EL3 中处理。所述错误是同步的 外部中止 (SEA)、异步外部中止(以 SErrors 表示)、故障处理 和错误恢复中断。原创 2024-07-25 16:44:19 · 24 阅读 · 0 评论 -
4.Components 4.10. Platform Interrupt Controller API
本文档列出了可选的平台中断控制器 API,该 API 从中断控制器的运行时配置和控制中抽象出来 通用代码。中介绍了必需的 API。原创 2024-07-25 16:42:00 · 19 阅读 · 0 评论 -
4.Components 4.7. 固件更新(FWU)
PSA FW 更新规范定义了 和 的概念。新的固件图像由 提供给 在非易失性存储器中刷新它们。一个通用的系统设计将把 在安全的世界里 而在正常世界中执行。PSA 固件更新规范提供了适用于正常世界的 ABI 实体 aka 将固件映像传输到 .在非易失性存储器中发现了活动和更新的存储区 分别由 和。活动库存储正在运行的固件,而更新库包含 固件更新。一旦固件在非易失性的更新库中更新。storage,然后将更新库标记为活动库, 并在非易失性存储器中写入更新的 FWU 元数据。在内存中读取 FWU 元数据。原创 2024-07-25 16:35:17 · 21 阅读 · 0 评论 -
4.Components 4.6. Firmware Configuration Framework
固件配置框架 (FCONF)是 特定于平台的数据,允许查询“属性”和值 在请求实体不知道正在使用哪个后备存储的情况下检索 保存数据。它用于在提供特定于平台的数据的新旧方式之间架起桥梁。如今,像信任链这样的信息被保存在几个嵌套的 平台定义的表。将来,它可能会作为设备的一部分提供 blob,以及有关要加载的图像的其余信息。引入此抽象层将使迁移更容易,并且将保留 适用于不能/不想使用设备树的平台的功能。组成FCONF的属性必须存储在 C 结构中。原创 2024-07-25 16:22:35 · 25 阅读 · 0 评论 -
4.Components 4.5. 异常处理框架
通过寄存器中的各种控制位,Arm 架构 允许将异步异常路由到 EL3。如中断管理框架文档中所述,具体取决于所选的 中断路由模型,TF-A 适当设置寄存器的 and 位以影响此路由。对于大多数用例,除了 促进正常世界和安全世界之间上下文切换的目的, 路由到 EL3 的 FIQ 和 IRQ 不需要在 EL3 中处理。然而,不断发展的系统和标准环境要求各种 异常以 EL3 为目标并在 EL3 中处理。从 ARMv8.2 架构扩展开始,许多 RAS 特性已经 介绍了 Arm 架构。原创 2024-07-25 16:21:12 · 34 阅读 · 0 评论 -
4.Components 4.4. DebugFS
DebugFS功能主要用于将固件调试数据公开给 更高的软件层,例如非安全组件。此类组件可以是 TFTF 测试有效负载或 Linux 内核模块。原创 2024-07-25 16:19:55 · 21 阅读 · 0 评论 -
[TF-A文档]03-Arm SiP服务
本文档列举并描述了Arm SiP(Silicon Provider)服务。SiP服务是芯片提供的非标准、特定于平台的服务 实施者或平台提供商。它们可以通过(“SMC 调用”)访问。从低于 EL3 的异常水平执行指令。SMCArm SiP 服务的源定义位于标头中 文件。表 1:显示 arm-sip-service 的不同版本以及每个版本所做的更改。原创 2024-07-25 16:19:14 · 21 阅读 · 0 评论 -
[TF-A文档]02-Active Monitor
Armv8-A 架构的FEAT_AMUv1引入了活动监视器 外延。此扩展描述了活动监视器的体系结构 单元 (),用于监控核心事件的可选非侵入性组件 通过一组 64 位计数器。提供构建选项时,Trusted Firmware-A 在 AMU 退出 EL3 之前设置,并将保存和恢复 在挂起和恢复时根据需要构建计数器。原创 2024-07-25 16:18:24 · 20 阅读 · 0 评论 -
01-Secure Payload Dispatcher (SPD)
是作为Secure EL1运行的受信任操作系统。要构建和执行 OP-TEE,请按照中的说明进行操作有两种不同的模式可用于加载 OP-TEE OS。默认模式将 在启动期间将其加载为 BL32 有效负载,这是 要使用的平台。还有另一种技术可以在之后加载 OP-TEE OS 通过启用 SMC 调用启动 OPTEE_ALLOW_SMC_LOAD 专为 ChromeOS 添加。通过 SMC 调用加载 OP-TEE 可能不安全 取决于平台配置。如果使用该选项,请务必 了解允许加载受信任的操作系统所涉及的风险 道路。原创 2024-07-25 16:16:30 · 32 阅读 · 0 评论 -
14-ATF中对多核的支持
讨论一个系统、一个软件或ATF对多核的支持,其实就是看这个软件,在启动阶段如何区分主核、从核的?在runtime阶段,是否能把不同核的CPU Data加以区分?是否能区分出cpuid?原创 2024-02-25 13:27:51 · 229 阅读 · 0 评论 -
11-ATF初始化Normal cpu context
ATF (Arm Trusted Firmware) 初始化 Normal CPU Context 的步骤主要涉及设置正常世界(Normal World)CPU的环境,确保在从安全世界(Secure World)切换到正常世界时,CPU能够正确执行正常世界的代码。设置安全状态: ATF会设置CPU从安全世界(Secure World)到正常世界(Normal World)的切换。上下文保存: 在切换到正常世界之前,ATF会保存当前的CPU上下文,包括寄存器和其他状态信息。处获取跳转到REE的参数。原创 2024-02-25 13:11:33 · 134 阅读 · 0 评论 -
08-BL31对异常中断的支持
ATF的作用就变成了依赖各种RT-Service,对低异常等级发出的各种请求进行响应和处理。很多很多的RT-service都是靠着同步异常中的smc触发的同步异常进行交互处理的。当然了,同步异常也有很多种类,有一些也会trap到ATF中去处理的。异常中断有两类,一类是异步异常的处理。包含target到EL3系统错误、正常的target的EL3的中断、以及多系统之间的转发中断。所以就是一切软件的入口、一切调用的入口,都是从异常中断开始。与之对应的是,一切软件或调用的返回,都是从异常中断返回指令开始。原创 2024-02-25 12:41:54 · 119 阅读 · 0 评论 -
13-ATF中的Switch cpu context
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈。原创 2024-02-25 12:37:10 · 85 阅读 · 0 评论 -
15-ATF中的栈的设计
做为一名软件工程师、嵌入式工程师,不管底层上层,在工作中多多少少都会谈到"栈"这个字,那么何为栈呢? 你真的懂和理解吗?啥又是栈指针?栈内存?本文就以armv8/armv8的aarch64体系、TF-A(ATF)代码为示例,以直接写出答案的方案来总结:栈指针和栈内存的基本概念。1、首先讲解一下aarch64的状态下,有哪些SP寄存器,非常简单:- SP_EL0 //当spsel == 0,高的级别访问的sp就是sp_el0- SP_EL1 //在EL1级别下使用,且spsel == 1,此时sp原创 2024-02-25 12:33:50 · 73 阅读 · 0 评论 -
Runtime Service大总结(系统里包含了哪些Runtime Service)
*(1)、定义实现 **在runtime_svc.h中,DECLARE_RT_SVC宏其实就是在section(“rt_svc_descs”)段中定义了一个全局变量./*/*/*/*/*/*/*/*static/*const/*__section/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*原创 2023-03-31 11:39:45 · 129 阅读 · 0 评论 -
Runtime Service的定义
我们重点看下这张表,对应smc id的定义bit31决定是fast call,还是std call(yield对应的就是std call)bit30表示是以32位传参,还是以64位传参, 注意我们看了optee在linux的driver,都是以32位方式bit29:24 决定服务的类型bit15:0 每种call类型下,表示rangebit31、bit30、bit23:16、bit15:0 都是很好理解,我们来讲一下bit29:24。原创 2023-03-31 11:39:15 · 85 阅读 · 0 评论 -
BL31跳转到BL33的流程详解
ATF原创 2023-03-31 11:40:32 · 196 阅读 · 0 评论