原创 ARMS3C44BOX中断开发方法[原创]

2006-10-19 16:37 3379 11 9 分类: MCU/ 嵌入式

[原创]


1 S<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3C44BOX微处理器简介<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


S3C44BOX微处理器是由Samsung Electronics Co.,Ltd为手持设备设计的低功耗、高度集成的基于ARM7TDMI核的微处理器。ARM7TDMI是目前应用最广泛的ARM家族成员之一,是一款经典的通用32位微处理器核,采用精简指令系统(RISC)和流水线结构。S3C44BOX具有丰富的内置部件,包括:8KBcache,内部SRAMLCD控制器,带自动握手的2通道UART4通道DMA,系统管理器(片选逻辑,FP/EDO/SDRAM控制器),代用PWM功能的5通道定制器,I/O端口,RTC8通道10ADC,ⅡC-BUS接口,ⅡS-BUS接口,同步SIO接口和PLL备频器。S3C44BOX采用了一种新的总线结构,即SAMBAⅡ(Samsung ARM CPU 嵌入式微处理器总线结构)和0.25um工艺的CMOS标准宏7单元和存储编译器[1]。它的低功耗精简和出色的全静态设计特别适用与对成本和功耗敏感的应用


2 S3C44BOX中断概述


ARM7TDMI具有外部中断(IRQ)、快速中断(FIQ)和软件中断(Software Interrupt)三种中断方式,其中外部中断和快速中断均是硬件中断。对于ARM7TDMI内核的微处理器来说,中断是作为一种异常来处理的[2]。下表说明了ARM7TDMI的中断特性[3]


1 中断特性表




中断向量地址


异常类型


异常模式


优先级(6最低)


0x8


软件中断


管理模式(svc


6


0x18


外部中断(IRQ)


外部中断(IRQ)模式


4


0x1c


快速中断(FIQ)


快速中断(FIQ)模式


3


S3C44BOX的中断控制器可以接收来自30个中断源的中断请求 。这些中断源来自DMAUARTSIO等芯片内部外围或接口芯片的外部引脚。


中断控制器的任务是在片内外围和外部中断源组成的多重中断发生时,经过优先级判断选择其中的一个中断,通过FIQ(快速中断请求)或IRQ(通用中断请求)向ARM7TDMI内核发出FIQIRQ中断请求。


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />




 

实际上最初ARM7TDMI内核只有FIQIRQ两种中断,其他的中断都是各芯片厂家在设计芯片时定义的,这些中断根据中断的优先级高低来进行处理。特别的是,为了解决一般的中断模式在进入所需的服务程序前需要很长的中断反应时间的问题,S3C44BOX提供了一种新的中断模式——矢量中断模式。它具有CISC结构微控制器的特征,能够缩短中断反应时间[4]


3 S3C44BOX中断处理流程


S3C44BOX处理器的中断处理与其他处理器的处理模式基本上是一致的,只是由于引入了几种不同的处理器模式,使中断处理变得更容易。中断处理流程图如图1所示。其典型步骤如下:


1步:保存现场。当系统出现中断时,处理器首先要做的就是保存现场,这一过程包括:保存当前的PC值到lr(链接寄存器)中,保存当前程序运行状态CPSR到程序状态保存寄存器SPSR中。由于ARM7TDMI采用了三级流水线结构,此时的PC值实际上等于当前指令地址加上8ARM指令时),则返回时还需要将保存的PC值减4,得到当前指令的下一条指令。


2步:模式切换。设置当前程序状态CPSR中相应的位,使处理器进入相应的执行模式。如当进入FIQ模式时,禁止FIQ中断。


3步:获取中断源。如IRQ中断,都从向量地址0x18处开始执行,通常在此地址处放一条跳转指令,跳转到中断程序。


4步:处理中断。获取中断源后,通过中断向量表获取相应中断的处理程序入口,调用对应的中断处理函数。


5步:恢复现场,中断返回。返回时需要恢复处理器模式,包括恢复中断处理用到的所有寄存器、恢复被中断的程序状态到当前程序状态CPSR,并跳转到被中断的主程序。





保存现场




模式切换,进入特定模式




获取中断源




处理中断




恢复现场,中断返回


 

<?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />


1 中断处理流程图


4中断处理程序实例


    下面以可重入外部中断处理程序[5](运行时仍可响应外部中断)为例,说明S3C44BOX的中断处理开发方法。程序中用到了S3C44BOXIRQ中断服务挂起寄存器I_ISPR,用来表示当前正在被响应的中断。


