自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

baron-周贺贺-代码改变世界ctw

【介绍】: 某外企资深安全工程师、阅码场资深讲师、51CTO编辑、优快云博客专家... 【研究方向】:安全/虚拟化、Trustzone、TEE、SOC架构、ARM架构、终端安全/手机安全/设备安全/系统安全、Linux Kernel安全、Android

  • 博客(1713)
  • 资源 (21)
  • 问答 (1)
  • 收藏
  • 关注

原创 【置顶】TEE从入门到精通-[目录]

此专栏讲解包含不限于optee、商用TEE、常规的安全业务设计。但主要基于optee最新代码,深度讲解和剖析各项原理和机制...

2022-05-06 08:35:45 5746 2

原创 [目录]-博客笔记导读目录(全部)

编辑backup: 汇总-arm-optee-android-复制黏贴–(网址)============= (以下是正文) =============CA/TA开发(收费区)0-博客笔记导读目录(全部)-backup-202111210-博客笔记导读目录(全部)-backup-202108120-博客笔记导读目录(全部)-backup-202201180-博客笔记导读目录(全部)-20220506backup草稿-博客笔记导读目录(全部)(统计:本文共记录650篇博文)...............

2020-06-30 10:57:13 34603 24

原创 【置顶】ARMv8/ARMv9架构入门到精通-[目录]

周贺贺,baron,代码改变世界,coding_the_world,Arm精选,arm_2023,安全启动,加密启动optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表,Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、V

2020-06-30 10:32:07 22055 11

原创 10.1 PSCI规范概述

PSCI是ARM定义的电源管理标准接口,用于协调非安全与安全世界间的电源状态控制。该规范自2013年发布后不断演进,最新2.0版本支持多集群管理等特性。PSCI提供CPU电源管理(如启动/关闭核心)、系统电源操作(关机/重启)和辅助功能,通过SMC调用实现。在TF-A中,PSCI服务层位于BL31,需平台实现特定回调函数。其安全机制包括权限控制和状态验证,典型应用于多核启动、低功耗模式等场景。开发时需注意PSCI 2.0的电源域支持要求,并可通过统计接口和日志系统进行调试。

2025-07-13 07:00:00 53

原创 ARM汇编编程(AArch64架构) - 第14课:安全扩展(ARM TrustZone)

【代码】ARM汇编编程(AArch64架构) - 第14课:安全扩展(ARM TrustZone)

2025-07-13 00:36:49 214

原创 ARM汇编编程(AArch64架构)第13课:多核启动与调度

【代码】ARM汇编编程(AArch64架构)第13课:多核启动与调度。

2025-07-13 00:36:05 71

原创 9.4 自定义SMC服务开发

本文介绍了TF-A中SMC(Secure Monitor Call)服务的开发方法。SMC作为安全与非安全世界通信的核心机制,支持快速调用和标准调用两种类型。开发流程包括定义服务ID、注册处理函数、实现具体逻辑等步骤,并提供了安全计数器服务作为示例。文章强调安全注意事项如参数验证、边界检查和权限控制,同时给出调试测试方法和用户空间集成方案。最佳实践建议遵循最小权限、原子操作原则,注重版本兼容性和性能优化。该指南包含代码示例和表格等要素,可直接用于实际开发。

2025-07-12 22:15:00 370

原创 9.3 快速调用与标准调用

本文详细分析了ARM Trusted Firmware中的两种安全监控调用(SMC)类型。快速调用适用于时间敏感操作(<1μs),仅保存关键寄存器;标准调用用于复杂服务,需完整上下文保存(延迟>1.2μs)。文章对比了两者的性能差异(标准调用延迟是快速调用的3倍),并提供了开发实践建议:时间敏感操作优先使用快速调用,复杂服务选择标准调用。同时给出了混合调用时的注意事项和典型问题排查方法,包括寄存器损坏检查和性能优化建议。最后指出平台适配需要实现两类调用的处理入口函数表,并建议在ARMv8.4+平

2025-07-12 20:30:00 476

原创 9.2 SMC处理流程

本文介绍了ARM Trusted Firmware-A (TF-A)中SMC调用的处理流程。主要内容包括:1) SMC触发条件与硬件自动行为,如异常触发和寄存器保存;2) TF-A处理流程,涵盖异常向量分发、上下文保存和分类处理(快速调用与标准调用路径);3) 安全状态管理机制和世界切换过程;4) 返回处理中的结果回传与错误处理;5) 性能优化要点,如热路径优化、延迟敏感型服务设计和并行处理支持。文章通过代码片段和流程图展示了SMC调用的核心处理逻辑,为理解ARM安全监控模式提供了技术参考。

2025-07-12 19:15:00 493

原创 9.1 SMC调用规范

ARM架构中的**安全监控调用(SMC)**是实现安全与非安全世界通信的关键机制,通过执行smc指令触发EL3异常并由TF-A处理。SMC调用分为快速调用、标准调用和厂商扩展三类,遵循严格的寄存器约定(X0-X6传递参数)和功能ID编码规范(包含服务类型、调用方式等信息)。典型流程包含非安全世界发起调用和BL31处理两个阶段,需遵循错误返回格式(X0存储错误码)。实现时需注意参数验证、时延防护、寄存器清理等安全要求,规范参考ARM《SMC Calling Convention v2.0》。

2025-07-12 16:45:00 540

原创 8.4 TEE启动与初始化

