S3C2440 异常进入和退出

发布者:TranquilDreamer最新更新时间:2016-03-01 来源: eefocus关键字:S3C2440  异常进入  退出 手机看文章 扫描二维码
随时随地手机看文章
      根据异常类型的不同,返回的方式也不同。异常造成下一条指令要从相应的向量表入口读取。

 1 处理器对异常的反应

产生异常时,处理器采取如下动作:

1. 将 CPSR 复制到相应的 SPSR 中。 这会保存当前模式、中断屏蔽和条件标记。

2. 转至ARM状态。

3. 更改相应的 CPSR 模式位,以便:

 

  •  更改为适当的模式,并在该模式的相应编组寄存器中进行映射。
  •  禁用中断。发生任何异常时,都会禁用 IRQ。 在复位时发生 FIQ,会禁用 FIQ。

 

4. 将相应 LR 设置为返回地址。

5. 将 PC 设置为异常的向量地址。

 

2 从异常处理程序的返回

从异常中返回的方法取决于异常处理程序是否使用堆栈操作。 无论是否使用,要返回到异常发生处继续执行,异常处理程序必须:

 

  •  从相应 SPSR 恢复 CPSR
  •  使用相应 LR 中的返回地址恢复 PC。

 

对于不需要从堆栈中恢复目标模式寄存器的简单返回,异常处理程序可通过执行具有以下设置的数据处理指令来完成这些操作:

 

  •  设置 S 标记
  •  PC 作为目标寄存器。

 

所需的返回指令取决于异常的类型。

注意,不必从复位处理程序返回,因为复位处理程序直接执行主代码。

 

处理异常时,如果异常处理程序入口代码使用了堆栈来存储必须保留的寄存器,则可通过使用带 ^ 限定符的加载多个指令来返回。 异常处理程序可使用一条指令返回,例如使用:

LDMFD sp!,{R0-R12,pc}^

为此,异常处理程序必须将以下内容保存到堆栈中:

 

  •  调用处理程序时使用的所有工作寄存器
  •  为产生与数据处理指令相同的效果而修改的链接寄存器。

 

^ 限定符指定从 SPSR 恢复 CPSR。

注意:不能使用任何 16 位 Thumb 指令从异常返回,因为这些指令无法恢复 CPSR。

 

3 返回地址和返回指令

    产生异常时由程序计数器指向的实际位置取决于异常的类型。返回地址可能不必是程序计数器指向的下一条指令。如果异常发生在 ARM 状态,处理器则将 (PC+4) 存储在 lr_ mode。

下面较详细地说明了每一种异常类型如何从处理代码正确返回的指令。 

3.1 从 SWI 和 未定义指令处理程序返回

SWI 和未定义指令异常是由指令本身造成的,因此,处理异常时,程序计数器保持不变(预取指就失败了)。处理器将 (PC+4) 存储在 lr_ mode 中。因而使 lr_mode 指向下一条要执行的指令。要从 lr 中恢复程序计数器,则使用:

MOVS pc, lr

从处理程序返回控制权。

将返回地址推入堆中并在返回时将其弹出的处理程序入口和出口代码为:

STMFD sp!,{reglist,lr}

;...

LDMFD sp!,{reglist,pc}^ 

3.2 从 FIQ 和 IRQ 处理程序返回

执行完每一条指令后,处理器检测中断管脚是否为 LOW(电平),以及 CPSR中断禁用位是否为清除。结果,仅在程序计数器被更新后才发生 IRQ 或 FIQ 异常。处理器将 (PC+4) 存储在 lr_mode 中。使 lr_mode 指向发生异常时尚未执行的指令的下一条指令。处理程序完成后,必须从 lr_mode 指向发生异常时尚未执行的指令处继续运行。该继续执行地址较 lr_mode 中的地址少一个字(四个字节),因此,其返回指令为:

SUBS pc, lr, #4

将返回地址推入堆中并在返回时将其弹出的处理程序入口和出口代码为:

SUB lr,lr,#4

STMFD sp!,{reglist,lr}

;...

LDMFD sp!,{reglist,pc}^

 

3.3 从预取中断处理程序返回

      如果处理器试图在非法地址取指令,则该指令被标志为无效。继续执行已经在流水线中的指令至遇到产生“预取中断”处的无效指令为止。如有将虚拟存储器位置映射到该物理存储器的指令,异常处理程序将无映射关系的指令装入物理存储器并使用 MMU。然后,处理程序必须返回,再次使着运行产生异常的指令。现在装入并执行指令。

