1. 主要讲解了arm中的硬件结构流程,
ARM GIC(四) gicv3架构基础【转】 - sky-heaven - 博客园
2. 不通过中断线,而是通过往特定的地址发送消息产生终端
3。 中断及cpu的不同器件分属于不同的 电源域,分开进行控制。
ARM GIC(七)gicv3架构-power控制 | 骏的世界4
4。基本的架构和EL级别
ARMv8架构简介 | 骏的世界
5。 中断线的映射,不同模式下
ARM GIC(十一) gicv3架构-two secure state | 骏的世界
6. 中断的分组
7。 软中断 用于core之间的互相通信,明确是从CPU0发送到CPUx的。这个和内核的软中断不是一个概念。
8. 介绍IRQ FIQ的基本概念 问题: 两者分别针对什么设备?
ARM GIC(一) cortex-A 处理器中断简介 | 骏的世界
9. arm dts 语法介绍
linux设备树笔记--dts基本概念及语法 一步步具了例子,相对比较容易理解
dts https://cloud.tencent.com/developer/article/1709004 中断的配置,讲的比较清晰。主要配置中断的拓扑结构 以及中断号和中断触发类型
PE processing element
一个大的uniform register file文件。
load、store架构,数据处理仅操作寄存器里面的内容,不直接操作内存。
简单地址模式,load/store地址被从寄存器内容和指令字段仅仅。
架构定义了PE和内存(包括caches 内存翻译系统 ),也描述了多个PE之间彼此交互的方式。
实现大小,性能。
armv8一个重要的特征是向后兼容性。
- bit 执行态
两个执行态 SIMD 和浮点指令
- A模式 application profile
支持基于 MMU的 VMSA virtual memoory system architecture
支持A64 A32 T32指令集
- R模式 实时模式
支持基于MPU memory protection unit的PMSA 保护的内存系统架构
支持A32 T32指令集
- M模式
实现低延迟中断处理,硬件栈寄存器
- 基本概念
Execution state
定义了PE 执行的环境。
针对aarch64和aarch32分别定义了不同的值, 包括:
寄存器的宽度;指令集。
---异常模型 (Exception levels EL0-EL3)
--- VMSA (提供64位的虚拟地址)
---开发者模型 (定义进程状态 Process state PSTATE),
在aarch64和aarch32的execution states进行转换控制的行为被称为interprocessing
armv8指令集
系统寄存器
系统寄存器提供了架构相关的控制和状态寄存器信息。
系统寄存器使用标准的名字格式: register_name.bit_field_name 来标识特定的寄存器以及寄存器中的某个控制、状态位。
位 也可以被他们在寄存器中的位置来描述。例如: register_name[x:y] .
除此之外,在64位态时,大多数寄存器的名字包括 可以访问这个寄存器最低的Exception level,作为寄存器名字的后缀。
寄存器由以下几类寄存器构成:
----通用的系统控制寄存器
----debug 寄存器
----- 通用的Timer寄存器
---可选的,性能监控寄存器 performance Monitor 寄存器。
---可选的,Activity 监控寄存器,activity monitor registers.
----可选的,下列一组或者多组寄存器:
--Trace System register
--Scalable Vector Extension
- arm debug
ARM GICv3中断控制器(转) - 二虎 - 博客园 (cnblogs.com)
GICv3-4宏观视图 - 程序员大本营 (pianshen.com)
arm GIC介绍之二 - 小黑电脑 (xiaoheidiannao.com)
是在实际中,我们不需要这么多的级别范围255,我们需要32个级别,或者64个级别就可以了,这就需要对级别LEVEL进行优化,可以忽略其低位的BIT,现在使用的X20上每个LEVEL的STEP是8,忽略低3位,这是ARM寄存器设计的写入忽略原则,以及读取为0原则。途中右下部分,我们做的简单实验,对优先级寄存器里面写入0b:11111111,但是都出来的是0b:11111000,也就是最低3位被忽略了。那么LEVEL_0是从0~7,LEVEL_1是从8~15,
所以:原先IRQ_34的优先级别值为0b:10100000,IRQ_33的优先级别值为0b:10100001,IRQ_34的值比IRQ_33小1,
但是实际能够配置到寄存器里面的值都是0b:10100000。优先级别是一样的