s3c2440裸机-异常中断1-异常中断的原理与流程

发布者:EtherealMelody最新更新时间:2024-07-05 来源: elecfans关键字:异常中断  流程 手机看文章 扫描二维码
随时随地手机看文章

1.异常中断概述

在arm架构的处理器中,cpu有7中工作模式,2中工作状态。

1.CPU模式(Mode):

7种Mode: 除了usr/sys,其他5种都是异常模式。我们知道中断属于异常的2中,中断有irq,fiq。

usrsysundefined(und)Supervisor(svc)Abort(abt)irqfiq
用户模式系统模式未定义指令异常模svc管理模式终止模式(1.指令预取终止(读写某条错误的指令导致终止运行);2.数据访问终止(读写某个非法地址程序终止))irq中断快中断


除了usr模式,其他6中为特权模式。 CPU无法从usr模式直接进入特权模式。不能直接进入特权模式,那么怎么进入特权模式呢?

可以通过设置CPSR(后面会讲)进入其他模式。

2种工作State:

ARM state
Thumb state(几乎用不上)

3.寄存器:

(1)通用寄存器:

(2)备份寄存器(banked register):

    CPSR:当前程序状态寄存器(Current Program Status Register) 反映程序处在那种状态

    SPSR:CPSR的备份寄存器 (Saved Program Status Register)  用来保存'被中断前的CPSR'

下图是我们arm状态下的通用寄存器和程序状态寄存器



R13是SP(栈指针)

R14是LR(link register),程序跳转或者发成异常时的返回地址

R15是PC(程序计数器)

假设cpu执行:

mov R0, R8
mov R0,R8_fiq

在usr/System 模式下访问的R8, 但是在FIQ模式下,访问R8是访问FIQ模式专属的R8寄存器,不是同一个物理上的寄存器。 在5种异常模式中每个模式都有自己专属的R13 R14寄存器,R13用作SP(栈), R14(LR)是用来保存发生异常时的指令地址。

为什么快中断(FIQ)有那么多专属寄存器? 这些寄存器称为备份寄存器,我们先看下中断处理流程:

1 保存现场(保存被中断模式的寄存器)---(比如程序正在sys/usr模式下运行,当发生中断时,需要把R0-R14这些寄存器全部保存下来)

2 异常处理(去分辨是哪一个中断源产生了中断,去执行对应的中断服务程序)

3 恢复现场(恢复被中断时保存下来的寄存器R0-R14)


但如果是快中断,那么我就不需要保存系统/用户模式下的R8 ~ R12这几个寄存器,因为在FIQ模式下有自己专属的R8 ~ R12寄存器,省略保存寄存器的时间,加快处理速度,所以它才称得上快中断。

PSR程序状态寄存器: 在异常中断中PSR寄存器会使用的很频繁,PSR寄存器的格式如下图:



我们再来看看下表,反映的是PSR的 M[4:0]与arm工作模式的关系:



我们可以按照上图的对应关系设置CPSR,让其进入与之对应的模式。

4.异常向量表:

异常向量:不同的异常有不同的入口函数,那么这个异常入口函数的地址就是存放在该异常向量的位置。从该异常向量读取到的数据就是异常入口函数的地址。

异常向量表就是由异常向量组成的集合。

下图是我从uboot源代码中截取的smdk2410 的异常向量表:(2440异常向量表也是这个)

.globl _start
_start: b       reset
    ldr pc, _undefined_instruction
    ldr pc, _software_interrupt
    ldr pc, _prefetch_abort
    ldr pc, _data_abort
    ldr pc, _not_used
    ldr pc, _irq
    ldr pc, _fiq

异常向量表对应的地址如下图:



2.异常处理流程

CPU是如何进入到中断模式,执行中断服务程序的?

1.中断前:

下图是中断未触发前的程序执行过程:



那么如何初始化中断?

1,设置中断源(使中断能够产生,让CPU知道是哪个中断)
2,设置中断控制器(设置中断屏蔽,中断优先级)
3,设置中断总开关CPSR (使能中断)

