[A-29]ARMv8/v9-GIC-中断子系统的安全架构设计(Security/FIQ/IRQ)

ver0.1

前言

打开这篇文章的时候,我们已经为每一个中断信号规划一条路径,在外设和PE-Core之间建立了消息通道,外设有紧急的情况下可以给SOC中的大哥打报告了。下面就把接力棒就交到了CPU手里了,但是PE-Core要交给那个Exception Level以及Security下运行的软件处理呢?本文就要探讨这个课题,也就是吧中断子系统在ARM的安全框架下的工作机制和大家讨论清楚。同样本文也需要一些基础,这里面推荐一些文章,建议大家先读一读,找找感觉,都已经进行了口语化处理了,希望小伙伴们能多点击,多指教:
(1) [V-02] 虚拟化基础-CPU架构(基于AArch64)
(2) [V-05] 虚拟化基础-异常模型(Exception)(AArch64) .
(3) [A-25]ARMv8/v9-GIC的系统架构(中断的硬件基础)
(4) [A-26]ARMv8/v9-GIC的中断类型
(5) [A-27]ARMv8/v9-GIC的核心组件(中断编程的基础组件)
(6) [A-28]ARMv8/v9-GIC中断信号的路由机制与策略

正文

1.1 Security State

我们这里花费一个小结的篇幅简要的介绍一下ARM的安全状态,如图1-1所示,如果对ARM的安全架构非常了解的小伙伴可以直接跳过本节。
1-1

图1-1 Security states without RME

我们先来看一下手册中对ARM安全架构的介绍:

The Normal world runs a rich software stack. This software stack typically includes a large application set, a complex operating system like Linux, and possibly a hypervisor. Such software stacks are large and complex. While efforts can be made to secure them, the size of the attack surface means that they are more vulnerable to attack.
The Trusted world runs a smaller and simpler software stack, which is referred to as a Trusted Execution Environment (TEE). Typically, a TEE includes several Trusted services that are hosted by a lightweight kernel. The Trusted services provide functionality like key management. This software stack has a considerably smaller attack surface, which helps re

ARMv8ARMv9架构中,中断控制器GIC扮演着核心角色,它负责处理中断请求(IRQ)和快速中断请求(FIQ),这两种中断在处理优先级和响应方式上有所不同。GIC是一个高度集成的中断控制器,用于在多核处理器环境中管理中断,提供了一种高效的机制来分配和优先级排序中断,同时支持虚拟化。 参考资源链接:[Armv8/Armv9异常中断深度解析与实战应用](https://wenku.youkuaiyun.com/doc/7icctt81in?spm=1055.2569.3001.10343) FIQIRQ在硬件层面的区别主要体现在它们的响应方式和处理优先级上。FIQ是一种高级别的中断类型,通常用于处理更紧急的任务,它的中断向量和处理过程被设计得更为简化,以减少响应时间。而IRQ则用于处理常规优先级的中断请求。 GIC如何处理这两种中断主要遵循以下步骤: 1. 中断识别:当发生中断事件时,中断源(如外设或其他硬件模块)会向GIC发送中断信号。GIC根据中断源识别中断类型,区分是FIQ还是IRQ。 2. 中断分配:GIC内部会有一个仲裁器来决定哪个中断源的请求将被优先处理。FIQ因其高级别通常会被优先分配。 3. 中断通知:一旦中断被确定并分配,GIC会通过特定的信号线向处理器发送中断信号。对于FIQ信号线,处理器会使用专门的FIQ处理通道响应;对于IRQ信号线,则使用一般的IRQ处理通道。 4. 中断响应:处理器在收到中断信号后,会暂停当前执行的程序,并根据中断类型跳转到相应的中断服务例程(ISR)。对于FIQ,处理器使用一个更短的跳转表来确定ISR入口,以便更快地进入处理程序。 5. 中断处理:在ISR中,软件会执行必要的处理以响应中断事件。处理完成后,通过执行特定的结束中断指令,如ELR_elx(异常链接寄存器)和SPSR_elx(保存状态寄存器),处理器返回到被中断的上下文继续执行。 6. 中断确认:处理器完成中断处理后,通过写入GIC以确认接收到了中断,这将允许GIC处理下一个中断。 为了更好地理解和实现中断流程,推荐阅读《Armv8/Armv9异常中断深度解析与实战应用》。这篇文章系列不仅深入解析了中断流程的关键步骤,还提供了实战应用的示例,包括在不同执行环境(如REE、TEE等)下中断的处理和虚拟化环境下的中断交互。此外,对于Linux Kernel开发者,文章也详细介绍了arm64架构下的中断向量表定义、中断向量的基地址设置、以及中断处理函数的实现细节。掌握这些知识对于优化嵌入式系统性能和实现高效中断管理至关重要。 参考资源链接:[Armv8/Armv9异常中断深度解析与实战应用](https://wenku.youkuaiyun.com/doc/7icctt81in?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值