因为发出预取中断时程序计数器还没有被更新,所以 lr_abt 指向产生异常的下一条指令。处理程序必须返回至 lr_ABT-4 的指令,请使用下列指令:

SUBS pc,lr, #4

将返回地址推入堆中并在返回时将其弹出的处理程序入口和出口代码为:

SUB lr,lr,#4

STMFD sp!,{reglist,lr}

;...

LDMFD sp!,{reglist,pc}^

 

3.4 从数据中断处理程序返回

当装入或存储指令试图访问存储器时,程序计数器被更新。(PC+4) 的存储值指向产生异常地址处的第二条指令。MMU(如果有)将相应地址映射至物理存储器,处理程序必须返回到原来中断的指令,以便进行第二次执行尝试。因此,返回地址较 lr_abt 中少两个字(八个字节),使用如下返回指令:

SUBS pc, lr, #8

将返回地址推入堆中并在返回时将其弹出的处理程序入口和出口代码为:

SUB lr,lr,#8

STMFD sp!,{reglist,lr}

;...

LDMFD sp!,{reglist,pc}^

关键字:S3C2440  异常进入  退出 引用地址:S3C2440 异常进入和退出

上一篇:ARM7和ARM9流水对PC的影响
下一篇: 对ARM加载域和运行域的理解

推荐阅读最新更新时间:2024-03-16 14:45

s3c2440学习系列6(dma 续)
DMA优点是其进行数据传输时不需要CPU的干涉,可以大大提高CPU的工作效率。 DMA大容量数据传输中非常重要,比如图像数据传输,SD卡数据传输,USB数据传输等等。 S3C2410有四个DMA,每个DMA支持工作方式基本相同,但支持的source Dest可能略有不同。 那么怎么使用DMA呢,S3C2410内部集成了DMA控制器,我们只需要简单的配置一下寄存器就可以实现DMA的传输了。 步骤与要点: 1.数据从哪里来,到哪里去? 使用DMA当然首先我们要知道数据的流向,DISRCx寄存器是DMA初始源寄存器存放了数据的源地址。DIDSTx是DMA的初始目的寄存器,应该存放数据的目的地址。 2.数据走得什么总线
[单片机]
s3c2440为例的arm芯片的启动过程
arm 嵌入式芯片的启动过程对于嵌入式菜鸟来说其实是很复杂的,很多人都是一知半解,存在很多误区。在笔者看来,要想真正了解这一启动过程必须要首先了解存储器的区别与联系,参考文章:各种主流半导体存储器的区别与联系。还需要了解程序是如何编译链接和执行的。 本文将以s3c2440为例详细讲述 arm 芯片的启动过程。s3c2440支持两种启动模式:NAND FLASH 启动和非 NAND FLASH 启动(一般是NOR FLASH 启动,并且可以配置数据宽度),通过 OM1、OM0 两个管脚来控制。 NAND FLASH启动过程 当 OM1、OM0 两个管脚都为低电平时,CPU 就被配置成了 NAND FLASH 启动。此时 CP
[单片机]
以<font color='red'>s3c2440</font>为例的arm芯片的启动过程
s3c2440的IIS应用——放音与录音
IIS(Inter-IC Sound)由飞利浦公司开发,是一种常用的音频设备接口,主要用于CD、MD、MP3等设备。 s3c2440一共有5个引脚用于IIS:IISDO、IISDI、IISSCLK、IISLRCK和CDCLK。前两个引脚用于数字音频信号的输出和输入,另外三个引脚都与音频信号的频率有关,可见要用好IIS,就要把信号频率设置正确。IISSCLK为串行时钟,每一个时钟信号传送一位音频信号,因此IISSCLK的频率=声道数 采样频率 采样位数,如采样频率fs为44.1kHz,采样的位数为16位,声道数2个(左、右两个声道),则IISSCLK的频率=32fs=1411.2kHz。IISLRCK为帧时钟,用于切
[单片机]
s3c2440串口编程
0、串口总线标准:RS-232C RS-422A RS-485 1、串口通讯,分为同步通讯和异步通讯,我们通常使用的都是异步串口。通讯时,双方先约定好数据帧的格式,即波特率,数据位,停止位,奇偶校验位等。 2、串口通信数据格式 3、串口接线 1) 两端的插头上有1-9的标号,如果用万用表测相对应号码的针都是短通的,就是直连线。 不是一对一通的就是交叉。 交叉就是收-发,发-收,一样设备用平行就会发-发,收-收 我们用的是交叉串口线。 2) 进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 正逻辑:高电平---1
[单片机]
<font color='red'>s3c2440</font>串口编程
华灿光电并购美新遭质疑 IDG自买自卖套利退出
     华灿光电在21日的重组进展公告中透露,公司拟收购标的为全球领先的微机电(MEMS)传感器企业MEMSIC,INC.(USA)(美新半导体)。   有业内人士分析指出,鉴于美新半导体的成本控制优势和中国中低端市场容量,短期来看该项收购有利于上市公司。但值得关注的是,美新半导体的传感器技术已不够先进,其基于AMR技术的新产品亦具有潜在的专利授权风险,加上缺乏“组合”的陀螺仪技术,或不具有长期发展优势。此外,鉴于华灿光电大股东Jing Tian Capital I归属IDG-Accel旗下,而美新半导体正是于2013年被IDG-Accel中国成长基金II及旗下附属基金(简称“IDG”)私有化的,有投资人士评价这是一场IDG“
