【ARM】中断的处理

ARM的异常向量表

  1. 如果发生异常后并没有exception level切换,并且发生异常之
    前使用的栈指针是SP_EL0,那么使用第一组异常向量表。
  2. 如果发生异常后并没有exception level切换,并且发生异常之
    前使用的栈指针是SP_EL1/2/3,那么使用第二组异常向量表。
  3. 如果发生异常导致了exception level切换,并且发生异常之前
    的exception level运行在AARCH64模式,那么使用第三组异常
    向量表。
  4. 如果发生异常导致了exception level切换,并且发生异常之前
    的exception level运行在AARCH32模式,那么使用第四组异常
    向量表。

Linux Kernel的中断处理

Linux Kernel中的异常向量表的实现

在设置异常向量表基地址时填的虚拟地址

Linux kernel对中断的处理

ATF(TF-A)的中断处理

ATF(TF-A)中的中断向量表
BL31 runtime_exceptions

程序在EL3时来一个IRQ中断target到EL3来实现时,是不支持的,因为是没有实现的。

程序在EL3一下时来一个中断,此时是支持的,直接target到EL3。

optee的中断处理

optee os中异常向量表的实现

第二组不用

做了两件事

1,写了一个异常向量表

2,把异常向量表的基地址写入VBAR_EL1寄存器中

optee os中对中断的处理
optee中中断的使用示例

写一个结构体声明一下,调用itr_add和itr_enable,当中断一来,就会自动调用中断处理函数

相关推荐
路溪非溪6 小时前
Linux驱动中的红外遥控子系统
linux·arm开发·驱动开发
大聪明-PLUS10 小时前
编写您自己的 Linux 操作系统引导加载程序
linux·嵌入式·arm·smarc
不染尘.1 天前
操作系统发展史和常见习题汇总
arm开发·嵌入式硬件·draw.io
橘色的喵1 天前
嵌入式 ARM Linux 平台高性能无锁异步日志系统设计与实现
linux·arm开发·cache line·ring buffer
鸿蒙小白龙1 天前
OpenHarmony轻量系统智能模块开发实战指南
arm开发·openharmony·liteos
大聪明-PLUS2 天前
Linux 网络和流量加密完整指南(第一部分)
linux·嵌入式·arm·smarc
物随心转2 天前
硬盘的MBR
arm开发
landyjzlai3 天前
AMBA总线(15)关于AXI-stream(sg模式)
arm开发·fpga开发·amba
大聪明-PLUS3 天前
Linux 下的 C 语言编程:创建你自己的命令 shell
linux·嵌入式·arm·smarc
Dillon Dong4 天前
从C到Simulink: ARM Compiler 5 (RVDS) 为什么simulink 不能使用arm编译
c语言·arm开发·simulink