ARM S3C4510B系统中的异常中断技术

发布者:温柔阳光最新更新时间:2012-03-29 来源: 今日电子 关键字:ARM  S3C4510B  中断技术 手机看文章 扫描二维码
随时随地手机看文章

引言

  随着人们对于电子产品的要求越来越高,以80C51系列为代表的8位处理器系统开始面临越来越多的局限和挑战,人们对于高性能芯片和嵌入式功能的呼声也越来越高。16/32 位的处理器系统得到了前所未有的关注和重视。32位ARM体系系列处理器便是其中的代表。S3C4510B处理器是基于ARM7体系16/32位RISC 处理器,内部集成了8KB的CACHE/SDRAM,内嵌EARTHNET控制器,拥有7种处理器模式和内部多线程和外部多处理器的处理器结构。在嵌入式系统中具有重要意义的异常中断技术在S3C4510B系统中也体现了ARM体系独有的一些的特点。本文根据S3C4510B系统的特点,分析了该系统中七种异常中断的功能及特点。并给出了SWI异常中断(外部中断)和IRQ异常中断(软件中断)的应用实例代码。

1 S3C4510B系统中的异常中断

1.1 S3C4510B系统异常中断的特点

  S3C4510B系统中控制程序执行流程的方式通常有三种,一是正常程序执行过程,即根据指令类型增加程序计数器PC使程序顺序执行;二是通过跳转的方式来控制程序的执行,可以利用跳转的命令执行跳转操作,也可以通过直接修改程序计数器来达到跳转的目的;三是异常中断的方式,可以根据软件的执行情况,外部设备的异常请求等实现内部、外部异常的处理,系统功能的调用和程序进程的控制等功能。

  S3C4510B系统的异常中断具有以下几个特点。首先,作为ARM体系RTOS(实时操作系统)组成部分,程序中的异常中断必须按照ARM体系的要求进行处理器模式的转换。其次,如果对系统的优化有需求时,可以进行32位的ARM处理指令和16位的THUMB指令的转换。另外,S3C4510B处理器正常运行时,保存的返回地址是通过将PC存入LR寄存器完成的,由于中断产生时的计数器PC的值有时已经更新,如产生了外部中断和快速中断等;有时可能尚未更新,如软件中断和未定义指令中止等,故必须根据实际情况对返回地址进行软件修正之后才能正确返回。最后还要注意,ARM体系支持c语言和汇编语言程序的相互之间的调用,并有ATPCS 规则进行协调,所以异常中断处理程序必需按照ATPCS规则进行寄存器处理。


1.2 S3C4510B系统中的异常中断的类型

  S3C4510B拥有七种不同的异常中断类型,分别适应于不同的中断需要。根据ARM系列处理器的特点,各种异常中断对应于ARM系列的不同工作模式。其种类和对应关系如表1所示。

  其中,复位中断是优先级最高的中断。在复位引脚有效的前提下,系统加电或系统复位时都会引起复位中断。数据访问中止是在数据访问指令的目标地址不存在或者该地址不允许当前指令访问的情况下产生的。指令预取中止中断是处理器或系统协处理器认为当前指令未定义,当系统预取该指令时,本中断执行。未定义中止在处理器或系统协处理器认为当前指令未定义时产生,故而可以根据该异常中断机制仿真浮点向量运算。快速中断和外部中断都是在对应的中断请求引脚有效,且状态寄存器中的相应中断禁止标志位清零时产生。其中的外部中断还可以用来进行各系统进程的切换;软中断由用户定义,在程序运行时由SWI指令调用,可用于用户模式下的程序调用特权模式指令。在RTOS系统中可以通过该中断机制实现系统功能调用。