整个中断程序是在武汉创维特信息技术有限公司开发的ADTARM  Development Tools)嵌入式系统开发环境中完成的。


    为了提高执行效率,外部中断处理程序一般用汇编指令编写。在编写可重入常规中断处理程序时,为了防止因寄存器崩溃而无法返回的情况发生,必须先把链接积存器和程序中用的工作寄存器入栈后,才开放中断;等到各寄存器出栈前,必须先关闭中断。


            #   ENTRY


            __entry:


            b       ResetHandler            //复位


            b       HandlerUndef            //未定义的指令


b       HandlerSWI              //软件中断


b       HandlerPabort           //指令预取中止


b       HandlerDabort           //数据访问中止


b       HandlerAbort            //保留异常处理


b       HandlerIRQ              //外部中断请求


b       HandlerFIQ              //快速中断请求


……(略)


 


IsrIRQ:


            SUB         lr,lr,#4


            STMFD       sp!,{lr}            //保存中断返回的PC


            STMFD       sp!,{r0-r4}     //备份寄存器r0-r4


            SUB         sp,sp,#4            //PC预留空间


            STMFD       sp!,{r8-r9}    


            LDR         r9,=I_ISPR          //读取中断状态


            LDR         r9,[r9]


            CMP         r9,#0x0         //检查中断状态


            ……


            ADD         r8,r8,#4           //修改当前的中断偏移


            ……


            LDR         r9,=HandleADC       // HandleADC位于中断地址向量表


                                                起始位置


            ADD         r9,r9,r8


            LDR         r9,[r9]         //从地址向量表中获取入口地址


            STR         r9,[sp,#8]


            MOV         lr,pc               //保存当前PC


            LDMFD       sp!,{r8-r9,pc}  //调用中断例程


            LDMFD       sp!,{r0-r4,pc}  //中断返回,并恢复中断前的处理器模式


 


5 结束语


    中断技术是处理器和系统芯片开发的重要技术。快速、高效的中断处理程序是实时多任务系统设计成功的关键。由于ARM7TDMI内核的微处理器具有相同的中断系统,因此上述中断开发方法同样适合其他ARM7TDMI 内核的CPU

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

sealove518_112732726 2007-1-8 15:34

呵呵,梁兄谢谢了,网络可是你的天地了

用户371870 2006-12-28 17:48

顶一下

用户60745 2006-10-30 16:02

我也在学!

都是ARM7

用户1053025 2006-10-20 17:41

支持!

用户30994 2006-10-20 09:41

不错,正好赶上

用户19679 2006-10-19 16:58

强烈支持原创
相关推荐阅读
用户1253111 2006-10-26 15:08
我们为什么找不到好工作?(一个大学生的反思)
  今年大学毕业生将有6成找不到工作。这是教育部的统计,只能说往少了写。听说一般是7层……   大学生的悲剧。我们读了10多年书,辛辛苦苦换来的文凭成了废纸。我们怎么办?为什么被评为天之骄子的大学生找...
用户1253111 2006-10-26 14:59
震憾你的心灵的照片
军功章啊!母亲的泪,为何而流?...
用户1253111 2006-10-26 14:36
pcb印制电路板设计-常用名词缩略词(珍藏版)
英文                译文   A/D                [军] Analog.Digital, 模拟/数字   AC Magnitude            交流幅度  ...
用户1253111 2006-10-26 14:29
[好东东]各大公司电子类招聘题目精选
模拟电路 1、基尔霍夫定理的内容是什么?(仕兰微电子) 2、平板电容公式(C=εS/4πkd)。(未知) 3、最基本的如三极管曲线特性。(未知) 4、描述反馈电路的概念,列举他们的应用。(仕兰微电子)...
用户1253111 2006-10-26 14:24
通讯专用术语英汉对照
ADM Add Drop Multiplexer 分插复用器 利用时隙交换实现宽带管理,即允许两个STM-N信号之间的不同VC实现互连,并且具有无需分接和终结整体信号,即可将各种G.703规定的接口信...
用户1253111 2006-10-25 16:09
送给IT界众多的熬夜人士,身体第一,工作第二!
日出而作,日落而息。”这是长期以来人类适应环境的结果。熬夜会损害身体健康。因为,人体肾上腺皮质激素和生长激素都是在夜间睡眠时才分泌的。前者在黎明前分泌,具有促进人体糖类代谢、保障肌肉发育的功能;后者在...
我要评论
4
11
关闭 站长推荐上一条 /1 下一条