TEE启动流程是TF-A安全启动链的关键环节,主要包括BL2加载验证、BL31移交控制权、TEE自初始化和服务注册等步骤。启动过程涉及镜像格式规范、上下文切换准备、内存管理初始化以及安全服务注册等关键操作。平台相关初始化需配置TrustZone、加密加速器等硬件安全特性。运行时服务建立包括线程管理、安全存储和密码学服务实现。调试时需分析启动日志,排查镜像验证、内存配置等问题。安全方面要求启用ASLR、堆栈保护等机制,不同TEE实现的初始化流程可能存在差异。该流程确保了安全执行环境的正确建立和隔离运行。

2025-07-12 14:45:00 308

原创 8.3 安全世界切换机制

本文详细解析了TrustZone技术中的安全世界切换机制及其在TF-A中的实现。主要内容包括:1) 安全世界切换的触发条件与基本流程;2) 关键硬件支持如SCR_EL3寄存器配置和异常级别转换;3) TF-A中的上下文管理结构与核心切换函数;4) 双向切换流程的具体实现步骤;5) 安全考量与防护措施;6) 性能优化方法;7) 调试验证技术。文章还涉及平台定制化实现方案,强调必须遵循ARM安全规范,确保切换操作的原子性和一致性。该机制通过硬件隔离与软件协作,为安全敏感操作提供可靠的执行环境保护。

2025-07-12 13:30:00 811

原创 8.1 OP-TEE与TF-A的集成

本文介绍了OP-TEE与TF-A的集成架构设计。主要内容包括:OP-TEE的三层基本架构(OS、Client、Driver)及其与TF-A的交互流程;系统启动时序和内存映射配置;构建时的编译选项与镜像打包步骤;运行时通过SMC调用和共享内存实现的交互机制;安全世界切换的上下文保存/恢复实现及性能指标;调试方法及常见问题排查;以及平台适配所需的接口和设备树配置示例。该集成方案基于ARM TrustZone技术,通过BL31进行安全监控调度,为可信应用执行提供隔离环境。

2025-07-12 11:30:00 730

原创 7.4 安全服务调度器

安全服务调度器是BL31运行时固件的核心组件,负责在安全世界和非安全世界之间路由服务请求。文章详细介绍了其分层架构设计、关键数据结构和调度流程,包括SMC调用处理和服务注册机制。重点阐述了上下文管理、同步/异步调用支持以及安全隔离等关键实现机制,并提供了自定义服务开发示例。最后讨论了调试技巧、性能优化方法和安全注意事项。该调度器通过严格的调用权限检查和内存隔离机制,确保系统服务调用的安全性和可靠性。

2025-07-12 10:15:00 985

原创 7.3 电源状态管理接口(PSCI)

ARM PSCI规范是标准化的电源管理接口,通过SMC调用实现多核电源状态协调。主要内容包括:1)PSCI提供CPU空闲管理、热插拔和系统电源控制等核心功能;2)CPU电源状态机模型及关键API实现;3)系统级电源管理操作与平台集成要求;4)多集群拓扑同步机制;5)安全验证与防攻击措施。PSCI在TF-A的BL31中实现,需平台适配电源控制回调和状态保持机制,确保安全可靠的电源管理。

2025-07-12 09:45:00 447

原创 7.2 安全监控调用(SMC)处理

本文详细介绍了ARM架构中安全监控调用(SMC)的处理机制。主要内容包括:SMC的基本原理,通过执行SMC指令触发EL3异常;TF-A中的处理流程,涵盖异常入口、FID解析、服务执行和结果返回;SMC调用类型及异常上下文管理;安全服务的注册与调度机制;调试方法和常见错误处理;以及平台定制扩展和性能优化建议。SMC作为安全与非安全世界通信的核心机制,其高效处理对系统安全性和性能至关重要。开发人员可通过定制服务、优化关键路径等方式提升SMC处理效率。

2025-07-12 07:15:00 484

原创 7.1 EL3运行时服务的架构

ARM Trusted Firmware的BL31阶段作为EL3运行时固件,承担着安全监控、系统隔离和硬件抽象等核心职责。其架构包含基础框架层、服务分发层和核心服务模块(如PSCI、SPMD),通过标准化接口处理SMC调用和异常管理。关键数据结构包括CPU上下文和SMC请求描述符,初始化流程涵盖异常设置、平台配置和服务注册。设计需注重性能优化(快速调用路径<1000周期)、安全验证(参数检查、寄存器清零)和可扩展性(服务ID分层)。开发者应使用RT_SVC_DESC宏实现规范的ABI接口,时间敏感服务

2025-07-12 06:45:00 707

原创 ARM汇编编程(AArch64架构)第12课:内存管理实战

AArch64支持多种页表粒度,通过。

2025-07-12 00:49:34 308

原创 ARM汇编编程(AArch64架构)第11课:系统寄存器操作

指令功能语法示例MRS读取系统寄存器到通用寄存器MSR将通用寄存器值写入系统寄存器。

2025-07-12 00:48:07 190

原创 6.3 安全配置管理

本文介绍了BL2阶段安全配置框架的核心内容。主要包括:安全配置的基本功能(策略加载、参数初始化、硬件配置等),关键配置项(信任根、引导策略、内存保护),以及配置加载流程(发现、验证、应用)。文章还提供了平台安全配置的实现示例,说明了调试模式的安全选项,并提出了最佳实践建议,如多层验证、最小权限原则和安全审计要求。最后强调TZC配置的重要性,建议使用调试工具验证配置效果。该框架是建立可信执行环境的基础,需严格遵循安全规范实施。