[手机便携]
s3c2440头文件之Def.h
#ifndef __DEF_H__ #define __DEF_H__ #define U32 unsigned int #define U16 unsigned short #define S32 int #define S16 short int #define U8 unsigned char #define S8 char #define TRUE 1 #define FALSE 0 #define OK 1 #define FAIL 0 #define ESC_KEY ('q') // 0x1b #endif /*__DEF_H__*/
[单片机]
国家电网:下决心退出传统制造业和房地产业务
(记者 张玉洁)3月22日,中央纪委国家监委网站公布了对国家电网第三轮巡视整改进展情况。其中,国家电网表示,将坚守电网主责主业,下决心退出传统制造业和房地产业务。 国家电网在通报中表示,全面完成一般工商业电价降价任务,着力优化营商环境。全力配合电力交易机构规范独立运营、增量配电改革试点。以更高的政治站位坚守电网主责主业,下决心退出传统制造业和房地产业务,坚决按期完成深化集体企业改革任务。对巡视指出的电网技术“卡脖子”风险,制定专项计划,加强创新联合体建设,全力开展攻关,加快核心技术自主化,抢占能源互联网科技制高点。加大对国家贫困县电力公司的资金投向力度,助力打赢脱贫攻坚战。
[新能源]
台湾称英特尔退出WiMAX对业界影响有限
7月21日消息,英特尔台湾WiMAX办公室改组,在台湾引起轩然大波。昨日,台湾经济部重申全力支持业界发展 WiMAX,并称英特尔的撤出,对台湾WiMAX业界影响有限。而台湾WiMAX产业链上下游企业也一同造势支持WiMAX的发展。   政府力挺WiMAX   昨天下午临时召开记者会,经济部次长黄重球强调,经济部全力支持产业界发展WiMAX,英特尔即使是退出,WiMAX发展是“气势会弱”,但实质影响有限。   他表示,英特尔芯片在 WiMAX芯片市占率为1.3%,并非芯片主要提供者。联发科在 WiMAX芯片市占率为5.4%,比英特尔还高。 在 WiMAX产业链中,手机、基站及其他产品,英特尔没有介入这些领域。   经济
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • Linux内核移植
    实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核下面以Linux2 6 30 4内核移植到gec2440为例:一、准备 ...
  • S5PV210 PWM定时器
    第一节 S5PV210的PWM定时器S5PV210共有5个32bit的PWM定时器,其中定时器0、1、2、3有PWM功能,定时器4没有输出引脚。PWM定时器使用PCLK_PS ...
  • S5PV210 NAND Flash
    NAND Flash关于NAND FlashS5PV210的NAND Flash控制器有如下特点:1) 支持512byte,2k,4k,8k的页大小2) 通过各种软件模式来进行NAND Fl ...
  • S5PV210串口
    串口设置之输入输出字符S5PV210 UART相关说明 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER,它用来 ...
  • S5PV210按键控制LED
    原理图如图所示:查询用户手册得到:程序例子:(完整代码见“代码下载链接”)1、轮询的方式查询按键事件 *main c* 核心代码如下:while(1 ...
  • S5PV210控制蜂鸣器
  • S5PV210的启动过程
  • S5PV210点亮LED
  • S5PV210启动过程详解
何立民专栏 单片机及嵌入式宝典

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

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