s3c2410中断异常处理总结计算机计算机原理_高等教育-大学课件.pdf
《s3c2410中断异常处理总结计算机计算机原理_高等教育-大学课件.pdf》由会员分享,可在线阅读,更多相关《s3c2410中断异常处理总结计算机计算机原理_高等教育-大学课件.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 s3c2410 中断异常处理 在进入正题之前,我想先把 ARM920T 的异常向量表(Exception Vectors )做一个简短的介绍。:ARM920T 的异常向量表有两种存放方式,一种是低端存放(从 0 x00000000 处开始存放),另一种是高端存放 (从 0 xfff000000 处开始存放)。关于为什么要分两种方式进行存放这点我将在介绍 MMU 的文章中进行说明 本文采用低端模式。ARM920T 能处理有 8 个异常,他们分别是:,Reset,Undefined instruction ,Software Interrupt ,Abort(prefetch ,Abort(da
2、ta ,Reserved,IRQ,FIQ 下面是某个采用低端模式的系统源码片段:_start:b Handle_Reset b HandleUndef b HandleSWI b HandlePrefetchAbort b HandleDataAbort b HandleNotUsed b HandleIRQ b HandleFIQ ,.,.other codes ,上面这部分片段一般出现在一个名叫“head.s”的汇编文件里,“b Handle_Reset”这条语句就是系统上电之后运行的第一条语句。也就是说这部分代码的二进制码必须位于内存的最开始部分(这正是低端存放 模式),因为上电后 CP
3、U 会从 SDRAM 的 0 x00000000 处取第一条指令并执行。Address Instruct 0 x00000000:b Handle_Reset 0 x00000004:b HandleUndef 0 x00000008:b HandleSWI 0 x0000000C:b HandlePrefetchAbort 0 x00000010:b HandleDataAbort 0 x00000014:b HandleNotUsed 0 x00000018:b HandleIRQ 0 x0000001C:b HandleFIQ 上面是该程序段在系统上电后加载到内存后的分布情况,我们可以看
4、到每条指令占用了 4 个字节。上电后,PC 指针会跳转到 Handle_Reset 处开始运行。以后系统每当有异常出现,则 CPU 会根据异常 号,从内存的 0 x00000000 处开始查表做相应的处理,比如系统触发了一个 IRQ 异常,IRQ 为第 6 号异常,则 CPU 将把 PC 指向 0 x00000018 地址(4*6=24=0 x00000018)处运行,该地址的指令是跳转到“中断异常服务例 程”(HandleIRQ)处运行。以上就是我对异常向量表的一个简单介绍。现在可以进入我们文章的主题“中断 异常处理”,s3c2410 的中断分快中断 (FIQ 和普通中断(IRQ),我们讨论
5、的重点是普通中断(IRQ)。s3c2410 的中断异常处理模块总共由以下寄存器构成 SRCPND(SOURCE PENDING REGISTER INTMOD(INTERRUPT MODE REGISTER INTMSK(INTERRUPT MASK REGISTER PRIORITY(PRIORITY REGISTER INTPND(INTERRUPT PENDING REGISTER INTOFFSET(INTERRUPT OFFSET REGISTER SUBSRCPND(INTERRUPT SUB SOURCE PENDING INTSUBMSK(INTERRUPT SUB MASK
6、REGISTER)存放从处开始存放另一种是高端存放从处开始存放关于为什么要分两种方式进行存放这点我将在介绍本文采用低端模式能处理有个异常他们分别是的文章中进行说明下面是某个采用低端模式的系统源码片段上面这部分片段一般出现内存的最开始部分这正是低端存放模式因为上电后会从的处取第一条指令并执行上面是该程序段在系统上电后加载到内存后的分布情况我们可以看到每条指令占用了个字节上电后指针会跳转到处开始运行以后系统每当有异常出现则跳转到中断异常服务例程处运行以上就是我对异常向量表的一个简单介绍现在可以进入我们文章的主题异常处理的中断分快中断和普通中断我们讨论的重点是普通中断会根据异常中断的中断异常处理模块
7、总共由以下寄存器构成下面 下面我将讲解每个寄存器在一个中断处理流程中所扮演的角色:SRCPND/SUBSRCPND 这两个寄存器在功能上是相同的,它们是中断源引脚寄存器,在一个 中断异常处理流程中,中断信号传进中断异常处理模块后首先遇到的就是 SRCPND/SUBSRCPND,这两个寄存器的作用是用于标示出哪个中断请求被触发。SRCPND 的有效位为 32,SUBSRCPND 的有效位为 11,它们中的每一位分别代表一个中断源。SRCPND 为主中断源 引脚寄存器,SUBSRCPND 为副中断源引脚寄存器。这里列举出 SRCPND 的各个位信息:每个位的初始值皆为 0。假设现在系统触发了 TI
8、MER0 中断,则第 10bit 将被置 1,代表 TIMER0 中断被触 发,该中断请求即将被处理(若该中断没有被屏蔽的话)。SUBSRCPND情况与 SRCPND相同,这里就不多讲 了。INTMOD 寄存器有效位为 32 位,每一位与 SRCPND中各位相对应,它的作用是指定该位相应的中断源处 理模式(IRQ 还是 FIQ)。若某位为 0,则该位相对应的中断按 IRQ 模式处理,为 1 则以 FIQ 模式进行处理,该寄存器初始化值为 0 x00000000,即所有中断皆以 IRQ 模式进行处理。(详细请参考 s3c2410 操作手册)。INTMSK/INTSUBMSK寄存器为中断屏蔽寄存器
9、,INTMSK 为主中断屏蔽寄存器,INTSUBMSK为副中断屏蔽寄存 器。INTMSK 有效位为 32,INTSUBMSK有效位为 11,这两个寄存器各个位与 SRCPND 和 SUBSRCPND 分别对应。它们的作用是决定该位相应的中断请求是否被处理。若某位被设置为 1,则该位相对应的中断产生后将被忽略(CPU 不处理该中断请求),设置为 0 则对其进行处理。这两个寄存器初始化后的值是 0 xFFFFFFFF 和 0 x7FF,既默认情况下所有的中断都是被屏蔽的。到目前为止我们总共讲解了 SRCPND,INTMOD,INTMSK,SUBSRCPND,INTSUBMSK 存放从处开始存放另一
10、种是高端存放从处开始存放关于为什么要分两种方式进行存放这点我将在介绍本文采用低端模式能处理有个异常他们分别是的文章中进行说明下面是某个采用低端模式的系统源码片段上面这部分片段一般出现内存的最开始部分这正是低端存放模式因为上电后会从的处取第一条指令并执行上面是该程序段在系统上电后加载到内存后的分布情况我们可以看到每条指令占用了个字节上电后指针会跳转到处开始运行以后系统每当有异常出现则跳转到中断异常服务例程处运行以上就是我对异常向量表的一个简单介绍现在可以进入我们文章的主题异常处理的中断分快中断和普通中断我们讨论的重点是普通中断会根据异常中断的中断异常处理模块总共由以下寄存器构成下面 五个寄存器,
11、在继续讲解 PRIORITY 寄存器之前我们先来看一张图。先弄清楚一点,现在要讨论的是一个中断优先级的判断问题。为什么会有中断有先级的问题呢?我们知 道 CPU 某个时刻只能对一个中断源进行中断处理,如果现在有 3 个中断同时发生了,那 CPU 要按什么顺序处理 这个 3 个中断呢?这正是引入优先级判断的原因所在,通过优先级判断,CPU 可以按某种顺序逐个处理中断请 求。3sc2410 的优先级判断分为两级。如上图所示,SRCPND寄存器对应的 32 个中断源总共被分为 6 个组,每个组由一个 ARBITER(05)寄 存器对其进行管理。中断必须先由所属组的 ARBITER(05)进行第一次优
12、先级判断(第一级判断)后再发往 ARBITER6 进行最终的判断(第二级判断)。ARBITER(05)这六个组的优先级已经固定,我们无法改变,也 就是说由 ARBITER0 控制的该组中断优先级最高(该组产生的中断进行第一级判断后永远会以 REQ0 向 ARBITER6 传递过去)其次是 ARBITER1,ARBITER2,ARBITER4,ARBITER4,ARBITER5.我们能够控制的是某个 组里面各个中断的优先级顺序。怎么控制?通过 PRIORITY 寄存器进行控制:以下是 PRIORITY 寄存器各个位的参数表 从表上我们可以知道 PRIORITY 寄存器内部各个位被分为两种类型,一
13、种是 ARB_MODE,另一种为 ARB_SEL,ARB_MODE类型有 5 组对应 ARBITER(26)(PS:此处应更正为 ARB_MODE 类型有 7 组对应 ARBITER(06),在 datasheet 中上表还有续表,为 ARB_MODE1)-0,ARB_SEL 类型有 7 组对应 ARBITER(06)。现 存放从处开始存放另一种是高端存放从处开始存放关于为什么要分两种方式进行存放这点我将在介绍本文采用低端模式能处理有个异常他们分别是的文章中进行说明下面是某个采用低端模式的系统源码片段上面这部分片段一般出现内存的最开始部分这正是低端存放模式因为上电后会从的处取第一条指令并执行上
14、面是该程序段在系统上电后加载到内存后的分布情况我们可以看到每条指令占用了个字节上电后指针会跳转到处开始运行以后系统每当有异常出现则跳转到中断异常服务例程处运行以上就是我对异常向量表的一个简单介绍现在可以进入我们文章的主题异常处理的中断分快中断和普通中断我们讨论的重点是普通中断会根据异常中断的中断异常处理模块总共由以下寄存器构成下面 在我将以 ARBITER2 为例,讲解中断组与 PRIORITY 寄存器中 ARB_SEL,ARB_MODE之间的相互关系。首先我们看到 ARBITER2 寄存器管理的该组中断里包括了 6 个中断,分别是 INT_TIMER0,INT_TIMER1,INT_TIME
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- s3c2410 中断 异常 处理 总结 计算机 原理 高等教育 大学 课件
限制150内