自定义博客皮肤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

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

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

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

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

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

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

2020-06-30 10:57:13 35367 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 23196 11

原创 86-地址转换单元规范

本文档详细介绍了Arm®地址转换单元(ATU)的规范,包括其功能、编程模型和硬件接口。ATU实现了子系统逻辑地址(LA)到系统物理地址(PA)的转换,支持4KB-16KB页面大小和32-64位物理地址宽度。文档描述了ATU的拓扑结构、地址转换方案、寄存器配置选项及中断处理机制,并提供了相关术语解释和示例说明。ATU包含APB4编程接口、AXI从属接口和管理接口,支持1-32个转换区域配置,通过寄存器控制地址转换过程并处理不匹配错误。最后列出了ATU的寄存器摘要及其功能描述。

2025-10-11 14:30:00 90

原创 101-ARM同步原语开发指南

本文探讨了ARM架构中的硬件同步原语及其应用。主要内容包括:ARMv6引入的LDREX/STREX独占访问指令及其在多核系统中的使用,对比传统SWP指令的局限性;介绍了互斥锁、信号量等同步原语的实现方法,并提供了具体代码示例;分析了内存屏障、节能特性(WFI/WFE)等系统级考量。文章强调从ARMv6开始应使用新的独占访问机制替代传统SWP指令,以支持更高效的多核同步。附录补充了SWP指令的历史背景和修订记录。

2025-10-11 13:45:00 90

原创 45-Arm 机密计算架构详解

摘要 本指南详细介绍了Arm机密计算架构(Arm CCA)如何通过硬件和软件实现保护数据安全执行。Arm CCA通过领域管理扩展(RME)和领域管理监视器(RMM)创建隔离的Realm执行环境,与正常世界、安全世界和Root世界分离。Realm提供机密性和完整性保护,使应用程序无需信任底层基础设施即可安全运行。相比TrustZone,Arm CCA支持动态创建/销毁Realm,具有独立的信任链,适用于云环境等需要高安全隔离的场景。关键创新包括四世界隔离架构、硬件强制内存管理以及RMM固件协同管理机制。

2025-10-11 13:00:00 85

原创 44-复杂软件的保护机制

本文概述了复杂软件栈面临的常见攻击形式及防护机制。首先介绍了栈粉碎攻击及其防御手段——执行权限控制,通过设置转换表中的权限位阻止恶意代码执行。随后详细阐述了返回导向编程(ROP)攻击原理,即利用现有代码片段(gadget)构建恶意程序,并提出指针认证(PAC)解决方案,通过为返回地址添加签名来验证代码合法性。此外还分析了跳转导向编程(JOP)攻击,其通过篡改间接分支目标实现攻击。文章还提及内存标签技术可检测缓冲区溢出等内存安全问题。最后介绍了架构提供的分支目标识别等特性,以及相关指令集扩展和启用方法。这些防

2025-10-11 12:45:00 44

原创 42-安全世界中使用虚拟化的隔离

Armv8.4架构引入安全EL2扩展,为安全世界提供虚拟化支持。该白皮书分析了TrustZone面临的挑战:可信应用生态碎片化、多供应商代码集成困难、最小权限原则缺失等。安全EL2通过第二阶段地址转换实现硬件隔离,支持构建安全分区架构。关键组件包括安全分区(托管可信OS或驱动程序)和安全分区管理器(SPM),通过资源描述清单实现隔离与资源分配。这种架构为PSA固件框架奠定基础,解决了组件隔离、权限控制和标准化接口等问题。

2025-10-11 12:15:00 35

原创 102-同步原语指南

本文介绍了ARM架构中多线程系统的资源访问控制机制,重点分析了基于独占访问指令的同步原语实现。文章首先阐述了多线程环境下共享资源访问的互斥需求,随后详细讲解了独占加载(LDXR/LDREX)和存储(STXR/STREX)指令的工作原理,以及它们在简单锁实现中的应用。文中还解释了本地和全局两种独占监视器的状态机机制及其对不同内存类型的处理方式。最后,探讨了节能锁优化技术,包括WFE/WFI指令的使用以及清除全局监视器自动唤醒机制。这些硬件特性为ARM架构提供了高效的并发控制支持。

