- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验3外部中断实验实验目的了解S3C2410外部中断的工作原理.doc
实验3 外部中断实验
实验目的:
了解S3C2410外部中断的工作原理。
掌握S3C2410外部中断的使用方法。
实验设备
PC机、JTAG调试板、S3C2410开发板。
实验内容
通过外部按键(K10)触发外部中断0(EINT0)。
实验原理
4.1ARM的异常中断类型
七种异常中断
4.2异常中断响应过程和返回过程
异常中断的响应过程:
1).保存处理器但前状态寄存器CPSR的值、中断屏蔽以及各条件标志位到将要执行的异常中断的SPSR中。
2).设置但前程序状态寄存器CPSR的值,其中包括:设置CPSR响应位的值使处理器进入特定的处理器模式;安要求屏蔽中断,通常应该屏蔽IRQ中断。在FIQ总断时屏蔽FIQ中断。
3).设置Lr寄存器。将中断相应模式的Lr寄存器的值设为异常中断的返回地址
4).处理程序计数器PC,将PC值设为相应的中断向量的地址,从而实现跳转以执行中断程序。
异常中断的返回
当处理器执行完以上流程之后,处理器已经自中断向量进入异常中的处理状态。异常中断处理完毕之后,在异常中断程序的末端,处理器进入异常中断的返回状态,其流程如下:
1).恢复状态寄存器。将保存在中断模式中的SPSR值赋给当前的状态寄存器。
2).将返回地址赋值到程序计数器。这样程序将返回到异常中断产生的下一条指令或出现问题的指令处执行。
需要注意的是:对于不同的异常中断,其返回地址的计算方法也是不同的,IRQ和FIQ异常中断产生时,程序计数器PC已经更新,而SWI中断和未定义指令中断时由当前指令自身产生的,程序计数器PC尚未更新,所以要计算出下一条指令的地址来执行返回操作;指令预取指中指异常中断和数据访问中断要求,返回到出现异常的执行现场,重新执行操作。
S3C2410X异常中断的响应-返回流程图:
保存状态寄存器CPSR-进入特定模式、屏蔽中断-设置Lr寄存器-设置程序计数器PC
进入中断向量、异常中断的处理程序-恢复状态寄存器-将返回地址复制到程序计数器
4.3异常中断的安装
S3C2410系统通过异常向量表安装异常中断处理程序。即将异常向量表指向异常中断处理程序的入口,实现面向异常中断的跳转,异常向量中断的的入口地址时固定的(0x00-0x1C),系统运行到满足异常中断时,系统将自动跳入相应的异常中断向量表中,而在异常向量表中保存的正是利用跳转指令或LDR指令指向该中断的异常中断处理程序,这就实现了异常中断处理程序的安装。
1).利用跳转指令实现异常中断的安装
将BL指令放置到中断向量表的特定位置,跳转目标地址为中断处理程序的首地址,便可直接实现异常中断的安装。其优点是BL指令可以直接保存地址,缺点是BL的跳转范围只有32MB的地址空间。
2).利用ldr指令实现异常中断的安装
利用ldr直接向程序计数器PC中赋值也可以实现中断处理程序的安装。先要将异常中断处理程序首地址的绝对地址放在临近的一个存储单元中,然后用ldr命令将该内存单元中的地址读取到PC中。其优点是可调用程序的范围不受限制。
5.S3C2410的中断控制器
源中断申请寄存器SRCPND
SRCPND寄存器32位中的每一位对应着一个中断源,每一位被设置为1,则相应的中断源产生中断请求并且等待中断被服务。因此,这个寄存器表明了哪个中断源在等待中断请求被处理。注意,SRCPND寄存器的每一位时由中断源自动设置的,而不管INTMSK寄存器中的屏蔽位。另外,SRCPND寄存器不影响中断控制器的优先级逻辑。
在指定中断源的中断服务程序中,SRCPND寄存器相对应的位必须被清楚来正确相应来自统一中断源的中断请求。如果从ISR返回而没有清除相应的位,也就是SRCPND寄存器中的对应位还是为1,那么就会一直响应这个中断请求。
对应位清楚的时间依赖于用户的需求,如果想要从同一中断源接收另一次有效中断请求,你在第一次就应该清除相应的位,并且使能中断。
下表为SRCPND寄存器的地址和位定义说明
中断模式寄存器(INTMOD)
中断模式寄存器(INTMOD)的32位中的每一位对应一个中断源,当INTMOD的每一位都设置位1,则ARM内核将以FIQ模式相应中断,否则将以IRQ模式相应中断。
INTMOD寄存器的定义如下表:
中断请求寄存器INTPND
中断请求寄存器32位中的每一位对应着相应的中断请求,经过优先级逻辑后,INTPND
寄存器只能有一位被设置为1,并且向ARM产生中断请求。在IRQ中断服务子程序,能够读取这个寄存器的指来决定32个中断源的那一个中断被服务。
同SRCPND寄存器,在中断服务子程序里,这个寄存器的值需要被清除。我们可以向INTPND寄存器写一个数据来清楚寄存器的制定位。
中断屏蔽寄存器INTMSK
在INTMSK寄存器中,32位依次对应着每个中断源,如果指定位被设为
文档评论(0)