快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈
- 付费专栏-付费课程 【购买须知】:
- 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈
- 联系方式-加入交流群 ----联系方式-加入交流群
目录
有关本专栏的测评,请参考这里的视频:
【测评】【付费专栏】-ARMv8/ARMv9架构入门到精通
请按照目录学习, 欢迎探讨,多多交流!
1、【armv8/armv9基础】
简介 & 概述
指令集/命令/汇编/寄存器
2、【mmu/cache】
精选《深度学习cache系列》
- 00-cache思考篇 ⚡ ---- 必看
- 01-简述cache的基本概念和使用场景 ⚡
- 02-cache的基本概念原理扫盲 ⚡
- 03-cache的查询原理 ⚡
- 04-多核多cluster多系统之间缓存一致性概述 ⚡
- 05-cache相关的系统寄存器 ⚡
- 21-有关Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable的理解 ⚡
- 22-深夜学习:有关Inner、Outer等相关词汇的理解 ⚡
- 23-软件维护cache的三类指令 ⚡
MMU 精选
- 01-armv8/armv9 MMU深度学习 ⚡
- 02-LearnTheArchitecture-MemoryManagement ⚡
- 03-Armv8-A memory model guide ⚡
- 04-Memory Management Examples ⚡
- 05-SMMU学习这一篇就够了 ⚡
- 06-ARMv8/ARMv9的TLB深度学习 ⚡
- 07-ARMv9新特性:虚拟内存系统架构 (VMSA) 的增强功能 ⚡
- 21-armv8/armv9页表属性(page descriptor)的详细介绍 ⚡
- 22-Translation Regime介绍⚡
- 23-MMU关闭时Cache的缓存策略是怎样的 ⚡
- 24-思考:开启MMU瞬间可能出现的多种问题以及多种解决方案⚡
- 25-思考: 什么时候需要disable MMU/i-cache/d-cache?⚡
- 26-Cache Type Register(CTR)寄存器介绍⚡
- 27-TCR(Translation Control Register)寄存器详解⚡
- 28-context switch的切换过程(TTBR0的切换/ASID的介绍)⚡
.其它
- [mmu/cache]-ARM MMU的学习笔记-一篇就够了
- [mmu/cache]-ARMV8-aarch64的虚拟内存(mmu/tlb/cache)介绍-概念扫盲
- 深度学习armv8/armv9 cache的原理
- 深度学习arm MMU一篇就够了
- [mmu/cache]-ARM cache的学习笔记-一篇就够了
- 有关多核一致性的理解和思考
- cache/TLB里分别都有什么?
- 深度学习armv8/armv9 cache的原理
- MMU关闭时Cache的缓存策略是怎样的
- 多级cache之间的替换策略
- A53 cache的架构解读
- Cache多核之间的一致性MESI
- 深度解读DynamIQ架构cache的替换策略
- 深度学习arm cache系列–一篇就够了
- REE刷TLB时会把安全的TLB刷掉吗
- cache配置大了,对性能功耗有什么影响?
- 内存屏障 和 cache之间有什么关系?
- Armv8/Armv9架构中cache缓存的替换策略
- 有关Inner、Outer等相关词汇的理解(二)
- ARMv8/Armv9架构中cacheable属性的介绍
- 深入理解Armv9 DSU-110中的L3 cache
- Armv9 Cortex-A720的L1 memory system 和 L1 Cache
- Armv9 Cortex-A720的L2 memory system 和 L2 Cache
- Armv9读取cache内容:Direct access to internal memory
- cache coherence和memory consistency的区别
- Inner shareable cache、Inner Shareability Domain 和 Inner shareable Attribute的关系
- [assembly]-MMU的地址翻译(Address translation)指令介绍
- [assembly]-ARMV8的cache的指令集介绍
3、【gic专题、异常专题、中断专题】
精选区
- 00-《armv8/armv9中断系列详解》-armv8/armv9中断系列详解-序言⚡ ---- 必看
- 02-《armv8/armv9中断系列详解》-ARM gicv3/gicv4的总结-基础篇 ⚡
- 03-《armv8/armv9中断系列详解》-armv8/armv9中断系列详解-硬件基础篇 ⚡
- 04-《armv8/armv9中断系列详解》-Linux Kernel/optee/ATF/hafnium等操作系统的异常向量表的速查 ⚡
- 05-《armv8/armv9中断系列详解》-Linux kernel中断相关软件导读 ⚡
- 06-《armv8/armv9中断系列详解》-optee中断相关软件导读 ⚡
- 07-《armv8/armv9中断系列详解-TF-A中断相关软件导读 – TODO
- 08-《armv8/armv9中断系列详解》-中断示例展示(不含虚拟化部分) ⚡
- 09-《armv8/armv9中断系列详解》-optee运行时来了一个REE(linux)中断–代码导读 ⚡
- 10–《armv8/armv9中断系列详解》-中断示例展示(虚拟化部分) ⚡
- [答疑]-中断流程举例:在TEE侧时产生了FIQ,回到REE后为啥又产生了IRQ ⚡
- [答疑]-中断流程举例:在REE(SCR.FIQ=1)侧时产生了FIQ,跳转到EL3后做了哪些事情? ⚡
- Linux和optee双系统中1020-1023号的中断号的使用 ⚡
- EL3中设置的中断的routing模型 ⚡
- 深入了解 ARMv9对不可屏蔽中断的支持 ⚡
- Linux Kernel支持NMI的三种方式 ⚡
- gic中某些寄存器写不了的解决方法 ⚡
- SDEI初探-透过事务看本质 ⚡
- 有关一则中断虚拟化的思考
综合
GIC相关
- [gic]-ARM gicv3/gicv4的详细介绍-2020/08
- [gic]-ARM gicv3/gicv2的总结和介绍-PPT
- [gic]-ARM gicv2和gicv3的中断模型总结
- [gic]-gicv2的bypass功能
- [gic]-gicv3/gicv4的feature总结
- gicv2和gicv3架构中的banked寄存器
ARM Core相关
- [ARM异常]-ARM Core如何响应中断的
- [ARM异常]-ARMV8-aarch64异常和中断处理概念详细介绍
- [ARM异常]-ARMV8-aarch64 异常(中断)是如何跳转到向量表的
- [ARM异常]-异常进入和异常退出时的arm core的硬件自动的行为
- [ARM异常]-armv8/armv9异步异常类型、路由、屏蔽
- [ARM异常]-armv8/armv9同步异常的介绍
- [ARM异常]-SPIs(共享中断)routing到指定CPU的方法
- [ARM异常]-中断的术语介绍:target,assert,taken,acknowledge
- [ARM异常]-ARM体系中是否支持中断嵌套
- armv8的Serror的理解
Linux Kernel相关
- linux kernel中设置向量表基地址
- Linux Kernel 5.14 arm64异常向量表解读-中断处理解读
- Linux Kernel中断下半部分实现的三种方式
- 探究实现中断下半部分的第四种方式
- 在Linux Kernel中有没有定义和实现FIQ向量
- 在linux、optee、ATF中的中断异常向量表
- 思考:Linux Kernel的中断处理函数中是否会被其它程序(中断/异常)打断?
- irq domain介绍和代码导读
optee相关
- optee3.14中的异常向量表解读–中断处理解读 ⚡
- optee中添加一个中断以及底层代码的相关解读 ⚡
- optee中关于异常向量表、中断等的深入思考 ⚡
- optee切换到REE的几种方式 ⚡ — optee处理FIQ会主动切REE
- optee的RPC设计(模型)详解 ⚡— optee处理FIQ和RPC相关
- optee的RPC流程的代码详解 ⚡
- optee中的中断处理详解 ⚡
- optee中的thread_vector_table线程向量表 ⚡— optee的线程向量表和中断没关系,但有相似的地方
- optee对std smc的处理的详解 ⚡
- optee的fast call的介绍 ⚡
- optee运行时来了一个REE(linux)中断–代码导读 ⚡
- optee中断处理的介绍(概念篇) ⚡
4、【Trustzone & 安全架构】
Trustzone
01-ARMV8/ARMV9的程序之间的跳转模型 ⚡–-----学习arm的最最干货!! 精髓 ---- 必看
【安全技术】
- 01-防止Stack smash的技术 ⚡
- 02-防止stack buffer overflows攻击的方法 : ShadowCallStack ⚡
- 03-防止stack buffer overflows攻击的方法 : Canary 漏洞缓解机制 ⚡
- 04-[armv9]-PAC:Pointer authentication和BTI:Branch target instructions介绍 ⚡
【安全博文】
5、【architecture】
- [architecture]-CPU(ARM)启动的第一条指令 ⚡
- ARMV8 code reset和warm reset的理解 ⚡
- SOC的多核启动流程详解 ⚡
- PSCI多核启动-Linux Kernel从核启动-TEE开启多核 ⚡
- [architecture]-Cortex-A53的configuration signals ⚡
- 有关中断唤醒源的思考 ⚡
- 最全讲解WFE和WFI进入低功耗的原理机制 ⚡
- ARMv8/ARMv9的Exclusive机制深度解读 ⚡
- spin_unlock中的stlr是怎样让cpu退出low-power模式的?⚡
- [architecture]-DBG、DMB、DSB 和 ISB指令介绍
- [architecture]-DMB、DSB 和 ISB指令的深度解读 ⚡
- [architecture]-arm exclusive机制介绍
- [architecture]-ARMV8的The current Program Counter (PC)介绍 ⚡
- [architecture]-ARMV7架构下SecureMonitor双系统切换时保存和恢复哪些寄存 ⚡
- [architecture]-ARMV7架构下Linux Kernel的Userspace进程切换时保存和恢复哪些寄存器 ⚡
- [architecture]-Armv8 Cryptographic Extension介绍
- [architecture]-ARMV8的RAS Extension(Reliability、Availability、Serviceability)介绍
- [architecture]-ARM AMBA/AXI/ACE/LITE总线介绍
- [architecture]-spin_unlock中是怎样让cpu退出standby模式的 ⚡
- [architecture]-ARM SMMU学习概念总结一篇就够了
- [architecture]-处理器的顺序和乱序执行
- [architecture]-armv8-aarch64种的SIMD/FP指令介绍
- FPU/VFP/ASE/NEON/MPE/SVE/MVE分别都是什么意思?
- 01-缓存一致性—基础知识
- 02-缓存一致性—实现big.LITTLE、GPU 计算和企业应用
- 03-缓存一致性—提高性能和引入CoreLink CCI-500
- CoreLink CCI-550的概念介绍
- [armv9]-ARM最新架构为memcpy/memset底层的实现提供新的指令
- 思考:EL3直接返回到EL1时需要配置EL2寄存器吗
- ARMV8/ARMV9或gic中某些寄存器写不了的解决方法 ⚡
- S3_0_C12_C12_7是啥寄存器
- Neoverse Roadmap
- Cortex-A715的介绍
- Arm发布最新内核 : Corte-X4/A720/A520,支持Armv9.2
- Armv8.xA 和 Armv9.xA 架构之间的关系
- Arm SystemReady介绍
- optee读取Arm系统寄存器的模板
- GIC CPU Interface寄存器的读写的几种方式
- EL0读取arm寄存器获取时间的方法
- 有关Arm CE支持的sha1 sha224 sha256 sha384 sha512指令
- Armv9的Cryptographic Extension
【技巧】
操作系统中如何去读写一个armv8/armv9/gic寄存器 ⚡
【其它】
[toolchains]-ARM ToolChains介绍
[PSA]-PSA Certified简介
[思考]-32位的应用程序为什么不能跑64位的应用程序
[实验]-从汇编代码来看volatile关键字的作用
[答疑]-ATF中异常向量表为何没有实现“Current Exception level with SP_ELx, x>0.“
[答疑]-中断流程举例:在REE(SCR.FIQ=1)侧时产生了FIQ,跳转到EL3后做了哪些事情? ⚡
[思考]-ARM LR寄存器的思考
[答疑]-中断流程举例:在TEE侧时产生了FIQ,回到REE后为啥又产生了IRQ ⚡
[问答]-EL1t和EL1h中的后缀t和h分别是什么意思
[问答]-ARM文档中的†和‡的含义
[记录]-Cortex-A76仅EL0支持aarch32
6、《Learn The Architecture》系列
- 01-Introducing the Arm architecture ⚡
- 02-Armv8-A Instruction Set Architecture ⚡
- 03_Introduction_to_AMBA_AXI ⚡
- 04-TrustZone for Armv8-A ⚡
- 05-Exception model ⚡
- 06-GICv3_v4_overview ⚡
- 07-Armv8-A virtualization ⚡
- 08-Isolation using virtualization in the Secure World_Whitepaper ⚡
- 09-LearnTheArchitecture-MemoryManagement ⚡
- 10-Armv8-A memory model guide ⚡
- 11-Memory Management Examples ⚡
- 12-Generic Timer ⚡
- 13-Introduction to security ⚡
- 14-Providing protection for complex software ⚡
- 15-Arm-Confidential-Compute-Software-Stack ⚡
- 15.2-armv9的RME简介 ⚡
- 16-Understanding the Armv8.x extensions ⚡
7、《Armv8/armv9架构入门指南》系列
- 《Armv8/armv9架构入门指南》-【第一章】- 前言 ⚡
- 《Armv8/armv9架构入门指南》-【第二章】- ARMv8‑A 架构和处理器⚡
- 《Armv8/armv9架构入门指南》-【第三章】- ARMv8 基础知识⚡
- 《Armv8/armv9架构入门指南》-【第四章】- ARMv8 寄存器⚡
- 《Armv8/armv9架构入门指南》-【第五章】- ARMv8 指令集简介⚡
- 《Armv8/armv9架构入门指南》-【第六章】- ARMv8指令集⚡
- 《Armv8/armv9架构入门指南》-【第七章】- AArch64 浮点和 NEON⚡
- 《Armv8/armv9架构入门指南》-【第八章】- 移植到 A64⚡
- 《Armv8/armv9架构入门指南》-【第九章】- ARM 64 位架构的 ABI⚡
- 《Armv8/armv9架构入门指南》-【第十章】- AArch64 异常处理⚡
- 《Armv8/armv9架构入门指南》-【第十一章】- 缓存cache⚡
- 《Armv8/armv9架构入门指南》-【第十二章】- 内存管理单元 ⚡
- 《Armv8/armv9架构入门指南》-【第十三章】- 内存排序 ⚡
- 《Armv8/armv9架构入门指南》-【第十四章】- 多核处理器 ⚡
- 《Armv8/armv9架构入门指南》-【第十五章】- 电源管理 ⚡
- 《Armv8/armv9架构入门指南》-【第十六章】- big.LITTLE 技术 ⚡
- 《Armv8/armv9架构入门指南》-【第十七章】- 安全 ⚡
- 《Armv8/armv9架构入门指南》-【第十八章】- 调试 ⚡
- 《Armv8/armv9架构入门指南》-【第十九章】- ARMv8模型 ⚡
历史活动
01-300多页ARMv8中文手册有望在节后分享给大家
11、ATF(TF-A)、FF-A专区
FF-A / 代码导读
TF-A
- ATF一文深度讲解(Quick Start)
- TF-A中的密码学算法接口
- ATF的代码学习篇-一篇就够了
- MTK:一篇文章了解ATF原理
- 程序之间的跳转模型 ⚡ –-----学习arm的最最干货!! 精髓
- Linux Kernel/optee/ATF等操作系统的异常向量表的速查
- ATF的异常向量表介绍-(irq,fiq,smc,hyc…)
- 中断配置:SCR.FIQ/SCR.IRQ的配置详解
- smc指令详解
- 思想解读:TF-A(ATF)中栈指针和栈内存的设计思想解读
- TF-A代码阅读: 双系统切换时是如何保存寄存器的(cpu_context介绍)
- TF-A代码阅读: SP_EL3栈内存-cpu_data内存的介绍(cpu_context介绍)
- TEE/REE系统切换时ATF的寄存器的保存和恢复
- ARM级别/异常/状态切回时候的寄存器保存与恢复
- ATF RT-SVC的介绍
- ATF的RT_SVC的详解(runtime service)
- ATF启动–BL31跳转到optee和uboot
- ATF(TF-A)的编译方法
- ATF makefile的导读
- armv8 boot流程(一):ARMV8 code reset和warm reset的理解
- armv8 boot流程(二):软件如何判断当前是cold reset/warm reset/primary boot/senondary boot
- armv8 boot流程(三):TF-A(ATF)中mailbox的使用
- ATF中RESET_TO_BL31宏的含义
- TF-A 项目的长期支持介绍
- 在MT2712实现基于VOsySmonitor的车载信息娱乐和实时操作系统
- VOSYSmonitor:支持实时系统的EL3监视程序
- 5.8. Trusted Board Boot
- TF-A如何支持Firmware镜像放回滚的
- TF-A架构下支持的secureboot到底是先加密再签名,还是先签名再加密
- TF-A镜像加密的时候AES KEY来自哪里
- TF-A是如何解密镜像的
- Arm机密计算架构技术(Armv9 CCA) 白皮书
标准和规范
TODO
- ATF基本术语/概念/设计思想大扫盲
- 大系统的启动流程
- BL1启动流程详解
- BL2启动流程详解
- BL31的初始化流程详解
- BL31跳转到BL32的流程详解
- BL31跳转到BL33的流程详解
- BL31对异常中断的支持
- Runtime Service的定义
- Runtime Service大总结(系统里包含了哪些Runtime Service)
- ATF初始化Normal cpu context
- ATF初始化secure cpu context
- ATF中的Switch cpu context
- ATF中对多核的支持
- ATF中的栈的设计
- ATF对中断的管理
- ATF对MMU的使用
- ATF对PSCI的支持
- ATF对SEDI的支持及其使用场景
- SCP和SCMI简介
- 如何在BL31中添加自己的业务
- 如何在BL31中添加自己的驱动
20、基础知识点大扫盲
21、快速学习入门篇【精华篇】
快速扫盲篇
- Trustzone学习这一篇就够了
- 虚拟化快速扫盲
- MMU深度解析
- Cache学习这一篇就够了
- 异常中断和gic学习这一篇就够了(10W字详解)
- ATF Quick Start
- Optee Quick Start
- SOC架构基础学习这一篇就够了
安全架构学习篇
本专栏会持续更新,更系统化的介绍armv8/armv9。