精华内容
下载资源
问答
  • 中断的理解

    2016-03-15 15:14:00
    中断的理解 cpu的arm核一般有两类中断,IRQ和FIQ,以rtc中断举例,当arm内核产生了内部中断后,cpu的pending控制器会有一个位进行置1,那么cpu就会拉起和arm核的中断口线,那么arm核就会报告给中断向量表,内核...

    中断的理解

     

    cpu的arm核一般有两类中断,IRQ和FIQ,以rtc中断举例,当arm内核产生了内部中断后,cpu的pending控制器会有一个位进行置1,那么cpu就会拉起和arm核的中断口线,那么arm核就会报告给中断向量表,内核注册中断后就可以有kernel来运行中断处理函数,而中断向量表一般都是些跳转语句,用来跳到中断处理函数的地址位置

    如果cpu不做清中断标志位的动作的话,cpu的pending认为还是置1的状态,那么arm核又会报告给中断向量表,这样对于系统来讲中断是一直从核上产生的;如果清中断标志位的话,那么cpu的pending寄存器置为0,此时就不会上报给中断向量表,那么只有下一次中断来临时才会再产生中断。

     

    IRQ和FIQ是ARM处理器的两种编程模式。IRQ是指中断模式,FIR是指快速中断模式。对于 FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被 FIQ 所中断,但 IRQ 不能中断 FIQ。为了使 FIQ 更快,所以这种模式有更多的影子寄存器。FIQ 不能调用 SWI(软件中断)。FIQ 还必须禁用中断。如果一个 FIQ 例程必须重新启用中断,则它太慢了,并应该是 IRQ 而不是 FIQ。

    对FIQ你必须进快处理中断请求,并离开这个模式。

    IRQ可以被FIQ所中断,但FIQ不能被IRQ所中断。在处理FIQ时必须要关闭中断。

    FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。

    一般的中断控制器里我们可以配置与控制器相连的某个中断输入是FIQ还是IRQ,所以一个中断是可以指定为FIQ或者IRQ的,为了合理,要求系统更快响应,自身处理所耗时间也很短的中断设置为FIQ,否则就设置了IRQ。

    如果该中断设置为了IRQ,那么当该中断产生的时候,中断处理器通过IRQ请求线告诉ARM,ARM就知道有个IRQ中断来了,然后ARM切换到IRQ模式运行。类似的如果该中断设置为FIQ,那么当该中断产生的时候,中断处理器通过FIQ请求线告诉ARM,ARM就知道有个FIQ中断来了,然后切换到FIQ模式运行。

    简单的对比的话就是FIQ比IRQ快,为什么快呢?

    ARM的FIQ模式提供了更多的banked寄存器,r8到r14还有SPSR,而IRQ模式就没有那么多,R8,R9,R10,R11,R12对应的banked的寄存器就没有,这就意味着在ARM的IRQ模式下,中断处理程序自己要保存R8到R12这几个寄存器,然后退出中断处理时程序要恢复这几个寄存器,而FIQ模式由于这几个寄存器都有banked寄存器,模式切换时CPU自动保存这些值到banked寄存器,退出FIQ模式时自动恢复,所以这个过程FIQ比IRQ快.

    FIQ比IRQ有更高优先级,如果FIQ和IRQ同时产生,那么FIQ先处理。

    在symbian系统里,当CPU处于FIQ模式处理FIQ中断的过程中,预取指令异常,未定义指令异常,软件中断全被禁止,所有的中断被屏蔽。所以FIQ就会很快执行,不会被其他异常或者中断打断,所以它又比IRQ快了。而IRQ不一样,当ARM处理IRQ模式处理IRQ中断时,如果来了一个FIQ中断请求,那正在执行的IRQ中断处理程序会被抢断,ARM切换到FIQ模式去执行这个FIQ,所以FIQ比IRQ快多了。

    另外FIQ的入口地址是0x1c,IRQ的入口地址是0x18。

     

    ARM 中断处理过程

    转自:http://www.xuebuyuan.com/1444406.html

    1.寄存器R16用作CPSR(Current Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。

    每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。

    由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的

       当中断产生的时候,把CPSR保存在SPSR是自动完成的。

     

    对异常的响应

    当一个异常出现以后,微处理器会执行以下几步操作: (自动处理的)

    1、将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。例如:在软件中断异常SWI,指令MOV PC,R14_svc总是返回到下一条指令,不管SWI是在状态执行,还是在Thumb状态执行。

    2、将CPSR复制到相应的SPSR中。

    3、根据异常类型,强制设置CPSR的运行模式位。

    4、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

    还可以设置中断禁止位,以禁止中断发生。

    如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到状态

     

    从异常返回 (手动处理的)

    异常处理完毕之后,微处理器会执行以下几步操作从异常返回:

    1、将连接寄存器LR的值减去相应的偏移量后送到PC中。

    2、将SPSR复制回CPSR中。

    3、若在进入异常处理时设置了中断禁止位,要在此清除。

    可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。

     

     

     

                                     几种CPU工作模式

     

     

    用户模式(User,usr)

    正常程序执行的模式

    快速中断模式(FIQ,fiq)

    用于高速数据传输和通道处理

    外部中断模式(IRQ,irq)

    用户通常的中断使用

    特权模式(Supervisor,sve)

    供操作系统使用的一种保护模式

    数据访问中止模式(Abort,abt)

    用于虚拟存储及存储保护

    未定义指令中止模式(Undefin- ed,und)

    用于支持通过软件仿真硬件的协处理器

    系统模式(System,sys)

    用于运行特权级的操作系统任务

     

    除用户模式外都是特权模式(任意地进行处理器模式的切换)。。

    除用户模式和系统模式外都是异常模式。

     

    对不同的中断模式都有独立的堆栈和独立的堆栈指针(SP)和(LR)

     

     

    从SWI和Undef异常返回时使用
    movs pc,LR

     

    从FIQ,IRQ和预取终止返回时使用
    SUBS PC, LR, #4

     

    从数据异常返回时使用
    SUBS PC, LR, #8

     

    在使用上述指令异常返回时,如果LR之前被压栈的话使用LDM
    LDMFD SP! {PC}^

     

     

    下面是我的联系方式:

    qq:920052390

    新浪博客:http://blog.sina.com.cn/u/2049150530

    博客园:http://www.cnblogs.com/sky-heaven/

    昵称是:张昺华--sky

    转载于:https://www.cnblogs.com/sky-heaven/p/5279644.html

    展开全文
  • 中断的理解(自学笔记) 单片机中断系统的优点: 1、实现实时处理。 2、实现分时操作。 3、进行故障处理。 4、待机状态的唤醒。单片机嵌入式系统的应用中,为了减少电源的功耗,当系统不处理任何事物,处于待机状态...

    中断的理解(自学笔记)

    单片机中断系统的优点:

    1、实现实时处理。

    2、实现分时操作。

    3、进行故障处理。

    4、待机状态的唤醒。单片机嵌入式系统的应用中,为了减少电源的功耗,当系统不处理任何事物,处于待机状态时,可以让单片机工作在休眠的低功耗方式。通常,恢复到正常工作方式往往也是利用中断信号来唤醒。

    中断处理的过程

    中断系统中,MCU正常情况下运行的程序称为主程序,把产生申请中断信号的单元和事件称为中断源,由中断源向MCU所发出的申请中断信号称为中断请求,MCU接受中断申请并停止现行程序的运行而转向为中断服务称为中断响应,为中断服务的程序称为中断服务程序,现行程序打断的地方称为断点,执行完中断处理程序后返回断点处继续执行主程序称为中断返回。

    img

    其中K就是断点,由于中断服务程序执行完后仍要返回主程序,因此,在执行中断处理程序之前,要将主程序中断点处的地址保存,即中断返回后要执行的命令地址,这个地址就是程序计数器PC的值。这个过程称为保护断点。又由于MCU在执行中断处理程序时,可能会使用和改变主程序使用过的寄存器、标志位、甚至内存单元,因此,在执行中断服务程序前,还要把有关的数据保护起来,称为中断现场保护。在MCU执行完中断处理程序后,又要恢复原来的数据,并返回主程序的断点处继续执行,称为恢复现场。
    中断过程中,断点的保护和恢复操作是由单片机内部硬件自动实现,即保存和恢复计数器PC。
    硬件自动实现,即保存和恢复计数器PC。
    中断现场的保护和恢复,需要自己设计中断处理程序时编程实现。在使用中断时,要认真和仔细考虑中断现场的保护和恢复

    展开全文
  • DSP中对中断的理解

    千次阅读 2017-07-28 16:00:04
    中断的理解:中断的执行过程是这样的,当符合中断条件时,外设自发地产生(不需要用户设置)一个中断标志位(通常是置位),例如SCI中的RXDY,这是不需要用户设置的.外设响应这个中断,也称为使能中断。如SCI 中的RX/...
    对中断的理解:中断的执行过程是这样的,当符合中断条件时,外设自发地产生(不需要用户设置)一个中断标志位(通常是置位),例如SCI中的RXDY,这是不需要用户设置的.外设响应这个中断,也称为使能中断。如SCI 中的RX/BKint,用户要将它设置为1 ,来使能中断。这样外设就产生了一个中断。这是外设级的中断。中断被送到PIE模块,PIE模块的IFR置1 ,这是CPU自己来做的,不需要用户干预的。这时如果PIEIER=1(这需要用户设置的)那么中断送往CPU,并且将PIEACK置0(CPU自己做的).这时PIE级中断CPU 的IFR置1,如果CPU的IER=1 (用户设置)那么CPU 处理中断.这是CPU级中断.CPU响应中断,清CPU的IER,IFR,清除PIEIFR,执行中断服务程序,在中断服务程序的末尾用户要清除外设中断标志和PIEACK(写1来清除),重新使能中断,中断返回,回到主程序。
    总结起来需要用户编程实现的有:1.三个级别的使能位。设为1使能中断。外设级别的在相应的外设寄存器里设置,PIE级的通过类似于“PieCtrlRegs.PIEIER9.bit.INTx4=1”的语句设置,CPU级的通过类似“IER = 0x100;”来设置  2。在相应的中断服务程序中清中断标志,清响应标志 SciaRegs.SCIFFTX.bit.TXINTCLR=1; // Clear SCI Interrupt ,     flagPieCtrlRegs.PIEACK.all|=0x100; //
    其中还包括屏蔽使能全局中断,使能PIE控制器等.这里就省略了。

    展开全文
  • 关于51单片机串口中断的理解 关于这个问题找了好几个帖子,都没看到能让我明白的。自己就想了想,又看了看。新手不一定说得对,您凑合着看看。要不对的话,望指正。 首先,我们在SCON中设置的时候,一般都会将接收使...

    关于51单片机串口中断的理解

    关于这个问题找了好几个帖子,都没看到能让我明白的。自己就想了想,又看了看。新手不一定说得对,您凑合着看看。要不对的话,望指正。
    首先,我们在SCON中设置的时候,一般都会将接收使能位REN置1。
    其次,串口的收发都会用到SBUF寄存器。
    当我们在接收数据时,因为接收使能位已经置1,所以数据就依次存入SBUF。数据存入完毕RI自动置1,从而触发中断。
    当我们发送数据时,数据存入SBUF后,数据就会自动发送,当发送完毕,TI位置1,从而也可以进入串口中断。
    这是个人理解哈,因为是自学,所以也不知道对不对。
    
    展开全文
  • 外部中断一般是由计算机外设发出的中断请指求,如:键盘中断、打印机中断、定时器中断等。外部中断一般指io高低电平来触发并响应io中断函数 定时器中断 定时器中断是指计数器在晶振震荡下一直加数一直加到一定...
  • 对于中断的理解

    千次阅读 2017-11-27 14:50:50
    按照我便于记忆的理解方式:可以视作中断是来自操作系统的一个概念,或者说是一项操作系统的功能,在计算机组成中主要应用于最后一章的I/O中的中断方式; 中断的大致执行过程的简单理解 1、引入中断是因为CPU某一...
  • 线程中断的理解

    2020-07-09 09:20:57
    当一个线程调用interrupt时,线程标识位就会被改为true,线程会不断检测这个标识位是不是被中断过,以判断线程是否应该被中断。 想知道这个线程是否被中断,可以调用Thread.currentThread().isInterrupted()方法看 ...
  • 穿透和中断的理解 穿透是一级一级的传递下去,不是一步到达catch new Promise((resolve, reject)=>{ // resolve(2), reject(1) }).then( value=>{console.log('onResoled1()'+ value)}, reason=>{throw...
  • 关于线程中断的理解

    2021-03-08 22:14:37
    每个线程都有一个boolean类型的中断状态,其他线程通过修改该线程的中断状态来控制该线程的中断; 2,Thread中断方法 interrupt():设置中断 isInterrupted():是否中断(返回是否已经设置中断状态) interrupted()...
  • Linux中断的理解

    2018-12-31 23:36:00
    unix中断和外中断 转载于:https://www.cnblogs.com/blentle/p/10203875.html
  • 中断的理解

    万次阅读 2017-04-05 16:03:13
    1.中断是一种可以使CPU和硬件设备进行通信技术。例如,当我们在敲击键盘时,键盘控制器(控制键盘硬件设备)会发送一个中断,通知操作系统有键按下。从本质上说,中断是一种特殊信号,由硬件设备向CPU发送。当...
  • Java线程中断的理解和正确使用 1、为什么废弃Thread的stop函数? 对于有多线程开发经验的开发者,应该大多数在开发过程中都遇到过这样的需求,就是在某种情况下,希望立即停止一个线程。 比如:做Android APP...
  • arm linux中断的理解

    2019-09-24 11:51:38
    中断向量表是放在0地址开始位置,如下表所示。 如上电时,程序会跳到0x00000000处执行,然后在该处放一条跳转指令,跳转到中断服务函数,如B Reset。然后在中断服务函数中处理。 中断发生后,当然要保存现场,...
  • 嵌入式中断的理解

    千次阅读 2015-12-09 17:01:49
    一、什么叫中断 先来个概念文字定义 中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新...中断在嵌入式系统中使用得十分广泛,可以说几乎离不开它,可想而知中断的功能有多么的重要,其实笼统地说中断
  • http://blog.chinaunix.net/uid-24666775-id-3787938.html ... 由request_irq()函数引发对中断的理解 2013-07-04 17:18:37 分类: LINUX   1、  中断的理解 中断你
  • Thread中断的理解

    2018-10-16 09:39:00
    中断的理解: 1)中断可以理解为 线程的一个标识位属性 ;2)表示一个运行中的线程是否 被其他线程进行了中断操作 中断好比其他线程向该线程打了个招呼,其他线程通过调用该线程的interrupt()方法对其进行中断...
  • 行为树 中断的理解

    千次阅读 2019-08-15 20:46:03
    1.中断类型分为4种: None Self 3.Lower Priority Both 2.第一种就不说了,不会打断任何行为 self类型: 必须满足条件: 1.当前分支处于Running状态 2.必须是条件节点才能监听状态变化来打断别人 3...
  • 关于时钟、中断的理解

    千次阅读 多人点赞 2018-07-17 08:23:55
    时钟和CPU是独立,时钟中断程序时这样:在CPU执行指令时,计数器(计时器)同时在计时,当计时器溢出时,就向CPU申请中断,如果允许响应中断,CPU就转到中断服务程序执行相关程序。 单片机时钟中断相应要...
  • 共享中断的理解

    千次阅读 2013-06-15 10:09:55
    从个人的理解,Linux2.6内核对中断处理程序的现在的处理可以分为两种模式,一种就是上面说的老的模式(非共享中断线),一种属于使用共享中断线的新模式,从其使用的注册中断处理程序的函数中来分析,函数原型如下: ...
  • 中断,打个比方,你当前正在宿舍看着单片机书,突然,宿舍门响了,有敲门声;你就放下了看书这事,起来去开宿舍门,看是谁;最终是发小广告,你关门回来继续看书。这就是一个完整的中断过程。你看书,是你正在做...
  • 最开始在串口通信那里第一次看到关于中断的描述,但是一直以来都没搞清楚中断是怎么触发的,中断标志位也不太理解。今天学外部中断的时候好像弄明白了一点点,记录一下。 上图是正点原子家的按键部分的电路图,这个...
  • 为了保证CPU和外设数据通信正确,一般呢首先可能考虑使用轮询机制(轮询就是死等),如果轮询时间过程长,会大大降低CPU利用率(CPU不能干其他事情,只能等待当前这个硬件)此时还可以考虑使用中断机制,当CPU发现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,969
精华内容 2,387
关键字:

中断的理解