2025-07-11 21:15:00 357

原创 5.4 BL1到BL2的跳转过程

TF-A启动流程中BL1到BL2的关键跳转过程包括镜像加载、安全验证和环境配置三个主要阶段。BL1需完成BL2镜像的加载与安全验证(证书链、哈希校验等),配置CPU上下文(EL3切换至EL1),初始化MMU和寄存器状态,最后通过eret指令实现控制权转移。该过程需确保地址安全、权限降级正确和内存隔离,平台需实现bl1_plat_set_bl2_ep_info等定制化接口。调试时可检查ELR_EL3/SPSR_EL3寄存器值验证跳转状态。具体实现因平台而异,需参考TF-A源码相关模块。

2025-07-11 19:45:00 730

原创 5.3 BL1的安全机制

摘要:BL1是Trusted Firmware-A启动链中的首个可信固件,遵循最小化TCB、深度防御等安全原则。其核心功能包括硬件安全特性初始化、信任链验证(BL1/BL2镜像签名校验)、运行时防护(内存隔离、异常熔断)及安全状态管理。BL1采用恒定时间算法防御时序攻击,通过形式化验证和模糊测试确保安全性,需符合PSA Certified Level 3认证标准。关键实现涉及安全调试控制、故障注入检测及侧信道防护措施,为后续启动阶段建立硬件级信任锚。(149字)

2025-07-11 15:45:00 1391

原创 5.2 BL1的硬件初始化

详细介绍了ARM Trusted Firmware中BL1阶段的硬件初始化流程。主要内容包括:处理器核心初始化(异常级别配置、执行状态设置)、内存系统初始化(内存控制器、TrustZone配置)、时钟与电源管理、调试系统设置、安全硬件初始化(加密引擎、安全存储)等关键步骤。文章还涉及平台特定初始化、错误处理机制以及优化后的初始化顺序原则。通过代码片段展示了典型配置方法,强调不同平台需参考具体技术文档进行精确实现。该初始化流程遵循时序关键路径优先、安全组件优先等原则,为后续启动阶段奠定硬件基础。

2025-07-11 14:45:00 740

原创 5.1 BL1的功能与职责

BL1是ARM可信固件TF-A启动流程的第一个阶段,作为固化在ROM中的初始引导程序,它承担着硬件初始化、安全验证和信任链建立等核心功能。BL1需在有限资源(64-128KB)下完成CPU核心初始化、内存控制器配置、BL2镜像验证等关键任务,确保系统安全启动。其设计具有确定性执行、无动态内存分配等特点,必须严格实施平台安全策略。作为信任根,BL1的任何漏洞都可能导致整个系统安全机制失效,因此需要经过严格审查。该阶段还涉及异常级别切换、执行环境准备等底层操作,是后续启动阶段的基础保障。

2025-07-11 13:45:00 466

原创 4.4 多核启动与CPU热插拔支持

本文介绍了多核处理器启动机制与热插拔实现。主要内容包括:1)多核启动拓扑结构,区分主从核角色与集群概念;2)TF-A框架中的关键启动流程,涵盖硬件信号同步与软件同步机制;3)CPU热插拔实现技术,包含状态保存、电源管理和异常处理;4)平台适配指南与典型问题排查方法;5)安全注意事项,强调启动隔离和权限控制。文章提供了多核系统从启动到运行时管理的完整技术方案,特别针对ARM架构处理器给出了具体实现建议。

2025-07-11 12:45:00 389

原创 4.3 启动镜像格式与签名机制

【代码】4.3 启动镜像格式与签名机制。

2025-07-11 11:15:00 725

原创 4.2 冷启动与热启动流程

本文档详细对比了ARM系统冷启动与热启动的核心差异。冷启动是从完全断电到全功能运行的完整初始化过程,需执行BL1-BL33全启动链,建立完整信任链;热启动则是保持供电状态下的部分恢复,通常从BL31开始,复用已有上下文。文中通过表格对比、代码示例和流程图,具体说明了两者的执行流程、安全验证机制和状态管理方法,并提供了调试技巧与平台适配要求。重点剖析了冷启动的逐级验证机制和热启动的上下文保存/恢复策略,是理解ARM系统启动过程的技术指南。

2025-07-11 09:45:00 565

原创 4.1 启动阶段划分(BL1/BL2/BL31/BL32/BL33)

启动阶段异常级别安全状态主要职责BL1EL3Secure初始硬件配置、BL2加载与验证BL2EL3/S-EL1Secure可信启动链扩展、运行时镜像加载BL31EL3Secure运行时安全监控、PSCI服务BL32S-EL1SecureTrusted OS执行环境(如OP-TEE)BL33NS-EL2/1Non-Secure正常世界OS(如Linux/UEFI)

2025-07-11 08:15:00 928

原创 6.2 镜像加载与验证

本文详细介绍了ARM可信固件BL2的镜像加载机制与安全验证体系。采用分层架构设计,支持多级加载流程和多种存储介质访问,包含内存映射管理策略。安全验证采用X.509证书链和多种签名算法,实现完整的哈希验证流程。关键API提供镜像加载接口和验证策略配置,平台适配需实现存储驱动接口并考虑性能优化。安全防护包含防篡改措施和抗回滚设计,调试方面给出常见问题排查方法和测试要求。建议保持BL2镜像不超过256KB以确保安全运行。

2025-07-11 08:15:00 756

原创 6.1 BL2的核心功能

BL2作为TF-A启动流程的第二阶段引导程序,承担着镜像加载、安全验证和执行环境准备等核心功能。其主要工作包括:从BL1接管控制权,加载并验证BL31/BL32/BL33等固件镜像;通过签名验证、哈希校验等方式建立信任链;完成硬件初始化和安全策略配置。BL2采用模块化设计,包含镜像加载子系统、安全验证引擎等组件,支持多种存储介质和加密算法,并通过平台适配层保持可移植性。该阶段严格遵循"先验证后执行"原则,初始化关键安全服务,为后续启动阶段奠定安全基础,同时遵循最小化可信计算基的设计理念。

2025-07-11 07:15:00 739

原创 3.4 调试方法与技巧(GDB, JTAG, 日志系统)

需在早期启动阶段介入调试依赖硬件调试接口受安全机制限制(如MMU未启用时)多阶段调试环境差异大。

2025-07-11 07:00:00 357

原创 ARM汇编编程(AArch64架构)第10课:异常与中断处理

保存现场(PSTATE/通用寄存器)中断返回(ERET)

2025-07-11 00:47:58 265

原创 ARM汇编编程(AArch64架构)课程 - 第9章:原子操作与同步

原子操作三大特性:;1. 不可分割性(Atomicity);2. 可见性(Visibility);3. 有序性(Ordering)多核共享资源访问计数器递增标志位修改。

2025-07-11 00:47:00 314

原创 20.4 量子安全加密算法

量子计算对传统加密体系构成严峻威胁,Shor算法可破解RSA/ECC,Grover算法削弱对称加密安全性。NIST推进的后量子密码(PQC)标准中,格密码(如Kyber)因兼容性优成为TF-A(ARM可信固件)首选方案。TF-A通过混合加密(ECDH+Kyber)、双重证书校验等实践增强安全启动链,并利用ARM向量指令优化性能。迁移路径分三阶段推进,面临硬件加速、兼容性等挑战。未来方向包括同态加密、量子随机数等,ARMv9.4或将提供专用指令提升PQC效率。(149字) 核心要点: 1️⃣ 量子算法

2025-07-10 17:56:25 421

原创 6.4 BL2到BL31/BL33的切换

本文详细解析了TF-A启动流程中BL2到BL31/BL33的切换过程。关键步骤包括镜像加载与安全验证、执行环境准备、控制权移交等。文章介绍了参数传递机制、内存布局配置、平台特定处理方式,并提供了调试技巧和安全考量。切换过程通过SMC调用实现,需确保镜像完整性和执行环境正确初始化。不同平台在加载地址、入口类型等方面存在差异,开发时需注意参数传递和状态切换的一致性。附录列出了相关代码路径,为开发者提供了实用的技术参考。

2025-07-10 16:34:53 695

原创 8.2 其他TEE OS支持

在TF-A环境中集成多种主流TEE OS的技术方案。主要内容包括:Trusty TEE的Android生态集成方法、seL4微内核的形式化验证特性及配置流程、厂商定制TEE解决方案的通用框架,以及多TEE OS动态切换机制。通过代码示例、性能对比表格和常见问题排查指南,详细说明了不同TEE方案与TF-A的交互方式,涵盖启动参数配置、安全服务注册、异常处理等关键技术点。文章还提供了测试验证框架的集成建议,强调需遵循GlobalPlatform标准并实现必要的加密加速功能。

2025-07-10 16:19:34 652

原创 ARM汇编编程(AArch64架构)课程 - 第8章:控制流与循环

【代码】ARM汇编编程(AArch64架构)课程 - 第8章:控制流与循环。

2025-07-10 00:10:28 286

原创 ARM汇编编程(AArch64架构)课程 - 第7章:SIMD与浮点运算

AArch64架构提供32个128位NEON向量寄存器(V0-V31),支持SIMD并行计算。浮点比较指令(设置NZCV标志)浮点乘法运算(单/双精度)

2025-07-10 00:09:43 248

原创 3.3 常用开发板支持(FVP, Juno, Raspberry Pi等)

仿真平台:Fixed Virtual Platform (FVP) —— 无需物理硬件的纯软件仿真官方开发板:ARM Juno —— ARM官方参考开发板消费级硬件:Raspberry Pi 4/5 —— 低成本学习平台企业级开发板:NXP i.MX8/QorIQ等。

2025-07-09 19:52:51 262

原创 《ARM Trusted Firmware-A (TF-A) 权威指南:从安全启动到可信执行》目录

1.1 ARMv8/ARMv9安全扩展1.2 异常级别(EL0-EL3)与执行状态(AArch32/AArch64)1.3 TrustZone技术详解1.4 ARM安全参考架构(PSA Certified)2.1 TF-A发展历史与项目定位2.2 TF-A在ARM生态系统中的角色2.3 TF-A代码结构与仓库组织2.4 TF-A版本管理与发布周期。

2025-07-09 17:28:22 589

Trustzone/TEE标准版-48节课/19.5h

【课程大纲】 (课程目标) 1、最快速地了解,SOC安全架构、Arm安全架构、Trustzone/TEE分别是什么?应用场景是怎样的? 1、知道我学习什么,我要怎么去学习,从此之后有了一个明确的学习路线。 2、认识一些共同目标的人,相互讨论问题,共同进步。勤学、共学、助学。 3、ARM不再神秘,SOC不在神秘,安全架构不再神秘,Trustzone不在什么,TEE不在神秘,让您短期内就能cover住全局 4、助你技术能力大大提升,质地飞跃,跨级飞跃。 5、有了这些基础知识后,市面上出现的任何SOC、任何软件架构,你都不在害怕,都能在短时间内快速上手。

