ARMS3C2410X系统中断编程机制的研究与应用._第1页
ARMS3C2410X系统中断编程机制的研究与应用._第2页
ARMS3C2410X系统中断编程机制的研究与应用._第3页
ARMS3C2410X系统中断编程机制的研究与应用._第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM S3C2410系统中断编程机制的研究与应用摘 要:本文介绍了 ARM S3C2410系统的异常中断响应和返回过程,重点讨 论了 ARM S3C2410系统中采用IRQ响应外设向CPU青求服务的中断编程机制, 并用一个实例展示这种中断编程机制的应用。关键词:ARM IRQ;中断编程机制 0 引言在嵌入式系统中外部设备的功能实现主要是靠中断机制来实现的 , 即将设备功能 程序的实现以中断服务子程序的形式进行组织。中断功能可以解决CPU内部运行速度远远快于外部总线速度而产生的等待延时问题。因此实现中断的响应 ,解 析中断源跳转和中断返回等操作成为编程的关键。这也是困扰初学者的一个难 题。中断

2、处理的编程实现需要深入了解 ARM内核和处理器本身的中断特征,从 而设计一种快速简便的中断编程机制。1 S3C2410X 系统的异常中断S3C2410X是基于ARM920T内核处理器。该系统提供的 FIQ和IRQ异常中断用于 外部设备向CPU请求服务,一般情况下都是采用IRQ。S3C2410X系统中通常在 存储区的低端固化了一个 32字节的硬件中断向量表,用来指定各异常中断及其 处理程序的对应关系。当一个异常出现后,S3C2410X系统中ARMi理器对异常中断的响应过程如下:(1)保存处理器当前状态、中断屏蔽位以及各条件标志位。将当前程序状态寄存器CPSR勺内容保存到将要执行的异常中断对应的

3、SPSR寄存器 中。(2)设置当前程序状态寄存器 CPSF中相应的位。包括设置 CPSF中的位,使处理器进入相应的执行模式;设置 CPSF中的位,禁止IRQ中断,当进 入FIQ模式时,禁止FIQ中断。(3)将寄存器 lr_mode 设置成返回地址。(4)将程序计数器值(PC),设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序执行。从异常中断处理程序中返回包括下面两个基本操作:(1)恢复被中断的程序的处理器状态,即将 SP SR_mocl寄存器内容复制到当前程序状态寄存器 CP SR中。(2)返回到发生异常中断的指令的下一条指令处继续执行,即将lr_mode寄存器的内容复制到程序

4、计数器 PC中。当异常中断发生时,程序计数器 PC所指的位置对于各种不同的异常中断是不同 的,同样,返回地址对于各种不同的异常中断也是不同的。例外的是复位异常 中断处理程序不需要返回,因为整个应用系统是从复位异常中断处理程序开始 执行的。2 S3C2410X 系统的中断编程机制 如前所述,S3C2410X系统一般采用IRQ异常中断来帮助外部设备向CPU青求服 务。S3C2410X系统可接受32个异常中断源,同时也构成了一个IRQ中断向量 表。在该表中可以放置自己编写的对应中断源的中断服务程序入口地址。 S3C2410X系统的中断编程就是基于这张IRQ中断向量表来进行。具体步骤是:IRQ异常中断

5、解析程序的入口地址。(1)在S3C2410X系统初始化程序中放置 通过ARM两条微指令来实现:LDRPC, IRQ_AddrIRQ_AddrDCDINT_IRQINT_IRQ是该系统中IRQ解析程序的入口地址。只要有一个IRQ上面代码中的中断请求,系统就会自动的跳转到IRQ异常中断解析程序。(2)编写IRQ中断解析程序。中断服务程序通常是由高级语言编写,不好控制 固定地址开始的跳转流程。然而 ARM处理器响应中断的时候,总是从固定的地 址开始的。为了使得上层应用程序与硬件中断跳转联系起来,需要编写一段中 间的服务程序来进行连接。这样的服务程序常被称作中断解析程序,通常用 ARM匚编指令编写。I

6、RQ中断解析程序要做的工作主要是:将相关工作寄存器中 的数据压栈保存;查寄存器INTOFFSE找出对应的中断源,根据IRQ中断向量 表将该中断源对应的中断服务程序的入口地址装入程序计数器PC中执行。3)编写对应中断源的中断服务程序。流程图如图 1 所示:图1 中断服务程序流程图其中,中断现场保存的工作是:切换到址压栈。中断返回的工作是:返回到System模式,关闭中断,将中断返回地 IRQ模式,开中断,从堆栈中取出返回地址和中断之前相关工作寄存器中的内容,重新执行主程序。中断服务的工作是 具体实现外部设备向CPU请求的中断服务。基于上述三个步骤,总结出 S3C2410X系统中断编程机制图如图2

7、所示:图2S3C2410X系统中断编程机制图3 S3C2410X系统中断编程机制的应用实例图2所示的中断编程机制可以很好的实现 S3C2410X系统中任何外设向CPU青求 的服务。下面通过一个实例讨论这种中断编程机制:S3C2410X系统中提供了五个 16 位定时器 Timer0、Timer1、Timer2、Timer3、Timer4。现利用定时器 Timer0计数,计数完毕后产生中断,向 CPU青求的中断服务是使系统中的二极 管Led4点亮一段时间再熄灭。依据上述要求,按照S3C2410X系统中断编程架构图编写了系统初始化程序(startup.s)、应用主程序(main.c )、IRQ中断解

8、析程序(INT.S)、定时器 中断服务程序(INT_Timer0_shell.s )、点亮二极管Led4程序( Timer0_LISR.c )。这五个程序的流程图如图 3 所示: 图3 实例程序流程图 值得注意的是在IRQ中断解析程序INT.s中要定义IRQ32个中断源向量表。同 时将定时器中断服务程序 INT_Timer0_shell.s 的入口地址加到向量表中。依据 这个IRQ中断向量表,IRQ解析程序可以找到定时器0的中断服务程序的物理 地址。代码如下所示:DCD0;/ Vector 00DCD0;/ Vector 01DCD0;/ Vector 02DCDINT_Timer0_Shel

9、l;/ Timer0 是INT_Timer0_Shell为定时器 0的中断服务程序入口地址DCD0;/ Vector 31INT_IRQ_Vectors ;/ IRQ32 个中断源向量表10号中断,从此例中可以看出,这种中断编程机制不但可以满足外设所需要的服务,而且 结构流程非常的清晰简便。4 结束语 本文作者创新点:介绍的中断编程机制是嵌入式编程中实用的方法,其原理是 通用的。当然,在实际开发中,需要根据系统处理器 ARM内核的中断特征、处 理器自身的中断控制器特点和实际要求具体细化流程图中的各个步骤和改写参 考代码。参考文献:12 世界 , 2005,3司 , 20054杜春雷.ARM体系结构与编程M.清华大学出版社,2003 庞继勇,唐婷.ARM处理器中断处理的编程实现J.电子产品2旋极科技 .

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论