1.3 S3C4510B系统对异常中断的响应

  S3C4510B系统对异常中断的响应流程如下:

  (1) 保存处理器当前状态寄存器CPSR的值、中断屏蔽以及各条件标志位到将要执行的异常中断的SPSR中。 电子电路图
  (2) 设置当前程序状态寄存器CPSR的值。其中包括:设置CPSR相应位的值使处理器进入特定的处理器模式;按要求屏蔽中断,通常应该屏蔽IRQ中断,在FIQ中断时屏蔽FIQ中断。
 




  (3) 设置Lr寄存器。将中断相应模式的Lr寄存器的值设置为异常中断的返回地址。
  (4) 处理程序计数器PC。将PC值设为相应的中断向量的地址,从而实现跳转以执行中断程序。 [page]

  当处理器执行完以上流程之后,处理器已经自中断向量进入异常中断的处理状态。异常中断处理完毕之后,在异常中断程序的末端,处理器进入异常中断的返回状态,其流程如下:

  (1) 恢复状态寄存器。将保存在中断模式中的SPSR值赋给当前的状态寄存器。

  (2) 将返回地址复制到程序计数器。这样程序将返回到异常中断产生的下一条指令或出现问题的指令处执行。

  整个响应与返回的过程如图1所示。

  需要注意的是,对于不同的异常中断,其返回地址的计算方法也是不同的。IRQ和FIQ异常中断产生时,程序计数器PC已经更新,而SWI中断和未定义指令中断是由当前指令自身产生的,程序计数器PC尚未更新,所以要计算出下一条指令的地址来执行返回操作;指令预取中止异常中断和数据访问异常中断要求返回到出现异常的执行现场,重新执行操作。


2 S3C4510B系统中的异常中断处理程序的安装

  S3C4510B系统通过异常向量表安装异常中断处理程序,即将异常向量表指向异常中断处理程序的入口,实现面向异常中断的跳转。这里需要介绍一下 S3C4510B系统的中断向量表。在S3C4510B系统中,无论在地址重映射之前还是之后,异常中断向量表的入口地址为固定的(见表1)。当系统运行到满足异常中断条件而产生异常中断时,系统将自动跳入相应的异常中断向量表中。而在异常向量表中保存的,正是利用跳转指令或ldr指令指向该中断的异常中断处理程序的指令程序,这样就实现了异常中断处理程序的安装。以SWI软中断为例,异常中断安装的基本顺序如图2所示,其中异常中断向量的地址是固定的,其他地址为假设的。

2.1 利用跳转指令实现异常中断的安装

  将BL指令放置到中断向量表的特定位置,跳转目标地址为中断处理程序的首地址,便可直接实现异常中断的安装。其优点是BL指令可以直接保存地址,缺点是BL的跳转范围只有32MB的地址空间,如bl SWI_Handler。

2.2 利用ldr指令实现异常中断的安装

  利用ldr直接向程序计数器PC中赋值也可以实现中断处理程序的安装。先要将异常中断处理程序首地址的绝对地址放在邻近的一个存储单元中,然后用ldr命令将该内存单元中的地址读取到PC中。其优点是可调用程序的范围不受限制,如:

ldr pc,SWI_ADDR
……
SWI_ADDR dcd SWI_Handler
以上两种安装方法各有优缺点,需要根据实际情况来选择。 电子技术书籍网

3 S3C4510B系统中SWI异常中断实例

  S3C4510B中的SWI指令可以用来实现RTOS中的系统功能调用。它由用户模式下当前执行的指令引发,通过一个24位的立即数来指代SWI需要调用的系统功能,调用执行的过程在特权模式中进行。

3.1 SWI异常中断的处理程序

  通常我们把SWI的中断处理程序分为两级,分别完成立即数的读取和功能调用的执行。其指令代码如下:
……