2025-10-11 08:02:11 26

原创 43-安全介绍指南

本文介绍了Arm安全计算平台中的核心安全概念。文章首先定义了安全的核心属性:机密性(控制访问权限)、完整性(防止数据篡改)、真实性(验证来源)和可用性(确保正常访问)。随后将攻击分为三类:软件攻击(无需物理接触)、基本硬件攻击(需要简单工具)和高级硬件攻击(需专业设备)。文章强调威胁模型的重要性,需综合考虑资产价值、攻击者类型和防御成本,并指出安全设计应平衡防护强度与实用性。最后推荐了Arm相关技术文档和后续学习路径,包括TrustZone技术和软件攻击防护方案。

2025-10-11 08:00:41 33

原创 41-安全软件编程指南

TrustZone是Armv8-M架构的安全扩展技术,通过划分安全世界与普通世界实现系统隔离。安全软件可访问全部资源,普通软件仅限非安全内存。关键机制包括:SG指令(非安全→安全切换)、BXNS/BLXNS指令(安全→非安全切换),以及必须置于非安全可调用(NSC)内存的安全网关veneer。开发需注意:1)安全代码需清除敏感寄存器防泄漏;2)非安全函数调用需声明特殊属性;3)工具链需支持CMSE扩展。该技术通过硬件级隔离和标准化调用规范,为嵌入式系统提供灵活的安全方案。

2025-10-11 07:59:51 38

原创 100-内存系统、排序与屏障指南

本文介绍了Armv8-A架构的内存排序模型和屏障机制。主要内容包括: Armv8-A采用弱有序内存架构,允许无依赖关系的访问重排序,但需保持地址依赖访问的顺序。 提供了三种内存屏障: DMB(数据内存屏障):防止指定访问类型重排序 DSB(数据同步屏障):确保屏障前所有访问完成 ISB(指令屏障):实现上下文同步 屏障可限定作用范围和访问类型,如仅对加载或存储操作有效。 介绍了加载获取(LDAR)和存储释放(STLR)指令及其组合使用,以及Armv8.1-A新增的有限排序区域功能。 解释了观察者概念和访问完

2025-10-10 19:15:00 42

原创 85-AArch64内存属性与特性指南

《AArch64内存属性与特性指南》摘要 本指南由Arm Limited发布,详细介绍了Armv8-A和Armv9-A架构中的内存属性和特性。文档分为16章,涵盖内存类型(普通内存与设备内存)、缓存属性、访问权限、对齐要求等核心概念。重点内容包括: 内存分类:普通内存用于RAM/ROM等,支持访问优化;设备内存用于外设,禁止缓存和推测访问。 设备子类型:四种变体(如Device-nGnRnE)定义不同的聚集、重排序和写入确认规则。 属性管理:通过转换表条目控制,包括执行权限(UXN/PXN)、访问标志(AF

2025-10-10 18:15:00 30

原创 90-SMMU 软件指南

本文介绍了Arm系统内存管理单元版本3(SMMUv3)的核心功能与操作机制。SMMUv3通过地址转换、访问保护和设备隔离三大功能,为I/O设备提供类似CPU MMU的内存管理服务。其工作流程包括流识别、安全状态判定和多级地址转换(支持旁路模式),通过流表(STE)和上下文描述符(CD)实现灵活配置。架构支持ATS加速转换和PRI分页机制,采用事件队列处理故障,并提供线性/两级流表结构以适应不同规模系统。各安全状态(非安全/安全/领域)拥有独立寄存器空间,通过StreamID区分设备流量,SubstreamI

2025-10-10 18:15:00 41

原创 84-地址转换指南

本文介绍了Arm架构中的内存管理单元(MMU)及其地址转换机制。MMU通过转换表将虚拟地址映射为物理地址,支持多任务隔离运行。Armv8-A采用两级转换表基址寄存器(TTBR0/1_EL1),分别管理内核与应用地址空间,并通过颗粒大小、缓存策略和访问权限等配置优化性能。文章还探讨了安全/非安全地址空间、两阶段转换、TLB管理及上下文切换等关键功能,为操作系统提供灵活的内存管理支持。

2025-10-10 17:45:00 21

原创 83-内存管理示例指南

本文介绍了在裸机环境下配置内存管理单元(MMU)的示例指南,重点展示了单级转换表的设置方法。示例基于A64汇编器,使用4KB粒度,通过配置转换表基址寄存器(TTBR0_EL3)、内存属性间接寄存器(MAIR_EL3)和转换控制寄存器(TCR_EL3)来实现虚拟地址的平面映射。文章详细说明了如何初始化转换表、设置内存属性以及生成转换表条目,覆盖了前3GB地址空间的配置。该示例适用于理解MMU基础工作原理,但不涉及操作系统层的MMU使用场景。

2025-10-10 17:00:00 31

原创 82-内存模型指南

Armv8-A内存模型指南摘要: 本文介绍了Armv8-A架构中的内存模型,涵盖内存类型、访问属性和排序规则。内存分为普通内存(RAM/ROM)和设备内存(外设),各有不同访问特性。普通内存允许访问合并和重排序,而设备内存严格限制访问顺序以防止副作用。关键属性包括可共享性(SH)、权限(AP)和执行控制(UXN/PXN),通过转换表配置。MMU禁用时默认采用严格设备内存规则。内存排序需考虑处理器优化行为,必要时使用屏障指令。权限属性控制读写/执行访问,并支持特权级隔离。Armv8.1-A新增硬件管理的访问标

2025-10-10 16:30:00 33

原创 81-内存系统深度解析

本文介绍了ARMv8-A架构的内存系统特性,重点分析了内存模型、类型、属性和屏障机制。内容涵盖:1)弱有序内存模型及其在多核环境下的重要性;2)普通内存与设备内存的差异及四种设备内存类型;3)内存属性对缓存、共享性和访问权限的控制;4)三种屏障指令(ISB/DSB/DMB)的作用及使用场景。文章指出,在操作系统、驱动开发等底层编程中,理解这些机制对保证内存访问正确性至关重要,同时强调了合理使用屏障指令以避免性能损失的必要性。(149字)

2025-10-10 16:00:00 34

原创 80-内存管理架构指南

Armv8-A内存管理机制解析:虚拟地址转换与TLB维护 本文介绍了Armv8-A架构中的内存管理机制,重点阐述了虚拟地址到物理地址的转换过程。通过多级转换表(最多4级)实现地址映射,支持不同大小的内存块管理,平衡效率与灵活性。Armv8-A采用独立的虚拟地址空间设计,支持安全与非安全模式,并通过两阶段转换(阶段1由OS控制,阶段2由虚拟机监控程序控制)实现虚拟化。虚拟地址空间可配置为最大52位,物理地址则由具体实现定义(最大52位)。关键组件包括内存管理单元(MMU)、转换后备缓冲区(TLB)和表遍历单元

2025-10-10 15:15:00 32

原创 70-架构虚拟化技术指南

本文详细介绍了AArch64架构的虚拟化机制,包括基础概念和具体实现。主要内容包括:虚拟化的类型(独立与托管式、全虚拟与半虚拟化)、AArch64特有的第二阶段地址转换、虚拟异常处理、指令陷阱机制以及虚拟定时器等关键功能。文章还探讨了虚拟化主机扩展(VHE)、嵌套虚拟化、安全虚拟化等高级特性,并分析了虚拟化性能成本。最后通过问答形式检验知识点,帮助读者理解Type1/2虚拟机监控程序区别、IPA空间、虚拟中断处理等核心概念。全文系统性地呈现了AArch64虚拟化技术栈,适合具备虚拟化基础的开发者深入学习。

2025-10-10 14:45:00 33

原创 62-通用中断控制器虚拟化架构解析

本文详细介绍了Arm架构中GICv3和GICv4对虚拟化中断的支持机制。GICv3通过CPU接口硬件虚拟化、虚拟中断生成和管理能力实现基础虚拟化支持,包括寄存器分类、虚拟中断管理、维护中断和上下文切换等。GICv4.1在此基础上增加了虚拟中断直接注入功能,通过再分配器、门铃机制和ITS等技术减少虚拟机监控程序介入,降低虚拟化开销。文章还分析了GICv3.1的安全虚拟化特性以及GICv4.1对vSGI直接注入的支持,并通过示例代码展示了vLPI配置过程。最后提供了知识检测问题帮助理解关键概念。

