ARM 裸机开发学习笔记(5)中断体系结构

本文介绍了ARM体系结构中的中断处理机制,包括异常事件的处理方式,中断处理过程,以及通过中断实现的点灯实验。在中断处理中,CPU根据中断控制器的状态决定中断源,并保存现场,调用中断服务程序进行处理。通过中断点灯实验展示了具体的中断应用。
摘要由CSDN通过智能技术生成

ARM 裸机开发学习笔记(5)中断体系结构

ARM体系CPU一共有7种工作模式,分别为:用户模式,快速中断模式,中断模式,管理模式,数据访问终止模式,系统模式,未定义指令中止模式
可以通过软件来进行模式切换,或者发生各类中断,异常时CPU自动进入相应的模式。除用户模式外,其余的6中工作模式都属于特权模式。大多数程序运行于用户模式,进入特权模式是为了处理中断,异常,或者访问被保护的系统资源。

1. 异常事件处理方式

CPU运行过程中,是如何知道外设发生了某些事件,如按键,触摸屏,与外设数据的交互。
有两种方法:
(1)查询方式:可以用程序不断的查询各个设备的状态,并响应相关状态,做出一定的处理。但是这种方法比较占用CPU资源,不适用于多任务的系统。
(2)中断方式:当某个事件发生时,硬件会设置某个寄存器,CPU在执行完一条指令后会通过硬件查看这个寄存器。如果相应的事件发生了,则中断当前程序流程,跳转到一个固定的地址处理该事件。处理完后返回被中断程序

2.中断处理过程

  • 中断控制器汇集各类外设发出的中断信号,然后告诉CPU。
  • CPU保存当前程序的运行环境(各个寄存器等),调用中断服务程序(ISR, InterruptService Routine)来处理这些中断。
  • 在ISR中通过读取中断控制器、外设的相关寄存器来识别这是哪个中断,并进行相应的处理。
  • 清除中断:通过读写中断控制器和外设的相关寄存器来实现。
  • 最后恢复被中断程序的运行环境(即上面保存的各个寄存器等),继续执行。

S3C2410/S3C2440的中断控制器结构如图9.4所示,可以从中看出中断的处理细节。

在这里插入图片描述

  1. Request sources(without sub-reg)中的中断源被触发后,会将SRCPND中的相应位置一。如果该中断没有被INTMSK屏蔽,则会进入中断优先级的处理。
  2. Request sources(with sub-reg)中的中断触发时,会将SUBSRCPND某一位置一。如果没被SUBMASK屏蔽,进入下一步的优先级的处理。
  3. 如果被触发的中断是快中断(可以通过设置INTMOD的相应位为1,来使得该中断号对应的中断为快中断),则CPU进入快中断模式处理。可以说,快中断具有最高优先级。
  4. 如果是一般中断,可能有几个同时发生,未被INTMSK屏蔽的中断,经过比较选出优先级最高的,然后此中断在INTPND中对应 的位被置一。CPU检查INTPND位,进入IRQ模式进行处理。
  5. 中断源的确定:INTPND或是INTOFFSET.

3.通过中断点灯

这个实验是通过通过中断方式以按键的形式点亮led灯。

3.1 head.s程序如下:
@******************************************************************************
@ File:head.S
@ 功能:初始化,设置中断模式、管理模式的栈,设置好中断处理函数
@*************************************</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值