2025-02-13

Arm精选-铂金VIP课程-总课时1000节+、总时长360h+、总价值3w+

讲师介绍 拥有 12 年手机安全、汽车安全、芯片安全开发经验,擅长 Trustzone/TEE/ 安全的设计与开发,对 ARM 架构的安全领域有着深入的研究和丰富的实践经验,能够将复杂的安全知识和处理器架构知识进行系统整理并清晰讲解,透过事务看本质,帮助学员快速入门和理解。

2025-02-13

《optee系统架构从入门到精通》

课程大纲 01-Trustzone简介 什么是TEE?TEE基础科普 TEE的生态介绍?有哪些TEE厂商?各有什么特点? 02-TEE技术简介 什么是TEE?TEE基础科普 TEE的生态介绍?有哪些TEE厂商?各有什么特点? 03-TEE的生态和应用 这么些年过来,TEE为什么一直不温不火? TEE在手机生态中表现如何?发展趋势如何? TEE在汽车电子领域又是怎样的?是否大有前途? TEE在服务器领域是否有应用? TEE在物联网IOT中是否有需求? TEE还在哪些领域中有需求?(电视机/机顶盒…) 04-TrustzoneTEE的学习方法 什么是trustzone?什么是TEE?什么是架构? Trustzone是硬件吗?是软件吗? 当前主流的软件和硬件是怎么样子的?有什么标准规范吗? 如何学习Trustzone/TEE? 学习Trustzone/TEE的最佳路径是怎样的? 什么是软硬件交互?软硬件是怎样交互的?如何学习软硬件交互的主流框架?

2025-02-10

深度学习armv8armv9 cache的原理

ARM 架构刚开始开发时,处理器的时钟速度和内存的访问速度大致相似。今天的处理器内核要复杂得 多,并且时钟频率可以快几个数量级。然而,外部总线和存储设备的频率并没有达到同样的程度。可以 实现可以与内核以相同速度运行的小片上 SRAM块,但与标准 DRAM 块相比,这种 RAM 非常昂贵, 标准 DRAM 块的容量可能高出数千倍。在许多基于 ARM 处理器的系统中,访问外部存储器需要数十甚 至数百个内核周期。 缓存是位于核心和主内存之间的小而快速的内存块。它在主内存中保存项目的副本。对高速缓冲存储器 的访问比对主存储器的访问快得多。每当内核读取或写入特定地址时,它首先会在缓存中查找。如果它 在高速缓存中找到地址,它就使用高速缓存中的数据,而不是执行对主存储器的访问。通过减少缓慢的 外部存储器访问时间的影响,这显着提高了系统的潜在性能。通过避免驱动外部信号的需要,它还降低 了系统的功耗

2025-01-19

optee返回REE的几种方式

TEE(optee)切换到REE(linux)几种方式 1、开机时,ATF跳转到optee初始化,初始化完成后再回到normal world 2、在uboot或linux driver中,调用fast call切到optee获取信息,然后再回到normal world 3、标准的std调用到optee,此时又分三种情况: 当cpu在执行std任务tee_entry_std(…)时,任务处理完成了,需要切换REE; 当cpu在执行std任务tee_entry_std(…)时,如有REE服务, 这时候会RPC调用切换REE 当cpu在执行std任务tee_entry_std(…)时,来了一个foreign interrupt, 这时候cpu也会切回REE

2025-01-19

optee的RPC设计(模型)详解

1、REE和TEE正向调用/反向调用的流程图 开机之后,启动tee-supplicant后,执行: a b 一次完整的TEE调用流程: 1 2 3 4 5 一次完整的RPC流程 : 6 7 b 8 c 2 一次完整的TEE调用流程(在TEE中又调用了RPC): 1 2 3 4 5 6 7 b 8 c 2 3 4 5 2、REE到TEE的正向调用 ① APP调用CA,CA调用libteec.so,libteec.so调用/dev/tee0节点,进入驱动的ioctl函数 ② ioctl函数中调用optee_do_call_with_arg(),该函数调用smc将CPU通过ATF切换到了optee ③④ optee处理完任务后,调用smc通过ATF返回到驱动中的ioctl(返回到②中刚才切出去的地方) ⑤ ioctl返回到应用程序

2025-01-19

optee4.0.0 qemu-v8的环境搭建篇(ubuntu20.10)

1、拉取代码 repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml --repourl=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b 4.0.0 2、下载工具链 make -f toolchain.mk toolchains 3、编译 make -f qemu_v8.mk all -j8

2025-01-19

Linux Kernel中的系统调用分析

例如: SYSCALL(NR_flock, sys_flock),其实就是定义__arm64_sys_flock函数 SC_COMP(NR_ioctl, sys_ioctl, compat_sys_ioctl),其实就是定义__arm64_compat_sys_ioctl函数 在sys.c中定义并初始化了系统调用的tab表 (kernel-4.19/arch/arm64/kernel/sys.c) #undef __SYSCALL #define __SYSCALL(nr, sym) [nr] = __arm64_##sym, const syscall_fn_t sys_call_table[__NR_syscalls] = { [0 ... __NR_syscalls - 1] = __arm64_sys_ni_syscall, #include <asm/unistd.h> };

2025-01-19