2025-10-10 14:30:00 33

原创 51-AArch64异常与中断处理指南

本文深入解析ARMv8/Armv9架构中的异常与中断机制。首先介绍了异常的基本概念,包括中止、复位、异常生成指令和中断等类型。重点区分了同步异常(由指令直接引发)和异步异常(如IRQ、FIQ中断),并详细说明异常处理流程:处理器会自动保存状态到SPSR_ELn和ELR_ELn寄存器,然后跳转到对应异常级别的向量表。异常向量表采用16条目结构,每个条目对应不同异常类型和执行状态组合。文章还提供了异常处理程序示例代码,展示如何实现非嵌套和嵌套中断处理。最后解释了异常返回机制和处理器状态变化规则,为理解ARM架构

2025-10-10 14:00:00 31

原创 46-Arm机密计算架构软件栈解析

Arm机密计算架构(Arm CCA)通过引入Realm保护型虚拟机,在硬件和软件协同下实现数据使用中的安全保护。核心组件包括运行在EL3的Monitor和执行在R-EL2的领域管理监控器(RMM),后者负责管理Realm生命周期和资源。主机保留资源控制权,通过RMI/RSI接口与Realm交互。Realm创建时需经过内容测量和认证激活流程,内存管理采用两阶段转换机制。该架构通过最小化信任基和复用现有技术,在保障安全性的同时降低移植复杂度,为机密计算提供了创新解决方案。

2025-10-10 13:45:00 37

原创 71-虚拟化技术指南

ARM虚拟化技术文档概述(2017版)总结了ARM架构的虚拟化实现方案。文档介绍了两种管理程序类型(裸机型与托管式)及其应用场景,重点阐述了管理程序的11项核心功能,包括内存管理、设备模拟/分配、异常处理等关键技术。通过专用硬件扩展(如EL2异常级别、两阶段内存转换)实现多操作系统共享硬件资源的能力,同时保持各系统的独立性。文中还提供了AArch64架构下的寄存器配置示例代码,并详细说明了通过HCR_EL2控制寄存器实现异常捕获和指令拦截的机制。该技术仅支持非安全状态,与TrustZone安全环境形成互补。

2025-10-10 09:34:57 35

原创 50-异常模型指南

本文深入介绍了Armv8-A架构中的异常处理机制,重点解析了特权模型、异常级别和执行状态。主要内容包括:1)Armv8-A通过异常级别实现资源隔离,EL0-EL3分别对应不同特权级别;2)处理器支持AArch32和AArch64两种执行状态及安全/非安全状态切换;3)异常分为同步异常(指令相关)和异步异常(外部中断);4)异常处理流程涉及状态保存、向量表跳转和栈切换;5)向量表由VBAR_ELx寄存器定位,包含异常处理程序入口。本文为低级代码开发人员提供了异常处理机制的系统性指导,适用于启动代码、驱动程序等

2025-10-10 09:33:31 30

原创 61-通用中断控制器v3和v4:LPIs详解

GICv3/v4中的局部特定外设中断(LPIs)是一种新型中断,其配置管理与其他中断不同。LPIs通过中断转换服务(ITS)将外设的MSI转换为中断,状态信息存储在内存表中而非寄存器中。Redistributor使用LPI配置表和挂起表管理中断,ITS则通过设备表、中断转换表和集合表实现中断路由。配置过程包括初始化内存结构、设置寄存器指针和启用LPI处理。软件可通过命令队列更新映射,并支持中断在Redistributor间的迁移。本指南提供了LPIs的详细配置方法和裸机代码示例。

2025-10-10 09:32:53 26

原创 11.7-CHI外设端口属性解析

摘要:CHI外设端口的读写能力取决于DSU-120配置,最高可达128个并发事务。关键特性包括:1)读写能力由L3缓存切片数量决定;2)集群总能力=硬件线程数×L3切片数;3)高性能核心比平衡核心产生更多事务;4)设备/不可缓存事务能力低于可缓存事务;5)采用12位事务ID和11位节点ID,且无ID重用机制。事务源编码详见文档LPID字段说明。

