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
在这里插入图片描述

2. 中断

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

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

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

1. ICDDCR
在这里插入图片描述
2. ICDISER_CPU
在这里插入图片描述
3. ICCPMR_CPUn
在这里插入图片描述
4. ICCICR_CPUn

在这里插入图片描述
5. ICCIAR_CPUn
在这里插入图片描述
6. ICCEOIR_CPUn
在这里插入图片描述

2024年02月13日

Kilento

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值