向linux kernel中添加cmdline的四种方式

在android的Makefile中添加 vim build/core/Makefile INTERNAL_KERNEL_CMDLINE := $(strip $(BOARD_KERNEL_CMDLINE) buildvariant=$(TARGET_BUILD_VARIANT) $(VERITY_KEYID)) ifdef INTERNAL_KERNEL_CMDLINE INTERNAL_BOOTIMAGE_ARGS += --cmdline "$(INTERNAL_KERNEL_CMDLINE)" endif

2025-01-19

Trusty qemu + android环境搭建详细步骤

下载源码 mkdir trusty cd trusty repo init -u https://android.googlesource.com/trusty/manifest -b master repo sync -j32 编译 ./trusty/vendor/google/aosp/scripts/build.py generic-arm64 查看编译结果 ls build-root/build-generic-arm64/lk.bin 安装运行依赖 sudo apt install libpixman-1-dev libstdc++-8-dev pkg-config libglib2.0-dev libusb-1.0-0-dev

2025-01-19

多核多cluster多系统之间缓存一致性概述

然后请思考: (1)、core0中的L1和L2 cache有一致性的要求吗?缓存和替换策略是怎样的? (2)、core0 cache 和 core1 cache的一致性是谁来维护? 遵从MESI协议吗? (3)、core0 cache 和 core4 cache的是怎么维护一致性的呢? (4)、custer0 L3 cache 和 cluster1 L3 cache的一致性是谁来维护?遵从什么协议吗? (5)、custer0 L3 cache 和 GPU的L2一致性呢?遵从什么协议? (6)、custer0 L3 cache 和 其它的 I/O device Master 一致性呢?遵从什么协议? (7)、DSU、ACE、CHI、CCI、CMN的概念?

2025-01-19

SOC的多核启动流程详解

1、基础概念 请先自行理解以下4个概念: cold boot warm boot Primary boot Secondary boot 另外还两种配置: 你的reset地址是可编程的,则会配置 PROGRAMMABLE_RESET_ADDRESS=1 ,与之对立的则是你的 reset地址是不可编程的。 你在SOC启动的时候,首先只启动一个core,则会配置 COLD_BOOT_SINGLE_CPU=1 ,与之对立的则 是你的SOC启动的时候,所有core都上电了。

2025-01-19

SMMU学习这一篇就够了

访问非连续的地址 现在系统中很少再预留连续的memory,如果Master需要很多memory,可以通过SMMU把一些非 连续的PA映射到连续的VA,例如给DMA,VPU,DPU使用。 32位转换成64位 现在很多系统是64位的,但是有些Master还是32位的,只能访问低4GB空间,如果访问更大的地址 空间需要软硬件参与交换memory,实现起来比较复杂,也可以通过SMMU来解决,Master发出来 的32位的地址,通过SMMU转换成64位,就很容易访问高地址空间。 限制Master的访问空间 Master理论上可以访问所有的地址空间,可以通过SMMU来对Master的访问进行过滤,只让 Master访问受限的区域,那这个区域也可以通过CPU对SMMU建立页表时动态控制。 用户态驱动 现在我们也看到很多系统把设备驱动做在用户态,调用驱动时不需要在切换到内核态,但是存在一 些安全隐患,就是用户态直接控制驱动,有可能访问到内核空间,这种情况下也可以用SMMU来实 现限制设备的访问空间 设备虚拟化 例如设备虚拟化有多种方式,Emulate,Para-virtualized,以及Pass-t

2025-01-19

optee的共享内存的介绍

1、共享内存的介绍 share memory是一块内存区域, 用于non-secure world和secure world的通信. optee支持两种share memory: 连续的buffer,非连续的buffer optee是按照buffer来管理共享内存的,而不是按照pool来管理的. 每一个buf需要配置如下属性: buffer的起始地址和size 该buffer的cache属性 如果是被map到非连续的buf,则列出它所有的块(chunk) 配置成连续的share buffer CFG_CORE_RESERVED_SHM=y CFG_SHMEM_START and CFG_SHMEM_SIZE 定义起始地址和size 该memory的type是MEM_AREA_NSEC_SHM 在non-secure world需要调用OPTEE_SMC_GET_SHM_CONFIG来获取: share memory的物理地址和size share memory的cached属性

2025-01-19

openssl命令行:RSA的用法- 终极版

1、生成密钥 openssl genrsa -out test2048_priv.pem 2048 openssl rsa -pubout -in test2048_priv.pem -out test2048_pub.pem openssl genrsa -out test3072_priv.pem 3072 openssl rsa -pubout -in test3072_priv.pem -out test3072_pub.pem openssl genrsa -out test4096_priv.pem 4096 openssl rsa -pubout -in test4096_priv.pem -out test4096_pub.pem 2、查看密钥 openssl rsa -in test2048_priv.pem -text -out openssl rsa -in test3072_priv.pem -text -out openssl rsa -in test4096_priv.pem -text -out

2025-01-19

mbedtls移植体验

1、下载mbedtls源码 git clone https://github.com/ARMmbed/mbedtls.git 2、下载编写程序的模板 (我自己的/通用的) git clone https://gitee.com/baron_zz/code_template.git 3、拷贝native_c_template命名为mbedtls_test cp native_c_template mbedtls_test -r 4、将mbedtls 中的libary、include目录拷贝到mbedtls_test 中

2025-01-19

Linux内核驱动面试的100问