2025-10-09 19:00:00 36

原创 11.8-CHI外设端口接口特性解析

AMBA CHI接口特性在DynamIQ™ DSU-120集群中仅部分支持。该集群支持Atomic_Transactions、Cache_Stash_Transactions等特性,但需互连支持;不支持Data_Check和CCF_Wrap_Order特性。增强功能中支持从SC状态返回数据,但不支持ROMI/ROCI事务。端口最大支持52位地址、11位节点ID和256位数据宽度。具体特性支持取决于BROADCASTATOMIC等信号状态及互连配置。

2025-10-09 18:00:00 41

原创 11.9-DynamIQ™ Shared Unit-120 技术解析

摘要:DSU-120的CHI外设端口支持多种原子操作、缓存维护指令和一致性事务处理,包括MTE标签读取、ACP事务等特性。该端口支持超过30种CHI事务类型,涵盖原子指令、缓存维护、预取操作等,同时明确标注了不支持的事务类型。读写事务支持表详细列出了每种事务的操作描述和DSU-120的支持情况,为系统设计提供了重要参考。

2025-10-09 17:15:00 48

原创 11-AXI或CHI主设备外设端口解析

DynamIQ™ Shared Unit-120的外设端口提供双重功能:既可编程外设寄存器,也可作为替代主端口优化系统性能。该端口支持多种配置选项,包括64位/256位AXI5或CHI协议接口,能在构建时灵活选择。通过替代主端口设计,可显著降低DRAM访问延迟,提升整体系统效率。具体配置需参考相关技术手册,其协议和一致性设置可根据需求调整。

2025-10-09 17:00:00 30

原创 12.1-DSU-120 RAS扩展支持解析

DynamIQ™ DSU-120芯片通过ECC和SECDED机制实现多级缓存保护,支持单比特错误纠正和双比特错误检测。不同RAM类型采用定制化保护方案,包括L3缓存、标签RAM等。遇到不可纠正错误时,系统会采取数据中毒或行无效化等处理,并触发不同级别中断。软件可配置互连中毒支持功能,增强系统容错能力。该机制有效提升了芯片的可靠性和可用性。

2025-10-09 16:30:00 32

原创 12.2-12.3-DSU-120 错误处理机制解析

DynamIQ™ DSU-120的错误处理机制主要包括错误遏制和多层次中断报告功能。系统通过毒化处理双重错误,并支持ESB指令隔离异常。当检测到故障时,会触发三种中断:故障处理中断(FHI)处理延迟/未纠正错误,错误恢复中断处理未延迟错误,严重错误中断处理关键故障。所有中断状态可通过ERR0STATUS寄存器清除。该设计通过错误遏制和分类中断机制,有效提升系统可靠性。

2025-10-09 15:45:00 37

原创 12.4-错误检测与报告机制解析

DSU-120的错误处理机制通过专用寄存器(如CLUSTERRAS_ERR0STATUS)和中断(ERI)实现错误检测与恢复。支持多种错误场景处理,包括数据RAM错误驱逐、标签错误、ACP访问错误等,并可能触发双重错误报告。性能监控单元(PMU)会计数MEMORY_ERROR事件,但每个周期最多记录一个错误。ECC错误可能导致两阶段报告,产生延迟或不可遏制错误记录,具体表现取决于错误类型和目标支持情况。安全状态下需启用SPME才能计数错误事件。

2025-10-09 14:45:00 35

原创 12.5-错误注入机制解析

错误注入是一种通过伪错误测试系统错误检测机制的方法,不会损坏硬件。DSU-120支持可纠正错误、延迟错误和不可控制错误三种类型,通过控制寄存器实现立即或定时触发。伪错误可经由侦听过滤器RAM或长期数据缓冲区RAM读取触发,主要用于验证错误处理软件的可靠性。该机制仅生成错误报告,不造成实际硬件故障。

2025-10-09 14:00:00 34

原创 12.6-电源转换期间的ECC错误

