碧波液压网 欢迎你,游客。 登录 注册

ARM S3C2410X系统中断编程机制的研究与应用

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  本文介绍了ARM S3C2410X系统的异常中断响应和返回过程,重点讨论了ARM S3C2410X系统中采用IRQ响应外设向CPU请求服务的中断编程机制,并用一个实例展示这种中断编程机制的应用。

  引言

  在嵌入式系统中外部设备的功能实现主要是靠中断机制来实现的,即将设备功能程序的实现以中断服务子程序的形式进行组织。中断功能可以解决CPU内部运行速度远远快于外部总线速度而产生的等待延时问题。因此实现中断的响应,解析中断源跳转和中断返回等操作成为编程的关键。这也是困扰初学者的一个难题。中断处理的编程实现需要深入了解ARM内核和处理器本身的中断特征,从而设计一种快速简便的中断编程机制。

  1 S3C2410X系统的异常中断

  S3C2410X是基于ARM920T内核处理器。该系统提供的FIQ和IRQ异常中断用于外部设备向CPU请求服务,一般情况下都是采用IRQ。S3C2410X系统中通常在存储区的低端固化了一个32字节的硬件中断向量表,用来指定各异常中断及其处理程序的对应关系。

  当一个异常出现后, S3C2410X系统中ARM处理器对异常中断的响应过程如下:

  (1) 保存处理器当前状态、中断屏蔽位以及各条件标志位。将当前程序状态寄存器CPSR的内容保存到将要执行的异常中断对应的SPSR寄存器中。

  (2) 设置当前程序状态寄存器CPSR中相应的位。包括设置CPSR中的位,使处理器进入相应的执行模式;设置CPSR中的位,禁止IRQ中断,当进入FIQ模式时,禁止FIQ中断。

  (3) 将寄存器lr_mode设置成返回地址。

  (4) 将程序计数器值(PC),设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序执行。

  从异常中断处理程序中返回包括下面两个基本操作:

  (1) 恢复被中断的程序的处理器状态,即将SPSR_mode寄存器内容复制到当前程序状态寄存器CPSR中。

  (2) 返回到发生异常中断的指令的下一条指令处继续执行,即将lr_mode寄存器的内容复制到程序计数器PC中。

  当异常中断发生时,程序计数器PC所指的位置对于各种不同的异常中断是不同的,同样,返回地址对于各种不同的异常中断也是不同的。例外的是复位异常中断处理程序不需要返回,因为整个应用系统是从复位异常中断处理程序开始执行的。

  2 S3C2410X系统的中断编程机制

  如前所述,S3C2410X系统一般采用IRQ异常中断来帮助外部设备向CPU请求服务。S3C2410X系统可接受32个异常中断源,同时也构成了一个IRQ中断向量表。在该表中可以放置自己编写的对应中断源的中断服务程序入口地址。S3C2410X系统的中断编程就是基于这张IRQ中断向量表来进行。具体步骤是:

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论