什么是Linux内核?与用户空间有何区别? Linux内核的主要功能有哪些? 内核模块是什么?它们是如何工作的? 描述内核空间和用户空间之间的通信机制。 什么是系统调用?请给出几个例子。 如何查看当前系统的内核版本? 解释Linux内核的模块化是如何实现的。 什么是设备树?它在Linux内核中扮演什么角色?

2025-01-19

Linux Kernel中断下半部分实现的三种方式

1、软中断 软中断是一组静态定义的下半部接口,有 32 个,可以在所有处理器上同时执行,类型相同也可以;在编 译时静态注册。 软中断的相关函数: 注册软中断 open_softirq 触发软中断 raise_softirq 执行软中断 do_softirq

2025-01-19

Linux Kernel中的同步机制的介绍

既然是3条指令,那么就有可能并发,也就意味着返回的结果可能不说预期的。 然后在linux kernel的操作系统中,提供访问原子变量的函数,用来解决上述问题。其中部分原子操作的 API如下: atomic_read atomic_add_return(i,v) atomic_add(i,v) atomic_inc(v) atomic_add_unless(v,a,u) ldr x0, &a add x0,x0,#1 str x0,&a atomic_inc_not_zero(v) atomic_sub_return(i,v) atomic_sub_and_test(i,v) atomic_sub(i,v) atomic_dec(v) atomic_cmpxchg(v,old,new)

2025-01-19

linux kernel中的cmdline的详细介绍

1、向linux kernel添加cmdline的四种方式 在linux启动时候,串口log中会打印cmdline 在linux启动完成后,通过 cat /proc/cmdline也是可以看到cmdline. 那么cmdline是如何添加的呢? (1)、 在dts中的bootargs中添加 (2)、在BoardConfig中添加 vim device/xxx/xxx_evb/BoardConfigCommon.mk (3)、在uboot中添加 vim u-boot/common/cmd_bootm.c [ 0.000000] c0 0 (swapper) Kernel command line: earlycon androidboot.selinux=permissive uart_dma keep_dbgclk_on clk_ignore_unused initrd=0xd0000000,38711808 rw crash_page=0x8f040000 initrd=/recoveryrc boot_reason=0x2000 ota_status=0x1001

2025-01-19

《ATFopteehafniuminuxxen代码精读》

《ATFopteehafniuminuxxen代码精读》

2025-02-14

《optee系统开发精讲》

【学员收益】 1、全体系的掌握optee的核心知识点(多核多线程、启动流程、各类API、TA/PTA/STA、driver、service、各类设计思想、内存管理、中断管理…); 2、掌握TEE OS的设计核心思想(不限与optee,对其它TEE也是如此),能够进入软件架构层次的各项设计; 3、快速熟悉大系统软件的各项组件,能够进行大系统软件之间的设计或排查问题 4、学习和理解理解Armv8/Armv9架构、Trustzone架构 5、技术水平提升N个level, 掌握快速的学习方法;

2025-02-13

《飞书专栏-TEE文档》

《飞书专栏-TEE文档》

2025-02-13

《8天入门ARM架构》

《8天入门ARM架构》

2025-02-13

cache直播训练营回放+cacha专题-单售

cache直播训练营回放+cacha专题-单售

2025-02-13

《Android KeymasterKeymint精讲》

课程大纲: Keystore/Keystore2/keymaster/keymint的概念 keymaster/keymint的版本演进 keymint接口示例 Keystore/keymaster/keymint/Strongbox 软件框架 Keystore软件框架 Keystore算法使用示例 要求进行用户身份验证才能使用密钥 Keystore-strongbox 算法使用示例 AuthToken的使用示例 A/B System AVB 2.0 AVB需求和设计 RootOfTrust 定义 Root of trust binding ROT的介绍 版本绑定 Trusty CA和TA通信的定义 Trusty CA和TA的代码 Keymaster和keymint HAL接口定义 Android attestation Key Android RKP Keystore异常示例 strongbox........

2025-02-13

ATF系统安全从入门到精通

ATF系统安全从入门到精通

2025-02-13

Secureboot从入门到精通 训练营

【适用人群】 安全启动做为大系统启动中的重要环节,各类人群、各个方向的同学前来学习。 [行业]:汽车电子、手机、服务器、云计算、物联网、人工智能 行业的同学; [人群]:本科/研究生/博士、初级工程师、中级工程师、资深工程师、行业大佬,即适合小白入门,也适合大佬查缺补漏; 方向]:电子/计算机专业、芯片架构设计、芯片底层软件、芯片验证、BSP软件开发、内核驱动开发、固件开发、bootrom/bootloader开发、安全、虚拟化、大系统开发等; [行业链]:主机厂、OEM、OEM、tier1、SOC厂家、各级供应商;

2025-02-13

《optee系统架构从入门到精通》

optee的打印log是如何实现的? 在optee_os中的打印log函数是啥?有几种log输出级别控制?能否动态控制? 在TA中的打印log函数是啥?有几种log输出级别控制?能否动态控制? 那如何控制optee os的log输出呢?如何控制TA的log输出呢? 除了uart打印log方案,还有别的方案吗? uart打印log方案中,串口终端会不会出现乱码,如何解决呢? 在optee启动很早期的,uart driver还没初始化呢,这个时候如果需要看log有什么办法实现? 在TA中关闭log后,TA调用到optee_os后,optee_os的log级别是否受TA的trace_level控制? 在TA中控制log的输出,到底是怎样控制的?是靠宏比较?还是靠底层C语言代码检查flag? 如何自己实现一套TA log的输出机制?尽量不依赖平台、不依赖os。