2.中断产生后:

举个栗子:按键按下,产生按键irq。

硬件上的处理流程:

cpu强制跳转到异常向量表上对应的_irq异常向量(0x18)去读取指令(这个是CPU强制执行的,不需要我们去控制)。

具体的进入中断向量和中断返回流程见下图:



进入:
    (1) LR_异常=PC + offset(具体多少看下图)
    (2)SPSR_异常=被中断前的程序模式CPSR
     (3) CPSR被设置成对应的异常模式
    (4)跳转到对应的异常向量去执行

退出(返回):进入和退出就是一个逆过程
    (1)PC= LR_异常 -offset
    (2)被中断前的程序模式CPSR = SPSR_异常
    (3)中断结束,清中断

进入异常和返回异常时pc和lr的关系如下图:



从图中我们发现进入不同异常,offset的值也是有差异的。

软件上的处理流程:

1.当跳转到irq异常向量(0x18)后,发现该处是一条跳转指令“ldr pc, _irq”,

那么会通过ldr绝对跳转指令跳到到真正的中断处理函数_irq去执行。

2.那么在_irq的函数中我们需要按照之前说的**中断处理流程**去执行:

    (1)保存现场

    (2)异常处理(去分辨是哪一个中断源产生了中断,去执行对应的中断服务程序)

    (3)恢复现场


下面用流程图总结下中断产生后的详细处理过程:



关键字:异常中断  流程 引用地址:s3c2440裸机-异常中断1-异常中断的原理与流程

上一篇:s3c2440裸机-异常中断2-und未定义指令异常
下一篇:s3c2440裸机-代码重定位-4-清bss的优化和位置无关码

推荐阅读最新更新时间:2024-11-13 17:25