摘要:集群断电时若RAS寄存器报告ECC错误(可能发生在软件序列或L3缓存清理阶段),将触发中断信号并阻止断电。处理流程包括:1)断言核心/集群的中断信号(ERRIRQ/FAULTIRQ/CTITIRQ);2)拒绝PPU的OFF模式请求;3)唤醒核心或从复位向量重启。该机制通过中断电源转换确保系统稳定性,防止在存在内存错误时进入低功耗状态,保障数据完整性。错误信息会记录在RAS寄存器中,但断电后将无法访问。(148字)

2025-10-09 13:45:00 35

原创 13.1-实用总线访问解析

实用总线事务基于AXI 5协议子集,仅支持32/64位访问(否则响应SLVERR)和单拍突发。推荐配置包括非独占访问和特定缓存属性。部分系统寄存器需通过互连环回访问,核心无法直接访问。电源控制单元(PPU)寄存器在集群/核心断电时仍可访问,其他寄存器在断电时视为RAZ/WI。总线支持同时处理2个事务(读/写各1个)。

2025-10-09 13:00:00 36

原创 12.7-集群RAS寄存器解析

本文介绍了集群可靠性、可用性和可服务性(RAS)寄存器的访问机制和限制。这些寄存器可通过内存映射或系统寄存器访问,但必须从安全地址空间访问。当寄存器被标记为保留、在错误安全状态下访问或访问未记录地址时,将被视为RAZ/WI。特别指出,当启用领域管理扩展(RME)或DSU-120配置为直接连接时,所有集群RAS寄存器均不存在。文中详细列出了AArch64和外部集群RAS寄存器的汇总表,包括寄存器名称、复位值、宽度等信息,并强调这些寄存器在直接连接模式下均不存在。

2025-10-09 12:15:00 35

原创 13.2-系统组件基地址解析

DSU-120架构采用64KB独立页面边界组织系统寄存器,通过MMU实现高效访问控制。核心特性包括:基于核心实例号的PPU寄存器基址、RAZ/WI未定义地址处理、需计算绝对物理地址的实用总线接口。寄存器安全状态取决于RME支持情况,直接连接配置时支持根状态增强安全隔离。寄存器分为集群控制、MPAM、RAS等类型,分布在特定地址范围,核心寄存器映射详见技术手册。该设计优化了内存管理,强化了系统安全性和稳定性。

2025-10-09 12:00:00 34

原创 13-Utility Bus 功能解析

Utility Bus是DynamIQ™ DSU-120中的64位AMBA AXI5总线,提供对系统控制寄存器的内存映射访问。它支持电源管理(PPU)、性能监控(AMU)、错误处理(RAS)、内存分区(MPAM)等核心与集群级功能。该总线统一了多核系统的管理接口,通过寄存器配置实现电源策略、活动监控和功率控制等功能,相关技术细节可参考各组件手册。

2025-10-09 10:45:00 39

原创 14-DSU-120系统控制寄存器解析

本文介绍了DynamIQ™ DSU-120的系统控制寄存器,这些64位寄存器用于控制和监控集群功能,支持电源管理、缓存控制及性能监测。可通过核心系统寄存器或工具总线访问,包含L3缓存阈值调节、QoS控制等专用寄存器,但部分寄存器在直接连接中不可用(视为RAZ/WI)。寄存器列表详细展示了各控制器的功能、复位值及访问方式,为系统调试和优化提供了重要接口。

2025-10-09 10:00:00 35

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

Linux Kernel中spinlock的设计与实现

(1)、spinlock的核心字段有owner和next,在初始时,owner=next=0 (2)、当第一个进程抢占spinlock时,会在进程函数本地保存下next的值,也就是next=0,并 将spinlock的next字段加1; (3)、当获取spinlock的进程的本地next和spinlock的owner相等时,该进程就获取到spinlock; (4)、由于第一个进程本地的next=0,并且spinlock的owner为0,所以第一个CPU获取到 spinlock; (5)、接着当第二个进程抢占spinlock,此时spinlock的next值为1,保存到本地,然后将 spinlock的next字段加1。而spinlock的owner字段依然为0,第二个进程的本地next 不等于 spinlock的owner,所以一直自旋等待spinlock; (6)、第三个进程抢占spinlock,得到本地next值为2,然后将spinlock的next字段加1。此时 spinlock的owner字段还是为0,所以第三个进程自旋等待。

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

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让领导刮目相看《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

《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关注的人

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