2025-02-13

《optee入门实战版》

说明:trustzone/tee高配版、标准版、实践版,相互独立,互不包含、互不冲突。

2025-02-13

《aarch64汇编从入门到精通》-204页PPT+实验

【适用人群】 1、电子信息大类专业、计算机大类专业; 2、任何从事或想从事底层开发的; 3、嵌入式软件工程师 4、Linux内核驱动工程师 5、系统工程师、BSP工程师、驱动工程师 6、SOC/芯片底层软件开发者 7、汽车电子工程师 8、学生 … 9、既适合资深/高级工程师来查缺补漏,又适合初级工程师入门,也适合ASIC同事跨界学习,软硬件融合

2025-02-13

《8天入门TrustzoneTEE安全架构》

《8天入门TrustzoneTEE安全架构》

2025-02-13

学好ARM让领导刮目相看《Armv8Armv9架构从入门到精通(三期)》

5 课程大纲 ARM基础:Arm基础简介、ARM和SOC架构基本原理、ARM的4个异常等级4个安全状态2个执行状态、aarch64的重要寄存器、A64指令集 异常中断&gic:学ARM架构最重要的就是学习异常中断,异常中断是ARM架构的灵魂,学好异常中断再去学习其它模块,就像开挂。多系统、大系统之间的调用/切换靠着就是异常中断。 Trustzone:Trustzone安全架构是Armv8/Armv9架构中的重要一环,ARM架构中的每一个知识点都和安全有着密不可分割的关系,没有安全的学习是不完整的学习。 虚拟化:虚拟化也是ARM架构中的重要组成部分,虚拟化不仅仅是hypervisor,虚拟化不仅仅是normal world侧才有,在安全侧也有虚拟化。 Cache:在工程实践中,我们所遇到的最难的问题、超低概率性的问题,80%以上都是和cache相关的。cache做为ARM架构中最难的一个模块,我们有必要花时间将这部分学透学精,学通后你将信息满满、自信爆棚。 MMU:MMU做为ARM架构中最简单的一个模块,对于软件工程师几乎是透明的,MMU模块的学习是最具有性价比的一个知识点,花

2025-02-13

飞书知识库文档-Arm专栏

我们有短域名,http://armdoc.hehezhou.cn,好记,在公司摸鱼学习更方便。 我们有讨论群、课程群等,交流/沟通/学习更方面。 我们开通权限更方便。不用要求您加入组织,也不用互加飞书好友。仅仅要求您扫码入飞书群,就可以自动获取权限。

2025-02-13

《Android13安全架构详解》

课程介绍 讲解最新最全的Android安全架构,本课程包含但不限于以下课程: 密码锁/locksetting/gatekeeper 生物认证/指纹/人脸 keystore/keystore2/keymaster/keymint googlekey/attestationKey cts/vts/CDD解读 代码导读、流程分析 安全业务的设计 TEE简介

2025-02-13

《CATA开发从入门到精通》

【课程大纲】 从无到有编写代码,已完成的大纲如下: 2秒钟快速编写(clone)一组CA/TA程序 安全存储详解以及代码示例 CA到TA双向传参数的四种方式(value、temref、memref),区别?优缺点? 对称密码学算法aes的使用,CBC/ECB/CTR/XTS分组密码的使用,加密解密,pending等 aeskey的操作,如何随机生成aeskey(TEE_GenerateKey),objectHandle和aesbuf有什么区别?如何将handle 认证加密算法,如aes-GCM的使用 非对称密码学算法RSA的使用,包括加密、解密、签名、验签 RSA key的处理,包含如何生成RSA KEY,rsakey object如何转换成可见的数组,如何转换der,如何转换pem,反向又如何转换 ECC/ECDSA的使用 国密sm2 sm3 sm4的使用. 其中sm4包含加密、解密、签名、验签等 encode和decode的实现 TA属性的定制以及API的使用

2025-02-13

《CoresightTraceDebug大合集》64节课16小时,6大主题, 685页PPT

《CoresightTraceDebug大合集》64节课16小时,6大主题, 685页PPT

2025-02-13

《Arm架构-功耗管理精讲与实战》

目录 1、功耗管理背景及挑战 2、功耗管理架构演进及变迁 3、系统分区-电压域和电源域 4、功耗状态及功耗模式 5、功耗管理框架-SCP&PPU&LPI 6、功耗管理软件 7、功耗管理标准接口 8、多核处理器启动 9、睡眠锁与唤醒源 10、功耗管理实战 11、功耗数据与功耗收益评估 12、功耗管理与安全

2025-02-13

《Android15安全架构课程》

2025-02-13

《TrustzoneTEE安全从入门到精通-高配版》

【课程大纲】 (课程目标) 最快速地了解,SOC安全架构、Arm安全架构、Trustzone/TEE分别是什么?应用场景是怎样的? 1、知道我学习什么,我要怎么去学习,从此之后有了一个明确的学习路线。 2、认识一些共同目标的人,相互讨论问题,共同进步。勤学、共学、助学。 3、ARM不再神秘,SOC不在神秘,安全架构不再神秘,Trustzone不在什么,TEE不在神秘,让您短期内就能cover住全局 4、助你技术能力大大提升,质地飞跃,跨级飞跃。 5、有了这些基础知识后,市面上出现的任何SOC、任何软件架构,你都不在害怕,都能在短时间内快速上手。

2025-02-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除