单片机EEPROM读写数据流程解析
EEPROM 写数据流程 第一步,首先是 I2C 的起始信号,接着跟上首字节,也就是我们前边讲的 I2C 的器件地址,并且在读写方向上选择“写”操作。 第二步,发送数据的存储地址。24C02 一共 256 个字节的存储空间,地址从 0x00~0xFF,我们想把数据存储在哪个位置,此刻写的就是哪个地址。 第三步,发送要存储的数据第一个字节、第二个字节??注意在写数据的过程中,EEPROM 每个字节都会回应一个“应答位 0”,来告诉我们写 EEPROM 数据成功,如果没有回应答位,说明写入不成功。 在写数据的过程中,每成功写入一个字节,EEPROM 存储空间的地址就会自动加 1,当加到 0xFF 后,再写一个字节,地址会溢
[单片机]
单片机EEPROM读写数据<font color='red'>流程</font>解析
智能化应用:车牌识别技术原理与流程
车牌识别技术(Vehicle License Plate Recognition,VLPR)是指能够检测到道路路面高速行驶的车辆并自动提取车辆牌照的信息(含汉字字符、英文字母、阿拉伯数字及号牌颜色)进行处理的技术。车牌识别技术是现代智能交通系统重要组成部分,其应用十分广泛。    车牌识别技术原理   车辆检测:可采用埋地线圈检测、红外检测、雷达检测技术、视频检测等多种方式感知车辆的经过,并触发图像采集抓拍。   图像采集:通过高清摄像抓拍主机对通行车辆进行实时、不间断记录、采集。   预处理:噪声过滤、自动白平衡、自动曝光以及伽马校正、边缘增强、对比度调整等。   车牌定位:在经过图像预处理之后的灰度图像上进行行列扫描
[安防电子]
【ARM】S5PV210芯片的启动流程
S5PV210芯片的设计者的思想 (1)芯片启动后执行iRom(BL0)的内容,进行时钟和看门狗等外设的初始化,将BL1和BL2拷贝到片内SRAM; (2)跳转到片内SRAM执行,完成外部SDRAM的初始化,并将OS从存储设备拷贝到SDRAM内; (3)跳转到SRAM内执行OS的起始代码。 由于U-BOOT的大小的限制,无法全部拷贝到片内的SRAM,所以U-BOOT的设计者设计了一下流程 (1)芯片启动后执行iRom(BL0)的内容,进行时钟和看门狗等外设的初始化,将BL1拷贝到片内SRAM; (2)跳转到片内SRAM内进行执行,完成SDRAM的初始化,将BL2拷贝到SDRAM内,执行。 (3)跳转到SDRAM内的BL2进行执行
[单片机]
【ARM】S5PV210芯片的启动<font color='red'>流程</font>
LPC17XX系列ISP升级流程
说明:在ubuntu下通过“U转串”模块跟LPC17XX开发板的UART0连接上,通过ISP对LPC程序升级。 ISP命令及升级流程简要说明:参考相关文档 http://wenku.baidu.com/view/2f95ba17866fb84ae45c8de5.html 注:对于不同型号的LPC进入ISP的方式会不一样,例如在复位后,要拉低ISP引脚:11XX系列是PIO0_1,17XX系列是PIO2_10。此平台搭建的ISP模式是,用keil或其他Flash Magic软件把LPC的Flash擦除干净,上电复位后自动进入ISP。 ISP升级简要流程说明:参考网上相关文档 http://bbs.dzsc.com
[单片机]
Gartner:预计2019年机器人流程自动化RPA软件收入达13亿美元
Gartner的最新数据显示,机器人流程自动化(RPA)软件收入在2018年增长了63.1%,达到8.46亿美元,成为全球企业软件市场中增长最快的部分。Gartner预计,2019年RPA软件收入将达到13亿美元。 Gartner研究副总裁Fabrizio Biscotti表示:“自上次预测以来,RPA市场在数字业务需求的推动下不断增长。前十大供应商中有九家在2018年的市场份额有所改变。” “ 2018年,排名前五为的RPA供应商占47%的市场份额。排名第六和第七的供应商实现了三位数的收入增长(见表1)。这使得五强排名非常不稳定。 ” 北美继续主导RPA软件市场,2018年占51%的份额,但其份额同比下降2个百分点。西欧排在第
[机器人]
s3c2440 ARM9 裸机驱动第三篇—定时器
定时器这篇是比较艰辛的,过程中出现了很多小问题,有些解决了,有些还是没有完全弄明白,这些问题主要集中在汇编部分的程序。 此部分主要是通过定时器中断的方式实现LED灯的闪烁。 一、硬件部分: 1.LED部分:参见之前的文章 2.定时器: 定时器的频率:Timer input clock Frequency = PCLK / {prescaler value+1} / {divider value} {prescaler value} = 0~255 {divider value} = 2, 4, 8, 16 其中PCLK如果配置了MPLL就是50M,prescaler value配置TCFG0得到,divider
[单片机]
<font color='red'>s3c2440</font> ARM9 <font color='red'>裸机</font>驱动第三篇—定时器
TD-SCDMA产品EMC测试流程
现阶段我们进行TD-SCDMA的EMC测试所依据的标准主要为:《YD/T 1592.1-2007 2GHz TD-SCDMA数字蜂窝移动通信系统电磁兼容性要求和测量方法 第1部分:用户设备及其辅助设备》、《YD/T 1592.2-2007 2GHz TD-SCDMA数字蜂窝移动通信系统电磁兼容性要求和测量方法 第2部分:基站及其辅助设备》。该标准为中华人民共和国信息产业部最新发布的针对TD-SCDMA产品的电磁兼容性测试标准。 对TD-SCDMA产品的EMC检测分为两部分:电磁骚扰检测EMI和电磁抗扰度检测EMS。而EMI的测试对设备、场地、技术的要求甚高,摩尔实验室拥有国际标准的10米,5米和3米法标准暗室,并配置了一
[测试测量]
TD-SCDMA产品EMC测试<font color='red'>流程</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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