精华内容
下载资源
问答
  • 中断服务程序

    千次阅读 2014-10-14 11:41:48
    它包括中断服务程序的入口地址。 中断服务程序:处理器处理“急件”,可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的,这种处理“急件”的程序被称为——中断服务程序。 当中央处理器正在...

    中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。

    具代表事实是,产生了一个新的关键字 __interrupt。

    下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。


    __interrupt double compute_area (double radius) 
    {
        double area = PI * radius * radius;
        printf("\nArea = %f", area);
        return area;
    }


    这个函数有太多的错误了,以至让人不知从何说起了:

    1)  ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。

    2)  ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。

    3)  在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。

    此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。

    4) 与第三点一脉相承,printf经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。

     

    不能在中断服务程序中执行类似操作的原因是运算时间太长,不能在中段中作复杂的工作,你可以在中断服务程序中置一个标志位.然后在主程序中查询此位,判断是否执行计算子程序.当然这样做会在中断产生与实际的中断响应之间产生一定的延迟,如果你的系统对时间不太敏感还好,如果非常敏感可以考虑采用rtos。否则。。。多加几句对中断标志位的判断语句。。。。

    在主程序中监测是否被置位来决定子程序是否执行.可能存在以下问题,就是,中断返回后要执行几个耗时比较长的子程序才能执行判断标志位的语句,这样,可能会有太长的时间间隔.如果你在几个耗时比较长的子程序之间加上一句判断语句,就会减小中断产生与中断响应之间的时间延迟.

     中断活动的全过程大致为:

    1、中断请求:中断事件一旦发生或者中断条件一旦构成,中断源提交“申请报告”,与请求CPU暂时放下目前的工作而转为中断源作为专项服务

    2、中断屏蔽:虽然中断源提交了“申请报告”,但是,是否得到CPU的响应,还要取决于“申请报告”是否能够通过2道或者3道“关卡”(中断屏蔽)送达CPU(相应的中断屏蔽位等于1,为关卡放行;反之相应的中断屏蔽位等于0,为关卡禁止通行);

    3、中断响应:如果一路放行,则CPU响应中断后,将被打断的工作断点记录下来(把断点地址保护到堆栈),挂起“不再受理其他申请报告牌”(清除全局中断标志位GIE=0),跳转到中断服务子程序

    4、保护现场:在处理新任务时可能破坏原有的工作现场,所以需要对工作现场和工作环境进行适当保护;

    5、调查中断源:检查“申请报告”是由哪个中断源提交的,以便作出有针对性的服务;

    6、中断处理:开始对查明的中断源进行有针对性的中断服务;

    7、清除标志:在处理完毕相应的任务之后,需要进行撤消登记(清除中断标志),以避免造成重复响应;

    8、恢复现场:恢复前面曾经被保护起来的工作现场,以便继续执行被中断的工作;

    9、中断返回:将被打断的工作断点找回来(从堆栈中恢复断点地址),并摘下“不再受理其他申请报告牌”(GIE=1),继续执行原先被打断的工作


    展开全文
  • 中断在操作系统中有着特殊重要的地位,它是多道程序得以实现的基础,同时也是设备管理的基础,...中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址称为中断向量。在Pc/AT中由硬...

    中断在操作系统中有着特殊重要的地位,它是多道程序得以实现的基础,同时也是设备管理的基础,中断处理程序是I/O系统中最低的一层,它是整个I/O系统的基础。

    1.中断简介 
      
    1. 中断和陷入
      1) 中断     2) 陷入

    2. 中断向量表和中断优先级
      1) 中断向量表

    中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址称为中断向量。在Pc/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。中断类型号和中断向量之间有下面的关系: 中断类型号×4=存放中断向量的首地址 有了存放中断向量的首地址,从该地址开始的4个存储单元中取出的就是中断服务程序的入口
      2) 中断优先级

    为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。
    3. 对多中断源的处理方式  
      1) 屏蔽(禁止)中断
      
    2) 嵌套中断

    中断处理程序 

      当一个进程请求I/O 操作时,该进程将被挂起,直到I/O设备完成I/O操作后,设备控制器便向CPU发送一个中断请求,CPU响应后便转向中断处理程序,中断处理程序执行相应的处理,处理完后解除相应进程的阻塞状态。中断过程包括:
           1.唤醒被阻塞的驱动(程序)进程
           2.保护被中断进程的 CPU 环境
           3.转入相应的设备处理程序
           4.中断处理
           5.恢复被中断进程的现场

    中断全过程

    中断全过程指的是从中断源发出中断请求开始,CPU响应这个请求,现行程序被中断,转至中断服务程序,直到中断服务程序执行完毕,CPU再返回原来的程序继续执行的整个过程。

    执行过程

    大体上可以把中断全过程分为5个阶段:中断请求中断判优中断响应中断处理和中断返回。

    中断处理

    其中中断处理就是执行中断服务程序,这是中断系统的核心。不同计算机系统的中断处理过程各具特色,但对多数计算机而言,其中中断服务程序的流程如下。

    中断处理过程基本上由3部分组成,第一部分为准备部分,其基本功能是保护现场,对于非向量中断方式则需要确定中断源,最后开放中断,允许更高级的中断请求打断低级的中断服务程序;第二部分为处理部分,即真正执行具体的为某个中断源服务的中断服务程序;第三部分为结尾部分,首先要关中断,以防止在恢复现场过程中被新的中断请求打断,接着恢复现场,然后开放中断,以便返回原来的程序后可响应其他的中断请求。中断服务程序的最后一条指令一定是中断返回指令

     

    展开全文
  • DSP6678 中断程序

    2020-11-03 10:05:32
    中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址称为中断向量。在Pc/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、...

    DSP6678 中断程序

    中断向量表

    中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址称为中断向量。在Pc/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。中断类型号和中断向量之间有下面的关系: 中断类型号×4=存放中断向量的首地址 有了存放中断向量的首地址,从该地址开始的4个存储单元中取出的就是中断服务程序的入口。

    IER与IFR定义与解释

    extern cregister volatile unsigned int IFR的解释
    The compiler extends the C/C++ language by adding the cregister keyword to allow high level language access to control registers.When you use the cregister keyword on an object, the compiler compares the name of the object to a list of standard control registers for the C28x (see Table 6-2 ). If the name matches, the compiler generates the code to reference the control register. If the name does not match, the compiler issues an error.

    Table 6-2. Valid Control Registers


    Register Description


    IER Interrupt enable register

    IFR Interrupt flag register

    在这里插入图片描述

    大概意思就是:cregister是编译器扩展的C的关键字,用于高级语言C来直接控制寄存器。

    当你使用这个关键字定义一个变量时,编译器会把它和表6-2的IER,IFR比较,如果名字相同则把这个变量当做是IER或IFR寄存器的引用,意思就是说编译器内部好像已经定义了IER,IFR的变量,你只需要extern声明一下就可以使用这个变量,编译器就会自动帮你实现它的定义。

    当然一般我们操作寄存器都会在前面加上一个volatile关键字。

    然后就是告诉你用法,如或与操作来直接操作这个寄存器。

    *(*(volatile unsigned int ))详解
    使用一个32位处理器,要对一个32位的内存地址进行访问,可以这样定义
    #define RAM_ADDR (*(volatile unsigned long *)0x00000000)

    然后就可以用C语言对这个内存地址进行读写操作了

    读:tmp = RAM_ADDR;

    写:RAM_ADDR = 0x55;

    volatile的意思是说明这个变量是可能被别的程序或者本程序的其他线程修改的,这样编译器就不能优化它,每次读取都从地址中获取。如果不这样声明的话编译器可以把它缓冲在寄存器中的,这样别的程序修改了它,而寄存器里面的值却是原先的,会发生你不想要的结果。而上面三种情况都是这种可能在本程序或者本线程外被修改的情况,所以要加它。

    注意几点:

    1.(volatile unsigned long *)0x00000000 说明是一个指针类型,地址在0x00000000

    2.在前面加上个*,表示指向这个地址的内容。

    3.养成在整体外面再加个括号的习惯。

    中断源和中断控制

    中断控制器允许将多达128个系统事件编程到12个CPU中断输入(CPUINT4-CPUINT15)、CPU异常输入(EXEP)或高级仿真逻辑中的任何一个。

    中断服务序列

    在这里插入图片描述

    中断程序简单梳理

    1. .cmd 文件说明
    -c
    -heap  0x001000
    -stack 0x010000
    
    MEMORY
    {
         vectors:      o = 0x0c000000  l = 0x00000200
         SRAM1:	       o = 0x0c000200  l = 0x00032000
    }
    
    SECTIONS
    {
    	 vector        >  vectors
        .text          >  SRAM1
        .stack         >  SRAM1
        .bss           >  SRAM1
        .cio           >  SRAM1
        .const         >  SRAM1
        .data          >  SRAM1
        .switch        >  SRAM1
        .sysmem        >  SRAM1
        .far           >  SRAM1
        .cinit         >  SRAM1
        .fardata       >  SRAM1
        .rodata        >  SRAM1
        .neardata      >  SRAM1
    }
    

    MEMORY
    vectors 中 o是中断服务表中的基地址部分,l是中断服务表的基地址长度。
    同理,SRAM中的o,l表示也是一样的。
    SECTIONS
    表示代码中的各个部分是分别存储在vectors中还是存储在SRAM1中。

    1. main.c文件中
      (1)
    /******************Timer中断配置***************************************************/
    	Interrupt_Service_Table(0x0c000000);
    	C6678_Int_GlobalEnable(4);
    	C6678_Int_GlobalEnable(5);
    	C6678_Int_GlobalEnable(6);
    	C6678_Int_GlobalEnable(7);
    	C6678_CoreInt_Set(64,4);
    	C6678_CoreInt_Set(66,5);
    	C6678_CoreInt_Set(68,6);
    	C6678_CoreInt_Set(70,7);
    

    Interrupt_Service_Table函数是中断向量表函数,其功能就是对中断向量表进行设置,将基地址传给ISTP寄存器。

    C6678_Int_GlobalEnable (7) 使能中断寄存器

    C6678_CoreInt_Set(64,4); 将中断寄存器与相应的中断事件进行绑定,中断事件号需要根据手册来进行查看,本次经过查看手册得到的,本次事件号64正好对应一个计时器

    (2)

    	Timer_Config(DNUM,(long long)TIMER_1MS_CLK,1,0);
    	Timer_Out_Config(DNUM,1);
    	Timer_Start(DNUM);
    

    定时器设置程序
    Timer_Config程序用于对计时器进行设置,包括选择对应的计时器,定时器周期,计数模式:循环计数或单次计数,计时器模式:64位定时器还是32位定时器。
    Timer_Out_Config(DNUM,1);定时器输出模式:时钟输出还是脉冲输出。
    Timer_Start(DNUM);启动计时器,开始计时。

    展开全文
  • 每个中断源都有对应处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表;也有机器把中断服务程序入口跳转指令构成一张表,称为中断...

    中断向量

    每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表;也有的机器把中断服务程序入口的跳转指令构成一张表,称为中断向量跳转表。

    中断地址

    中断向量表或中断向量跳转表中每个表项所在的内存地址或表项的索引值,称为向量地址或中断类型号。

    向量中断

    是指一种识别中断源的技术或方式。识别中断源的目的就是要找到中断源对应的中断服务程序的入口地址的地址,即获得向量地址。

     

     

    展开全文
  • 它包括中断服务程序的入口地址。当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。...
  • 中断向量 中断向量表

    千次阅读 2015-05-27 11:24:39
    2、中断向量:早期的微机系统中将由硬件产生的中断标识码(中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址)称为中断向量。在某些计算机中,中断向量的位置存放一条跳转到...
  • 中断程序要注意哪些方面

    千次阅读 2020-04-21 10:13:34
    它包括中断服务程序的入口地址。 当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。...
  • 中断

    2019-09-30 10:33:47
    取除中断服务程序的入口地址,传送给PC 中断向量:不同的设备有不同的中断服务程序,每个中断服务程序有不同的入口地址,这个入口地址就是中断向量。将所有中断向量集中放到存储器中,这块存储器区域就叫中断向量表...
  • 我们可以把它理解成中断服务程序的入口地址。 比如说在 x86 系列当中,我们可以把中断向量理解成中断服务程序的段地址和偏移量组成的一个向量。 有的时候也指程序状态字,比如说 CPU 发生中断的时候,一些非体系结构...
  • 中断和轮询差别

    2020-05-22 18:02:18
    中断的基本概念 程序中断通常简称中断,是指CPU在正常运行程序的过程中... CPU要从主程序转入中断服务程序,必须知道该中断服务程序的入口地址,即中断向量。80x86为CPU的PC机共有256个中断向量。 中断的一般过程: 主程
  • 中断向量表

    2021-01-21 13:34:06
    中断向量表(interrupt vector table,IVT)是中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址称为中断向量。在Pc/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类...
  • 中断向量

    千次阅读 2007-09-04 11:19:00
    中断向量 断向量与中断向量表 在中断源识别方法时提到:早期的微机系统中将由硬件产生的中断标识码(中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址)称为中断向量。...
  • 中断的基本概念 程序中断通常简称中断,是指CPU在正常运行程序的过程中,...CPU要从主程序转入中断服务程序,必须知道该中断服务程序的入口地址,即中断向量。80x86为CPU的PC机共有256个中断向量。 中断的一般过程:..
  • 当中断发生时,由中断源自己引导处理机进入中断服务程序的中断过程称为向量中断。 中断向量就是该类型中断的中断服务例行程序的入口地址和处理器状态字。 每个中断向量包含两个字: 1、中断服务例行程序的入口...
  • 中断 中断的概念 在内核与外设之间存在着两种交流的方式,一种叫轮询,另一种叫中断,轮询的方式工作效率是极低的,且不能及时响应紧急事件;...2)中断向量: 中断服务程序的入口地址。每个中断源都对应一
  • 中断向量表和中断描述符表IDT

    千次阅读 2013-03-28 23:22:20
    CPU是根据中断号获取中断向量值,即对应中断服务程序的入口地址值。因此为了让CPU由中断号查找到对应的中断向量,就需要在内存中建立一张查询表,即中断向量表(在32位保护模式下该表称为中断描述符表)。80x86微机...
  • CPU处理多任务——中断与轮询方式比较 中断方式与轮询方式比较 中断的基本概念 程序中断通常简称中断,是指CPU在正常运行程序... CPU要从主程序转入中断服务程序,必须知道该中断服务程序的入口地址,即中断向量。80x8
  • 1.超标量流水线(多指令发射方式) 若干条指令同时启动并独立进行流水线进行。 2.快表(TLB) ...每个中断源都有处理程序,称这个处理程序为中断服务程序,其入口地址称为中断向量 4.CPI: 每条指令平均...
  • Linux信号编程概述

    2020-07-25 18:26:50
    CPU(查询中断向量表, 找到中断服务程序的入口地址)执行中断处理程序 ->(处理完中断之后) ->恢复现场,继续执行原来的任务 中断分类 硬件中断(外部中断) 外部中断是指由外部设备通过硬件请求的方式产生的中断...
  • linux-c

    2015-03-02 18:25:43
    A:使CPU能找到中断服务程序的入口地址  B:为了实现中断嵌套 C:为了使CPU在执行完中断服务程序时能回到被中断程序的断点处 D:为了使CPU与I/O设备并行工工作 22 (D020) 在多任务操作系统中,进程切换也称为上...
  • 片内EA 指令寄存器IR、指令译码器及控制逻辑电路154 程序计数器PC(Program Counter): 存放着下一条将要从程序存储器...将子程序的入口地址或中断向量地址送入PC,程序流向发生变化,执行子程序或中断服务程序。 51...
  • 名词解释 1.超标量流水线 答:若干条指令同时启动并独立进入流水线执行。 即:每个时钟周期发射多条指令,有多套取指部件和指令译码部件...答:每个中断源都有处理程序,称这个处理程序位中断服务程序,其入口地址称为
  • 在操作系统启动时,系统建立和初始化了一个被称为异常表跳转表,条目K对应异常K异常处理程序入口地址。 异常分类: 中断(Interrupt):来自处理器外部I/O设备信号,并不是由专门指令造成,是异步,其...
  • 中断服务程序入口地址指示器 D.剩余程序入口地址 9. 中断允许触发器用来表示 。 A. 外设提出中断请示 B. 响应中断 C.开放或关闭中断系统 D.正在进行中断处理 10.外部设备提出中断请示条件是 。 A.一个CPU...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    嵌入式微控制器又称为单片机,它将CPU、存储器(少量RAM、ROM或两者都有)和其它接口I/O封装在同一片集成电路里。常见有HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK MCU系列、...
  • 操作系统(内存管理)

    热门讨论 2009-09-20 12:55:25
    如前所述,被映射内存边界(最后一个有效地址)常被称为系统中断点或者 当前中断点。在很多 UNIX® 系统中,为了指出当前系统中断点,必须使用 sbrk(0) 函数。 sbrk 根据参数中给出字节数移动当前系统中断点,...
  • 如前所述,被映射内存边界(最后一个有效地址)常被称为系统中断点或者当前中断点。在很多 UNIX? 系统中,为了指出当前系统中断点,必须使用 sbrk(0) 函数。sbrk 根据参数中给出字节数移动当前系统中断点,...
  • 如果将 8 个发光二极管负极(阴极)内接在一起,作为数码管一个引脚,这种数码管则被称为 共阴数码管,共同引脚则称为共阴极,8 个正极则为段极。否则,如果是将正极(阳极)内接在一 起引出,则称为共阳...
  • 1、 中断向量可提供(中断服务程序的入口地址)。A:I/O设备的端口地址B:所传送数据的起始地址C:中断服务程序的入口地址D:主程序的断点地址【解析】: 计算机在执行程序过程中,当遇到急需处理的事件时,暂停当前...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

中断服务程序的入口地址称为