ARM
文章平均质量分 87
ARM
狂奔的乌龟
1、博客介绍:专注分享ARM Trustzone/TEE/Linux/嵌入式等领域知识,大部分是个人学习笔记,关注我,一起学习!希望在这里能和大家一起进步,星光不负赶路人,加油!
2、个人介绍:ARM/TEE/Linux等领域忠实爱好者,个人长期专注于硬件安全、系统安全、嵌入式领域安全开发工作。
3、个人语录:积累是一个漫长的过程,未来很长,一起努力,只要路是对的,就不怕路远。
4、招聘广告:目前在国内大厂上班,长期招聘高级别&有经验的硬件安全、系统安全、嵌入式底层软件架构师&SE&MDE,寻求志同道合有志之士,有意向可私信我。
展开
-
ARM系列之MMU TLB和ASID基础概念介绍。
通常情况下,在使用 Cortex-A 系列处理器的时候,典型场景是跑多任务 OS;每一个任务(或者成为应用),都有它独立的虚拟地址空间,以及他的独立的 Translation Table;但是对于 OS 来说,Kernel 的 Translation Tables 其实是固定的,只是进程之间的 Translation Tables 不一样而已;当一个进程启动的时候,OS 负责为他 code 和 data 段建立映射表(Translation Tables);原创 2022-12-18 21:40:36 · 1984 阅读 · 0 评论 -
ARM系列之ARM hint instruction以及WFI补充
NOP // No operation,无操作, 不保证CPU会花时间去执行 YIELD // 提示当前线程正在执行可以换出的任务 WFE // Wait for Event,进入low power状态,直到等待的事件发生 WFI // Wait for interrupt,进入low power状态,直到等待的中断或与中断类似的操作发生 SEV // Send Event,发送事件,与WFE对应 SEVL // Send Event Local,发送本地事件,与WFE对应。原创 2022-12-09 08:00:00 · 1592 阅读 · 0 评论 -
Armv8-R系列之Device_nGnRnE属性是什么?
`Device` 后面的字母代表属性的组合:- `Gathering (G, nG)` 这指定了可以合并(`G`) 或不合并(`nG`) 访问。 这可能是将对同一位置的多个访问合并为一个访问或合并多个较小的访问 访问到一个更大的访问。- `Re-ordering (R, nR)` 这指定对相同外设的访问可以重新排序(`R`) 或不重新排序`(nR)`。 当允许重新订购时,同样的限制以同样的方式适用于`normal memory`。- `Early Write Acknowledgement (E, n原创 2022-09-25 08:47:00 · 1831 阅读 · 0 评论 -
Armv8-R系列之何为MPU?
Arm PMSA基于提供内存保护方案的内存保护单元 (MPU)。这PMSA在PE访问的虚拟地址 (VA) 和 32 位物理地址之间使用线性映射(PA) 在内存系统中访问。也就是说,对于所有访问,VA与PA相同/等价。PMSA主要简化的地方就是。原创 2022-09-18 10:52:29 · 1716 阅读 · 0 评论 -
ARM系列之ARM多核指令WFE、WFI、SEV原理
WFI和WFE都是Cortex内核进入低功耗的指令,WFI()和WFE(),如果仅仅从字面去理解,一个是中断(int)唤醒,一个是事件(event)唤醒,完美!但是,中断是什么,好理解,那事件是什么?中断算一个事件吗?WFE等待的事件是从哪里来的?内核为啥要分WFI和WFE?是不是有点懵!WFE和WFI都是用来让内核进入低功耗的,中断和事件都可以唤醒内核。WFE还会受控于一个,此寄存器软件不可访问。此功能时为多核而准备的。WFE在为0,或为1时,其功能是不一样的。WFE的E就是指这个事件寄存器。原创 2022-09-12 08:12:07 · 6713 阅读 · 0 评论 -
Armv8-R系列之ARM Cortex-R52 由来
Cortex-R52 是 Cortex-R 系列中最先进的处理器,可提供实时功能安全性能。作为第一款 Armv8-R 处理器,Cortex-R52 引入对虚拟机管理程序的支持,通过强大的分离来简化软件集成以保护安全关键代码,同时保持高要求的实时确定性操作可靠的控制系统。Cortex-R52 解决了一系列应用,例如高性能域用于车辆动力总成和底盘系统的控制器或作为安全岛提供在复杂的 ADAS 和自动驾驶系统中提供保护。...原创 2022-08-28 15:27:35 · 5407 阅读 · 2 评论 -
ARM GIC(六) GIC V3 电源/功耗管理 分析笔记。
目录背景介绍Redistributor系统位置系统上电,CPU如何与GIC redistributor connectGICR_WAKER寄存器上电流程,行为描述系统下电,CPU如何与GIC redistributor disconnect下电流程,行为描述背景介绍GIC电源管理,ARM官方手册,只有一页描述:值得注意的是:1、在符合GICv3体系结构的实现中,CPU接口和PE必须位于同一个位置power domain,但它不必与关联的Redistributor所在的power domain相同。这原创 2022-02-20 11:18:39 · 1250 阅读 · 21 评论 -
ARM GIC(五) ARM TrustZone如何支持安全中断 分析笔记。
前几篇博文主要梳理了GIC V3架构基础,中断全生命周期,以及中断IRQ、FIQ基础概念。那在ARM TrustZone是如何支持安全中断的呢?ARM TrustZone一个非常大的优势就是很容易管理外设,管理外设包含了:外设访问权限,外设作为Master时怎么发出安全访问或非安全访问,以及外设如何产生安全中断,以及CPU如何响应这个中断等。我们今天主要介绍如何产生安全中断,由三个部分来参与:安全外设,GIC,以及CPU。CPU是如何支持安全中断的?对于CPU本身来说对中断是安全还是非安全是无感知的,原创 2022-02-13 22:31:28 · 3936 阅读 · 0 评论 -
ARM GIC(四) GIC V3 中断线映射&关键寄存器配置 分析笔记。
目录中断生命周期GIC寄存器中断生命周期generate:外设发起一个中断distribute:distributor对收到的中断源进行仲裁,然后发送给对应的cpu interfacedeliver:cpu interface将中断发送给coreactivate:core通过读取 GICC_IAR 寄存器,来对中断进行认可priority drop: core通过写 GICC_EOIR 寄存器,来实现优先级重deactivation:core通过写 GICC_DIR 寄存器,来无效该中断原创 2022-02-12 18:05:26 · 2191 阅读 · 0 评论 -
ARM GIC(三) GIC V3 Handling Interrupts学习笔记。
目录Handling Interrupts5.1 What happens when an interrupt becomes pending(中断什么时候变成挂起状态)5.2 Interrupt acknowledge(中断响应)5.3 Spurious interrupts(伪中断)5.4 Running priority & preemption(优先级和抢占)5.5 End of interrupt(中断处理)中断如何上报呢?Handling Interrupts5.1 What hap原创 2022-01-26 21:54:09 · 1115 阅读 · 0 评论 -
机密领域管理扩展技术(RME)对TF-A的修改分析笔记。
FEAT_RME(简称RME)是Armv9-A扩展,是Arm机密计算架构(Arm CCA)的一个组件。TF-A 从版本 2.6 开始支持 RME。本章尝试分析TF-A为了支持 RME。下图显示了以 TF-A 作为 EL3 固件的 Arm CCA 软件架构。在 Arm CCA 体系结构中,还有两个额外的安全状态和地址空间:和 。TF-A 固件在根世界中运行。在 Realm 世界中,Realm 管理 Monitor 固件 (RMM) 管理 Realm VM 的执行及其与虚拟机管理程序的交互。Root和Real原创 2022-01-21 23:09:15 · 1404 阅读 · 0 评论 -
ARM GIC(二) GIC V3 configuration学习笔记。
目录4、GICv3 configuration4.1 Global settings4.2 Individual PE settings4.2.1 redistributor 设置4.2.2 cpu interface 配置4.2.3 PE configuration 处理器设置4.3 SPI, PPI and SGI configuration中断配置注意事项4、GICv3 configuration4.1 Global settingsGICD控制寄存器(GICD_CTLR)必须配置为使能中断组和原创 2022-01-21 21:43:38 · 920 阅读 · 0 评论 -
ARM GIC(一) GIC V3架构基础学习笔记。
文章目录1、Terms and Abbreviations2、Introduction2.2 Brief history of the GIC architecture3、GICv3 fundamentals3.1.1 ARM 中断类型3.1.2 Interrupt Identifiers3.2 Interrupt state machine3.2.2 Edge-triggered(边沿触发处理)3.3 Affinity routing(亲和路由)3.4 Security model3.4.1 Impact原创 2022-01-16 13:32:42 · 3386 阅读 · 3 评论 -
Arm v9 “机密计算架构(CCA)” 中机密领域管理扩展技术(RME)是什么?
在基于v9- A架构的处理器其中,Arm将提供CCA机密运算架构,根据Arm开发者网站公布的架构安全功能列表来看,CCA预计包含两大部分,一是机密领域管理延伸技术(Realm Management Extension,RME),另一是Arm机密运算固件架构(Arm Confidential Compute Firmware Architecture)。本文主要介绍RME 硬件架构。原创 2021-12-12 20:19:34 · 2149 阅读 · 0 评论 -
CPU Cache知识介绍
CPU Cache基础知识缓存的命中缓存的一致性基础知识首先,我们都知道现在的 CPU 多核技术,都会有几级缓存,老的 CPU 会有两级内存(L1 和 L2),新的CPU会有三级内存(L1,L2,L3 ),如下图所示:其中:L1 缓存分成两种,一种是指令缓存,一种是数据缓存。L2 缓存和 L3 缓存不分指令和数据。L1 和 L2 缓存在每一个 CPU 核中,L3 则是所有 CPU 核心共享的内存。L1、L2、L3 的越离CPU近就越小,速度也越快,越离 CPU 远,速度也越慢。再往后面原创 2021-12-07 22:53:33 · 2151 阅读 · 0 评论 -
Arm v9“机密计算架构(CCA)” 能实现什么?
ARM V9机密计算 机密计算:下一个安全处理的时代Arm CCA:随时随地保护数据与代码赋能所有开发者访问的安全功能放眼未来:广泛适用于所有工作负载在过去的几年里,我们已经看到安全性和硬件安全漏洞成了科技新闻中最受关注的内容之一。许多漏洞,例如 Spectre、Meltdown 以及它们所有的同级侧信道攻击,都表明了业界对于解决安全漏洞有着“刚需”。2021年6月24日,Arm发布全新Arm®v9架构的安全性功能Arm 机密计算架构(Arm Confidential Compute Architect原创 2021-12-07 22:38:15 · 1782 阅读 · 1 评论 -
ARM系列之ARM 平台安全架构PSA 固件框架
ARM系列之ARM 平台安全架构PSA 固件框架 1 Introduction1.1 Scope1 IntroductionArm的平台安全体系结构(PSA)是一套完整的体系结构,包括:威胁模型安全分析硬件和固件架构规范开源固件参考实施独立评估和认证方案——PSA认证。PSA提供了一个基于行业最佳实践的配方,使安全性在两个方面都得到一致的设计硬件和固件级别。PSA固件框架规范定义了标准编程环境和固件,用于在设备的信任根内实现和访问安全服务的接口。安全的编程环境和应用程序编程接口(API原创 2021-11-30 22:54:10 · 1474 阅读 · 1 评论 -
ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析
ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析 PSA要求是什么?C1.1 硬件级别的隔离环境C1.2 安全启动C1.3 生命周期管理C1.4 密钥管理差异总结熟悉Arm的朋友基本都听说过TrustZone和PSA,但是很多不太了解两者之间是什么关系。TrustZone是Arm架构的安全扩展,是系统级的安全方案,已经被业内广泛的应用。PSA是Arm在2017年推出的平台安全架构,主要目的是实现成本可控,易于实施,低风险的物联网安全基础平台。那么PSA和Trustzone差异是什么原创 2021-11-29 23:23:00 · 5202 阅读 · 0 评论 -
ARM v8指令集(手册)
1、Conditional Branch - B.cond labelBranch: conditionally jumps to program-relative label if cond is true. - CBNZ Wn, labelCompare and Branch Not Zero: conditionally jumps to program-relative label i原创 2016-07-13 22:08:37 · 24760 阅读 · 0 评论 -
ARM 汇编指令(更新中)
1、str 指令 **- 格式** STR{条件} 源寄存器,<存储器地址> STR指令用亍从源寄存器中将一个32位的字数据传送到存储器中。 **- 案例**STR R0,[R1],#8 ;将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1。STR R0,[R1,#8] ;将R0中的字数据写入以R1+8为地址的存储器中。”2、ORR指令(逻辑 或) **- 格原创 2016-07-11 22:51:05 · 758 阅读 · 0 评论