stmfd sp!,{r0-r12,lr}
保护现场,保存寄存器的值
ldr r0,[lr,#-4]
lr寄存器保存指令
bic r0,r0,#0XFF000000 ;读取指令中的24位立即数
……
cmp R0,#MaxOfSWI
判断立即数是否有效
ldrls pc,[pc,r0,lsl #2]
b OutOfSWIRange ;超出范围
JumpListofSWI
dcd SWIPro_0
dcd SWIPro_1
……
其他所有的软中断入口
SWIPro_0
进入SWI对应立即数0的中断处理程序
……
对应立即数0的中断处理程序
b EndOfSWI
SWIPro0
进入SWI对应立即数1的中断处理程序
……
对应立即数1的中断处理程序
b EndOfSWI
……
其他的SWI处理程序
EndOfSWI
1dmfd sp!,{r0-r12,pc}^
恢复各寄存器 [page]

3.2 SWI异常中断的调用与返回

  对于SWI异常中断的调用要根据中断现场所处的处理器模式进行调用。通常用户模式下调用SWI功能只需将处理器所需要的参数存放于寄存器中,然后调用相应功能号的系统功能。

Mov r0,#80
假设参数为#80
swi 0X1
SWI中断立即数1
由于SWI中断功能调用在特权模式下执行,故而当在特权模式下调用SWI功能时,必须对当前模式下的SPSR和寄存器LR进行保存。
stmfd sp!,{r0-r12,lr}
保存寄存器
mov r1,sp
mov r0, spsr_svc
stmfd sp!,{r0} ;保存SPSR
……
读取立即数,调用SWI中断处理程序
ldmfd sp!,{r0}  ;恢复SPSR
msr spsr_svc, r0
ldmdf sp!,{r0-r12,lr}^ ;恢复其他寄存器

4 S3C4510B系统中的IRQ异常中断实例

4.1 IRQ异常中断的产生

  S3C4510B处理器系统常用于进行外部异常的响应和操作系统进程的控制。CPSR寄存器的I控制位置0时,处理器在指令边界查询是否有IRQ请求,系统的外部中断管理器或者外设通过使能处理器的IRQ输入管脚产生IRQ异常中断。

4.2 IRQ异常中断的处理程序

  IRQ异常中断产生后,根据中断向量的指令跳入相应的中断处理程序。系统的外围中断管理硬件会将所用的IRQ中断请求按照优先级进行排列,把最高优先级的IRQ中断的信息放入寄存器中。通常的IRQ中断处理程序也需要保存返回地址、寄存器,而且需要屏蔽IRQ中断,以保证优先级较高的中断完全处理。
sub lr,lr,#4
stmfd sp!,{lr}
保存返回地址
mrs r14,spsr_irq
stmfd sp!,[r12,r14]
保存r12,spsr
mov r12,#IntBase
读取中断管理接口的基址

ldr r12,[r12,#IntLevel]
计算当前中断的物理地址
mrs r14,cpsr
bic r14,r14,#0X80
清零IRQ中断禁止位
msr cpsr_irq,r14
开IRQ中断
ldr pc,[ pc,r12,lsr #2]
跳转到相应的中断处理程序
dcd PirQ0Handler
dcd PirQ1Handler

dcd PirQnHandler
优先级为n的中断处理程序地址
PirQ0Handler
stmfd sp!,{r0-r11}
……
优先级为1的中断处理程序
ldmfd sp!,{r0-r11}
msr spsr_irq,r14
恢复r12和spsr
ldmfd sp!,{pc}^ ;中段返回
……
dcd PirQnHandler
中断优先级为N的中断处理程序
……

4.3 IRQ异常中断在进程控制中的应用

  S3C4510B处理器系统中的进程之间的切换也是通过IRQ来完成的。操作系统中的每一个进程都由进程控制块PCB来表示,PCB中包含了进程相关的信息。比如,当某一进程进行到一定的程度时,利用IRQ中断将当前进程中断,保存需要保存的寄存器的值之后,切换到另一进程中执行。

5 结束语

  S3C4510B的异常中断机制较为复杂,但也正是因为其复杂的机制,使我们在开发的过程中有了更灵活的选择。用好了异常中断,不仅可以实现系统的实时响应,而且对于提高系统效率和提升整体性能方面都有着很大的帮助。希望本文能够对S3C4510B系统的开发者有所帮助。

参考文献

1 杜春雷.ARM体系结构与编程. 北京:清华大学出版社
2 马忠梅,马广云等.ARM嵌入式处理器结构与应用基础. 北京:北京航空航天大学出版社,2002.6
3 S3c4510b Data Sheet. SAMSUNG.1999.3
4 ARM Limited. Developer suit(Version 1.1), Assembler Guide.ARM DUI 0068A,2000

关键字:ARM  S3C4510B  中断技术 引用地址:ARM S3C4510B系统中的异常中断技术

上一篇:W90P710评估板的开发与应用研究
下一篇:用AT91 RM9200构建高可靠嵌入式系统

推荐阅读最新更新时间:2024-03-16 12:56

基于Keil MDK-ARM 和 IAR EWARM进行仿真打印的配置
1写在前面 很多初学者习惯使用软件仿真,应该是很多人都知道的一款仿真软件。 以前开发板相对较贵,且快递不方便,使用仿真软件可以理解。现在便宜的STM32开发板就十几块,还用仿真软件,我不是很理解。 有经验的人都知道,仿真和实际运行情况很多时候都不一样,相信不用我说,大家都明白。 因此,我个人不是很推荐大家仿真,本文内容可能存在纰漏,仅限个人学习。 下面讲述基于Keil MDK-ARM 和 IAR EWARM进行仿真打印的配置。 2Keil仿真打印配置 Keil MDK-ARM不能仿真,原因出在仿真参数出现了问题: 修改这两处参数为:DARMSTM.DLL -pSTM32F103ZE 基于前面使用STM32CubeMX生成工
[单片机]
基于Keil MDK-<font color='red'>ARM</font> 和 IAR EWARM进行仿真打印的配置
ARM矩阵键盘设计及其linux驱动实现
在嵌入式系统开发中,经常通过键盘来实现人机交互。本文介绍了一种直接利用ARM的I/O口扩展矩阵键盘的方法。同时以TQ2440开发板为例,对硬件电路连接和相应的linux驱动设计方法都作了详细说明。 1.引言 ARM微处理器已广泛应用于工业控制、消费类电子产品、通信系统等领域。矩阵键盘是一种常用的键盘形式,它将按键设计成M行N列,这样共需M+N根信号线,却可驱动M×N个按键,大大节约了I/O资源。本文介绍了一种利用TQ2440开发板的GPIO口扩展5×4矩阵键盘的方法,并将所有按键重新布局成手持终端的键盘形式,方便操作。 2.硬件设计 本设计扩展5行4列的矩阵键盘,如图1所示。其中行线ROW1-ROW5连接S3C24
[单片机]
<font color='red'>ARM</font>矩阵键盘设计及其linux驱动实现
arm-linux-gcc 和Makefile
Makefile文件编写 all: arm-linux-gcc -c -o led_on.o led_on.s arm-linux-ld -Ttext 0 led_on.o -o led_on.elf //arm-linux-ld用于将多个目标文件、库文件链接成可执行文件 -T选项是用来指定代码段、数据段、bss段的起始地址,也可以用来指定一个连接脚本,在脚本中进行更复杂的地址设置 -Ttext 0 指定代码段的起始地址为0 -Tdata 用来指定数据段 -Tbss用来指定bss段的起始地址 arm-linux-objcopy -O binary -S led_on.elf led_on.bin //用来复制一
[单片机]
ARM核心板在交通信号机中的应用
心理学有一个概念叫 时间知觉 , 指人的时间知觉与活动内容、情绪、动机、态度有关。最直接的例子:急于等待某个结果的时候,总感觉时间过的慢。 上周一上班迟到等红灯,感觉红灯等待时间远远超过平时!和同事谈论,直接一个 时间知觉 的概念把我给砸懵了!为了探究是否是时间知觉的原因,下班后请度娘做了一下脑补,最终结论:红灯时间比平时长,确实长! 一起了解下红绿灯控制。 交叉路口的红绿灯是通过交通信号机来控制的,交通信号控制机通过变换交叉口交通灯信号的颜色,使得在时间和空间上相冲突的车辆及行人安全、高效的通过交叉口,实现对交通流的合理控制,达到疏导、改善交通流的目的 。控制方式包括: 1、感应控制 根据检测到的交通流数
[单片机]
<font color='red'>ARM</font>核心板在交通信号机中的应用
ARM9学习笔记之——SDRAM实验
最近,我有努力学习《深入浅出嵌入式底层软件开发》。我自我觉得这本书很好。如果你有一块Mini2440的开发板,那就再好不过了。 学了点东西,写点总结。以下是我在做 Page130,2.6.8内存驱动实验总结。 ------- 我按照书上的指示,完成了代码的编写。对项目作如下配置: 上述的配置中 -ro-base 0x30000000 告诉Linker,本程序将被加载到 0x30000000 上运行。 实验程序的功能是,程序最初是在0x00000000 地址上开始运行。它初始化SDRAM后,将自己到0x30000000地址上,然后跳到SDRAM中运行。 第一个问题:我在用AXD进行调试时,总是发现
[单片机]
<font color='red'>ARM</font>9学习笔记之——SDRAM实验
苹果基于ARM架构MacBook曝光:和硕抢了头彩
苹果MacBook   新浪数码讯 5月30日上午消息,据《电子时报》报道,和硕联合已经拿到了苹果基于ARM架构的MacBook电脑的订单。此外,《电子时报》也确认了之前彭博社的报告,全新 ARM MacBook 的内部代号为星辰(Star),系列号码为 N84。不过和硕没有透露具体生产时间。   目前市场上已经有不少基于ARM架构的笔记本产品,包括华硕、惠普、联想等老牌厂商都有产品展出。这类产品最大的特点是低功耗长续航,不过性能如何还是个问号。在今年的电脑展会有更多ARM架构的笔记本产品问世。   有关于苹果最终会推出ARM Mac的传言已经存在很长时间了。去年9月就有报告称苹果正在 ARM MacBook。这个想法背后的基本
[手机便携]
基于ARM7的CAN-USB转换器设计
引言 ABS(防抱死刹车系统)ECU(电控单元)在研发过程中,为了实时确定其行车参数和控制参数,通常会使用标定技术,标定技术就是通过一定的命令对ECU上传和读取控制算法参数,以达到对其实时修改以寻求最优的技术。对于车载电控单元来说,其通常只有CAN总线通信接口,为了能实现上位机和ECU能直接进行通信,实现利用标定技术对ABS ECU进行开发,我们设计了一款能实现CAN到USB的数据转换器。CAN通信协议是一种用于汽车内部测量与执行部件之间的数据通信协议。而USB具有即插即用的优点,并且有较高的通信速率,对于实现上位机和下位机的通信进行标定十分方便。我们设计的数据转换器采用了NXP公司的LPC2119 ARM7处理器,通过它成功地
[应用]
基于ARM11和DSP协作视频流处理技术的3G视频安全帽设计
  1.引言   为提高在高危工作场所现场作业的可控性,本文采用仿生学原理和高集成度设计实现了与人眼同视角的3G视频安全帽。本设计由视频安全帽和腰跨式数据处理终端两部分组成,采用高可靠性航空插头连接。其中图像处理采用三星公司的S3C6410ARM11处理器和TMS320DM642 DSP处理器组成。本设计结合DSP处理器在视频压缩方面的优势和运行于ARM之上的Linux操作系统在数据管理与任务调度机制方面的出色表现,由DSP完成图像处理功能,并通过高速接口把视频数据传输给嵌入式微处理系统,完成视频数据的传输、存储功能。   2.系统构成   本设计由视频安全帽和腰跨式视频终端两部分组成。视频安全帽中包含1路视频输
[嵌入式]
基于<font color='red'>ARM</font>11和DSP协作视频流处理<font color='red'>技术</font>的3G视频安全帽设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved