S3C2440的中断体系结构

本文详细介绍了嵌入式系统中CPU如何通过查询和中断两种方式感知外设事件,重点解析了ARM920T核心(如S3C2440)的中断处理流程,包括中断请求、优先级仲裁及中断服务例程的执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载:http://cukdd.blog.chinaunix.net/uid-23193900-id-3187342.html

作者:graylocus

 

CPU运行过程中,是如何知道外设发生了某些事件,如按键,触摸屏,与外设数据的交互。

有两种方法:

(1)查询方式:可以用程序不断的查询各个设备的状态,并响应相关状态,做出一定的处理。但是这种方法比较占用CPU资源,不适用于多任务的系统。

(2)中断方式:当某个事件发生时,硬件会设置某个寄存器,CPU在执行完一条指令后会通过硬件查看这个寄存器。如果相应的事件发生了,则中断当前程序流程,跳转到一个固定的地址处理该事件。处理完后返回被中断程序。

 

1.先看2440的中断处理框图

(1)Request sources(without sub-reg)中的中断源被触发后,会将SRCPND中的相应位置一。如果该中断没有被INTMSK屏蔽,则会进入中断优先级的处理。

(2)Request sources(with sub-reg)中的中断触发时,会将SUBSRCPND某一位置一。如果没被SUBMASK屏蔽,进入下一步的优先级的处理。

(3)如果被触发的中断是快中断(可以通过设置INTMOD的相应位为1,来使得该中断号对应的中断为快中断),则CPU进入快中断模式处理。可以说,快中断具有最高优先级。

   如果是一般中断,可能有几个同时发生,未被INTMSK屏蔽的中断,经过比较选出优先级最高的,然后此中断在INTPND中对应 的位被置一。CPU检查INTPND位,进入IRQ模式进行处理。

  中断源的确定:INTPND或是INTOFFSET.

 

2.中断优先级模块

 

(上图最后一个仲裁器是5,不是0)

 

可以通过设置PRIORITY寄存器,来设置相应普通中断的优先级。

 

优先级的判断:

通过7个仲裁器完成,6个一级仲裁 + 1个二级仲裁

每个仲裁器有6个输入引脚:REQ0-REQ5

对于每个仲裁器,PRIORITY寄存器通过3位来控制

 

3.中断处理流程

 

4.中断清除问题

  如果该类型中断不会在ISR执行过程中发生,可以在调用ISR后清除。如果在ISR执行过程中,这类中断有可能发生,且必须响应,则调用ISR前必须清除中断,不然就会有可能导致中断的丢弃。

 中断的清除:向SRCPND,INTPND相应位写1.。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值