iTop-4412 裸机程序(十九)- 按键中断

目录

  • 0.源码
  • 1.异常向量表
    • 1.1 原理
    • 1.2 异常种类
    • 1.3 ARMv7 规定的异常向量表
  • 2. 中断
    • 2.1 iTop-4412 中使用的中断相关寄存器


上篇博文介绍了按键的轮询处理方式,本篇介绍按键的中断方式。

0.源码

GitHub:https://github.com/Kilento/4412NoOS

1.异常向量表

1.1 原理

ARM 的异常向量表是一个存储在特定内存地址的表格,用于存储不同类型异常的处理程序的入口地址。当ARM处理器遇到异常时,它会自动跳转到异常向量表中对应的入口地址,以执行相应的异常处理程序。

1.2 异常种类

ARM的异常向量表通常包含以下几种类型的异常:

  • Reset : 当 ARM 处理器上电或复位时,会产生复位异常
  • Undefined Instructions : 处理器无法识别指令的异常。处理器执行的指令是有规范的, 如果 尝试执行不符合要求的指令, 就会进入到该异常指令对应的地址中;
  • Software Interrupt (SWI) : 软中断, 软件中需要去打断处理器工作, 可以使用软中断来执行 ;
  • Prefetch Abort (Instruction Fetch Memory Abort) : 预取指令失败。ARM 在执行指令的过程中, 要先去预取指令准备执行, 如果预取指令失败, 就会产生该异常;
  • Data Abort (Data Access Memory Abort) : 读取数据失败异常
  • IRQ (Interrupt) : 当 ARM 处理器接收到外部中断信号时,会产生中断异常
  • FIQ (Fast Interrupt) : 当 ARM 处理器执行特定的指令(如软件中断指令 SVC)时,会产生快速中断

1.3 ARMv7 规定的异常向量表

ARM 的异常向量表通常由硬件设计者在系统设计时预定义,一般无需使用者进行修改。但在一些特殊情况下,例如需要自定义异常处理程序时,可以通过修改异常向量表来实现。
Exynos4412 架构是基于 ARMv7 指令集架构的处理器,ARM 规定了 ARMv7 指令集架构的异常向量表如下所示(参考手册ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition)
iTop-4412 裸机程序(十九)- 按键中断_第1张图片

2. 中断

在嵌入式系统中,初始化中断通常包括以下几个步骤:

  • 中断向量表的设置:在中断向量表中,每个中断都有一个对应的中断服务程序入口地址。在系统初始化阶段,需要将每个中断的处理函数地址填入中断向量表中。
  • 中断控制器的配置:对于一些高级的嵌入式处理器,中断控制器通常负责中断的管理和分发。在初始化阶段,需要配置中断控制器的寄存器,以启用和配置各个中断源。
  • 中断服务程序的编写:为每个可能发生的中断编写对应的中断服务程序。中断服务程序通常包括保存上下文、处理中断事件、清除中断标志等步骤。
  • 全局中断使能:在初始化阶段,需要设置全局中断使能位,以允许处理器响应中断。

2.1 iTop-4412 中使用的中断相关寄存器

1. ICDDCR
iTop-4412 裸机程序(十九)- 按键中断_第2张图片
2. ICDISER_CPU
iTop-4412 裸机程序(十九)- 按键中断_第3张图片
3. ICCPMR_CPUn
iTop-4412 裸机程序(十九)- 按键中断_第4张图片
4. ICCICR_CPUn

iTop-4412 裸机程序(十九)- 按键中断_第5张图片
5. ICCIAR_CPUn
iTop-4412 裸机程序(十九)- 按键中断_第6张图片
6. ICCEOIR_CPUn
iTop-4412 裸机程序(十九)- 按键中断_第7张图片

2024年02月13日

Kilento

你可能感兴趣的:(Exynos4412,exynos)