s3c2410中断控制器工作原理和编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S3C2410的中断控制器 的中断控制器 SRCPND――源中断指示寄存器 源中断指示寄存器 SRCPND寄存器32位中的每一位对应着一个中断源,每 一位被设置为1,则相应的中断源产生中断请求并且等待中断 被服务。因此,这个寄存器表明了哪个中断源在等待中断请 求被处理。注意,SRCPND寄存器的每一位是由中断源自动 设置的,而不管INTMSK寄存器中的屏蔽位是否置1。另外, SRCPND寄存器不影响中断控制器的优先级逻辑。 在指定中断源的中断服务程序中,SRCPND寄存器相对 SRCPND 应的位必须被清除,这样才可以正确响应来自同一中断源的 中断请求。如果从ISR返回而没有清除相应的位,也就是 SRCPND寄存器中的对应的位还是1,那么就会一直响应这 个中断请求。 SRCPND中相应的中断位清除的时间依赖于用户的需求, 如果想要从同一中断源接收另一次有效的中断请求,你在第 一次就应该清除相应的位,并且使能中断。 用户可以通过向SRCPND寄存器的相应位写“1”,这样 可以清除该位。
S3c2410中断控制器的处理框图 中断控制器的处理框图
S3C2410异常中断响应过程和返回过程 异常中断响应过程和返回过程
•
• •
• •
异常中断的响应过程: 异常中断的响应过程: 1).保存处理器当前状态寄存器CPSR的值 到备份程序状态寄存器SPSR中。 2).设置但前程序状态寄存器CPSR的值, 其中包括:设置CPSR响应位的值,使处 理器进入特定的处理器模式;按要求屏蔽 中断,通常应该屏蔽IRQ中断。在FIQ总 断时屏蔽FIQ中断。 3).设置Lr寄存器。将相应中断模式的Lr寄 存器的值设为异常中断的返回地址。 4).处理程序计数器PC,将PC值设为相应 的中断向量的地址,从而实现跳转以执行 中断服务程序。
INTMSK――中断屏蔽寄存器 中断屏蔽寄存器 在INTMSK寄存器中,32位依次对应着每个中断 源,如果指定位被设为1,ARM将不响应中断源的 中断请求(注意,即使在SRCPND相应的位被置位 1的条件下也不响应)。如果屏蔽位为0,则中断请 求可以被响应。
S3C2410的中断控制器 的中断控制器 EXINT0----外部中断出发电平控制寄存器
INTPND――中断请求寄存器 中断请求寄存器 中断请求寄存器32位中的每一位对应着相应 的中断请求,经过优先级逻辑后,INTPND 寄存器只能有一位被设置为 只能有一位被设置为1,并且向ARM产生中 只能有一位被设置为 断请求。在IRQ中断服务子程序,能够读取这个寄 存器的值来决定32个中断源的那一个中断被服务。 同SRCPND寄存器,在中断服务子程序里,这个寄 存器的相应位需要被清除。我们可以向INTPND寄 存器写一个数据1,来清除寄存器的指定位。
工
• ARM的异常中断类型 ARM的异常中断类型 在嵌入式系统中外部设备和cpu通信 主要是靠中断机制来实现的。中断 功能可以解决CPU内部运行速度远 远快于外部总线速度而产生的等待 延时问题。ARM提供的FIQ和IRQ异 常中断用于外部设备向CPU请求中 断服务,一般情况下都是采用IRQ 中断。
八种异常中断
异常中断的返回 当处理器执行完以上流程之后,处理器已经从中断 向量进入异常处理的状态。异常中断处理完毕之后, 在异常中断程序的末端,处理器进入异常中断的返 回状态,其流程如下: 1).恢复状态寄存器。将保存的备份程序状态寄存器 恢复状态寄存器。 恢复状态寄存器 SPSR值赋给当前程序状态寄存器CPSR。 2).将返回地址赋值到程序计数器(PC)。这样程 将返回地址赋值到程序计数器( ) 将返回地址赋值到程序计数器 序将返回到异常中断产生的下一条指令或出现问题 的指令处执行。 需要注意的是:对于不同的异常中断,其返回 地址的计算方法也是不同的,IRQ和FIQ异常中断 产生时,程序计数器PC已经更新,而SWI中断和未 定义指令中断时由当前指令自身产生的,程序计数 器PC尚未更新,所以要计算出下一条指令的地址 来执行返回操作;指令预取指中指异常中断和数据 访问中断要求,返回到出现异常的执行现场,重新 执行操作。
断 概 2、下面是实验三的输出结果:
the main is running the main is running the main is running the main is running the main is running the main is running the main is running the main is running the main is running the main is running the main is running EINT0 interrupt is running. the main is running the main is running the main is running the main is running the main is running the main is running the EINT0 interrupt is running. main is running the main is running the main is running the main is running
嵌入式系列课程 ——《嵌入式编程》 ——《嵌入式编程》
广州大学华软软件学院电子系
S3C2410中断控制工作原理和编程
• ‹D 断 概 工 编
• S3C2410‹D控 断 • S3C2410‹D控 断
断
概
1、cpu和外部设备进行通信的方式: • 无条件传送:外部设备任何时候都 处于就绪状态。 • 有条件传送:外部设备从接受读写 指令开始到就绪需要一段时间。有 条件传送方式可以分为查询方式和 中断传送方式两种。
S3C2410X异常中断的响应-返回流程 异常中断的响应- 异常中断的响应 图: 保存状态寄存器CPSR->进入特定模式、 屏蔽中断->设置Lr寄存器->设置程序计 数器PC 进入中断向量、异常中断的处理程序-> 恢复状态寄存器->将返回地址复制到程序 计数器
• 异常中断的安装 • S3C2410系统通过异常向量表安装异常中断处理程序。即 将异常向量表指向异常中断处理程序的入口,实现面向异 常中断的跳转,异常向量中断的的入口地址是固定的 (0x00-0x1C),系统运行到满足异常中断时,系统将 自动跳入相应的异常中断向量表中,而在异常向量表中保 存的正是利用跳转指令或LDR指令指向该中断的异常中断 处理程序,这就实现了异常中断处理程序的安装。 • 1).利用跳转指令实现异常中断的安装 • 将BL指令放置到中断向量表的特定位置,跳转目标地址为 中断处理程序的首地址,便可直接实现异常中断的安装。 其优点是BL指令可以直接保存地址,缺点是BL的跳转范 围只有32MB的地址空间。 • 利用ldr ldr指令实现异常中断的安装 2).利用ldr指令实现异常中断的安装 • 利用ldr直接向程序计数器PC中赋值也可以实现中断处理 程序的安装。先要将异常中断处理程序首地址的绝对地址 放在临近的一个存储单元中,然后用ldr命令将该内存单元 中的地址读取到PC中。其优点是可调用程序的范围不受 限制。
断
概
CPU处理指令的流程图
S3C2410‹D控 断
工
• ‰n‚Þ 说来cpu‹Yˆ¼‰n 个 两个 断输 管脚, s3c2410这个 socˆ¼ 56个 断 头,这56个 断 头 过说s3c2410内 断控 来管 , 断控 工 管 断 :开关 个 断 、 断优 级 队。
S3C2410‹D控 断
S3C2410的中断控制器 的中断控制器 INTOFFSET――中断偏移量寄存器 中断偏移量寄存器
中 断 偏 移 寄 存 器 INTOFFSET 中 的 值 显 示 了 INTPND寄存器中哪一个IRQ的中断请求,这个位 在清除SRCPND和INTPND后将自动清除。
Baidu Nhomakorabea