中电网 加入收藏
设为首页
EN | 繁体
用户:
密码:
          登录      注册
  新闻中心 最新产品 设计应用 在线座谈 紧缺人才培训 研讨会 在线商店 解决方案 电子百科 技术论坛
  首页 新闻中心 最新产品 设计应用 在线座谈 紧缺人才培训 研讨会 电子商城 解决方案 电子百科 博客 技术论坛
空白
 
空白
   您现在所处的位置: 首页 > 嵌入式系统 >嵌入式系统应用>Bluetooth> 正文
ARM S3C2410X系统中断编程机制的研究与应用
2008年6月23日 15:50     
作者:丁雷 陶俊才

本文介绍了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中断向量表来进行。具体步骤是:

(1)在S3C2410X系统初始化程序中放置IRQ异常中断解析程序的入口地址。通过ARM两条微指令来实现:

LDR       PC,  IRQ_Addr

IRQ_Addr          DCD       INT_IRQ


上面代码中的INT_IRQ是该系统中IRQ解析程序的入口地址。只要有一个IRQ中断请求,系统就会自动的跳转到IRQ异常中断解析程序。

(2)编写IRQ中断解析程序。中断服务程序通常是由高级语言编写,不好控制固定地址开始的跳转流程。然而ARM处理器响应中断的时候,总是从固定的地址开始的。为了使得上层应用程序与硬件中断跳转联系起来,需要编写一段中间的服务程序来进行连接。这样的服务程序常被称作中断解析程序,通常用ARM汇编指令编写。IRQ中断解析程序要做的工作主要是:将相关工作寄存器中的数据压栈保存;查寄存器INTOFFSET找出对应的中断源,根据IRQ中断向量表将该中断源对应的中断服务程序的入口地址装入程序计数器PC中执行。

(3)编写对应中断源的中断服务程序。流程图如图1所示:



图1 中断服务程序流程图

其中,中断现场保存的工作是:切换到System模式,关闭中断,将中断返回地址压栈。中断返回的工作是:返回到IRQ模式,开中断,从堆栈中取出返回地址和中断之前相关工作寄存器中的内容,重新执行主程序。中断服务的工作是具体实现外部设备向CPU请求的中断服务。
[1]   [2]   页 下一页
   基于ARM的嵌入式系统中从串配置FPGA的实现
   高清晰消费类电子系统和内存架构
   一种应用于ARM7的CMOS图像采集系统
   基于ARM和加速度传感器的电子画笔设计
   扩大ARM SoC的验证覆盖缩短仿真时间
   ARM处理器核的分类
   LPC2294的实时时钟显示工程设计分析
   高性能嵌入式ARM MPU在医疗电子系统中的应用
用户名:   密码:   
匿名发表
 
空白
技  术  频  道
        嵌入式系统     电源管理
        3G手机     汽车电子
        数字电视     消费电子
        传感器     通信技术
        工业控制     测试测量
        可编程逻辑     中国RoHS
        DSP与MCU     无源元件
        电子制造     模拟电路
空白
2008年4月10日   10:00-12:00
LaserStreamTM - 采用优化的低功耗设计的新一代导航传感器
座谈公司:Avago
2008年5月20日   10:00-12:00
了解Altera 首推40-nm产品组合
座谈公司:Altera
空白
11月14日:
2007中国电子元件领军厂商评选活动暨“电子元件领军厂商”颁奖仪式
空白
硅紫兰光电池  非话业务  图文传视
超高频晶体管   可视数据   用户电报
异步时分复用   IP地址   高频功率管
请您来编写词条                     更多>>
汽车车载网络技术详解
汽车车载网络系统原理与检修/现代汽车技术丛书
汽车单片机及车载总线技术
车载网络系统结构原理与维修
      博客
   nxp-lpc23**学习笔
   资深人士对嵌入式的入门看法
   数字电路一些问答
   HDL设计探究
   PADS新手的一点心得和技巧
   硬件开发之路
     BBS
   异步FIFO结构(极品资料,
   Intel USB2.0 U
   OSBDM的上位机烧写程序,
   如何正确的使用Cyclone
   富士通MB89F202 中文
   C6000 FFT编程指南(
空白
关于我们   |   网站导航   |   广告招商   |   联系方法   |   专家约稿   |   友情链接
许可证号:粤ICP010067
Copyright © 2000-2007 ChinaECNet All Rights Reserved
Tel: 010-82888222, 0755-83243191
Fax: 010-82888220, 0755-83243291