精华内容
下载资源
问答
  • 百度百科:中断是指在计算机执行程序的过程中,当出现异常情况或者特殊请求时,计算机停止现行的程序的运行,转而对这些异常处理或者特殊请求的处理,处理结束后再返回到现行程序的中断处,继续执行原程序。...

    在这里插入图片描述:What is interrupt?
    百度百科:中断是指在计算机执行程序的过程中,当出现异常情况或者特殊请求时,计算机停止现行的程序的运行,转而对这些异常处理或者特殊请求的处理,处理结束后再返回到现行程序的中断处,继续执行原程序。

    中断源:我们把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源
    中断向量:中断服务程序的入口地址。在某些计算机中,中断向量的位置存放一条跳转到中断服务程序入口地址的跳转指令。
    中断向量地址:内存中存放中断服务程序入口地址的地址
    矢量中断:某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(需要具备硬件中断向量表)
    非矢量中断:产生中断源时,先跳到一个总入口,再有软件查询中断挂起寄存器判断是哪个中断源,然后跳到入口服务程序。例如;arm接受到中断控制器的IRQ请求,cpu响应中断后,将在中断服务寄存器的对应位置位,cpu转到0x18处执行。1
    软件中断向量表:在ram区的_ISR_STARTADDRESS处开辟一段空间,设置一张软件设定的中断向量表,用来存放中断和异常的服务程序入口地址。2


    1. C语言在嵌入式系统编程时的注意事项:https://cloud.tencent.com/developer/article/1011931 ↩︎

    2. C语言嵌入式系统编程修炼之软件架构篇:https://cloud.tencent.com/developer/article/1019866 ↩︎

    展开全文
  • 矢量中断-非矢量中断

    千次阅读 2016-01-09 16:27:59
    某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(有些cpu,如s3c440box内部有外部中断的中断向量表,因而支持矢量中断,而S3C2440等没有硬件向量表,不支持矢量中断。固定中断向量表中装的不是中断或异常...

    矢量中断

    某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(有些cpu,如s3c440box内部有外部中断的中断向量表,因而支持矢量中断,而S3C2440等没有硬件向量表,不支持矢量中断。固定中断向量表中装的不是中断或异常服务程序的入口地址,而是一条转到异常或中断处理程序的转移指令

    硬件中断向量表

    软件中断向量表:在ram区的_ISR_STARTADDRESS处开辟一段空间,设置一张软件设定的中断向量表,用来存放中断和异常的服务程序入口地址。

     

     

    非矢量中断

    产生中断源时,先跳到一个总入口,再有软件查询中断挂起寄存器判断是哪个中断源,然后跳到入口服务程序。例如;arm接受到中断控制器的IRQ请求,cpu响应中断后,将在中断服务寄存器的对应位置位,cpu转到0x18处执行。在0x18处,放置一条转移指令:

    B ISR_IRQ

    ISR_IRQ为中断服务程序的总入口地址,也是非矢量中断模式的中断源判别及散转程序。在ISR_IRQ中通过查询中断服务寄存器的对应位判别出中断源,然后转至对应的中断服务程序。

    ISR_IRQ:

    STMDB R13!,{R0-R8,R12,R14}  ;保护现场(进入异常时已自动将断点保存到LR)

    此处的R14用于异常返回

    BL IRQ                         ; 此处的R14用于子程序返回

    LDMIA R13!,{ R0-R8,R12,R14};恢复现场

    SUBS PC,R14,#4;返回中断断点处继续执行(CPSR 也自动恢复)

    IRQ:

    SUB SP,SP,#4;腾出一个字以存放中断服务程序入口地址

    STMFD SP!,{R8-R9};

    LDR R9,=I_ISPR;中断服务寄存器地址送到R9  I_ISPR EQU 0X????????

    LDR R9,[R9];ISPR 的内容送r9

    MOV R8,#0;设置r8为地址偏移量,并初始化为0

    10:          MOVS R9,R9,LSR #1;R9左移一位,移除位送到C

    BCS 11

    ADD R8,R8,#4

    B 10

    11:              LDR R9,=HANDLEADC;找到了,软件中断向量表的首项中的地址送R9

    ; HANDLEADC EQU _ISR_STARTADDRESS+4*8

    ADD R9,R9,R8

    LDR R9,[R9];将相应的中断服务程序入口地址送R9

    STR R9,[SP,#8];中断服务程序入口入棧

    LDMFD SP! ,{R8-R9,PC};转向执行中断服务程序

    中断服务程序运行完毕,则返回到标记出,回到原来断点继续执行(中断服务程序中已经完成了返回到BL后一条指令的操作)相当于发生了两级跳转!

     

     

     

     

     

    如果采用向量中断模式,cpu发生异常或响应或中断源后,将转到硬件固有中断向量表,自动转入相应的一次或中断向量地址处执行。以ENIT 4567为例

    0x30:LDR PC,=HANDLERENT4567

    ............

    HANDLERENT4567:

    HANDLER HANDLEEINT4567; HANDLEEINT4567为软件设定的中断向量中中断入口的地址标号

    HANDLER 宏的作用:将HANDLEEINT4567的内容赋给PC

    MACRO HANDLER HANDLELABEL

    SUB SP,SP,#4

    STMFD SP!,{R0}

    LDR R0,=HANDLELABEL

    LDR R0,[R0]

    STR R0,[SP,#4]

    LDMFD SP!,{R0,PC}

    ENDM

     

    中断及异常的响应过程

    程序装在ROM中断中断和异常相应情况:

    对于简单的应用系统,通常将初始化和应用程序下载在0x0处,即在ROM或flash中,在硬件固定向量表中断对应位置放置转移指令,转到相应异常或中断服务程序进行处理。

    由于RAM区程序执行速度快,而且可以修改,所以对于大多数系统和复杂程序,通常将具体的异常或中断处理程序下载到RAM区执行。

     

    程序装在高端RAM中断中断或异常响应

    (1)       软件实现地址映射

    若程序下载到高端RAM,当异常中断发生时,S3C440B0X自动转到硬件固定向量表的歌地址处,所以需要在0x0开始的区域放置一个bootloader,它主要完成系统硬件初始化和地址映射工作。地址映射包含两部分,首先完成从0x0开始的固定向量表到0x0c000000(ram起始区,不同的系统不同)的转移,然后应用程序中的Isr_Init()函数完成到代码下载区RAM处的向量转移。

    Bootloader地址映射:

    在硬件固定表的各向量地址处放指令:ldr pc,=0x0000??,实现0x0000??->0x0c0000??的映射。

    注意:若IRQ异常采用非向量模式,在开始地址区不必进行中断源的映射;复位异常发生,硬件初始化后,直接映射到代码下载区的0x0c008000处,并执行应用系统初始化。

    展开全文
  • 矢量中断

    千次阅读 2014-05-16 17:53:24
    某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(有些cpu,如s3c440box内部有外部中断的中断向量表,因而支持矢量中断,而S3C2440等没有硬件向量表,不支持矢量中断。固定中断向量表中装的不是中断或异常...

    矢量中断

    某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(有些cpu,如s3c440box内部有外部中断的中断向量表,因而支持矢量中断,而S3C2440等没有硬件向量表,不支持矢量中断。固定中断向量表中装的不是中断或异常服务程序的入口地址,而是一条转到异常或中断处理程序的转移指令

    硬件中断向量表

    软件中断向量表:在ram区的_ISR_STARTADDRESS处开辟一段空间,设置一张软件设定的中断向量表,用来存放中断和异常的服务程序入口地址。

     

     

    非矢量中断

    产生中断源时,先跳到一个总入口,再有软件查询中断挂起寄存器判断是哪个中断源,然后跳到入口服务程序。例如;arm接受到中断控制器的IRQ请求,cpu响应中断后,将在中断服务寄存器的对应位置位,cpu转到0x18处执行。在0x18处,放置一条转移指令:

    B ISR_IRQ

    ISR_IRQ为中断服务程序的总入口地址,也是非矢量中断模式的中断源判别及散转程序。在ISR_IRQ中通过查询中断服务寄存器的对应位判别出中断源,然后转至对应的中断服务程序。

    ISR_IRQ:

    STMDB R13!,{R0-R8,R12,R14}  ;保护现场(进入异常时已自动将断点保存到LR)

    此处的R14用于异常返回

    BL IRQ                         ; 此处的R14用于子程序返回

    LDMIA R13!,{ R0-R8,R12,R14};恢复现场

    SUBS PC,R14,#4;返回中断断点处继续执行(CPSR 也自动恢复)

    IRQ:

    SUB SP,SP,#4;腾出一个字以存放中断服务程序入口地址

    STMFD SP!,{R8-R9};

    LDR R9,=I_ISPR;中断服务寄存器地址送到R9  I_ISPR EQU 0X????????

    LDR R9,[R9];ISPR 的内容送r9

    MOV R8,#0;设置r8为地址偏移量,并初始化为0

    10:          MOVS R9,R9,LSR #1;R9左移一位,移除位送到C

    BCS 11

    ADD R8,R8,#4

    B 10

    11:              LDR R9,=HANDLEADC;找到了,软件中断向量表的首项中的地址送R9

    ; HANDLEADC EQU _ISR_STARTADDRESS+4*8

    ADD R9,R9,R8

    LDR R9,[R9];将相应的中断服务程序入口地址送R9

    STR R9,[SP,#8];中断服务程序入口入棧

    LDMFD SP! ,{R8-R9,PC};转向执行中断服务程序

    中断服务程序运行完毕,则返回到标记出,回到原来断点继续执行(中断服务程序中已经完成了返回到BL后一条指令的操作)相当于发生了两级跳转!

     

     

     

     

     

    如果采用向量中断模式,cpu发生异常或响应或中断源后,将转到硬件固有中断向量表,自动转入相应的一次或中断向量地址处执行。以ENIT 4567为例

    0x30:LDR PC,=HANDLERENT4567

    ............

    HANDLERENT4567:

    HANDLER HANDLEEINT4567; HANDLEEINT4567为软件设定的中断向量中中断入口的地址标号

    HANDLER 宏的作用:将HANDLEEINT4567的内容赋给PC

    MACRO HANDLER HANDLELABEL

    SUB SP,SP,#4

    STMFD SP!,{R0}

    LDR R0,=HANDLELABEL

    LDR R0,[R0]

    STR R0,[SP,#4]

    LDMFD SP!,{R0,PC}

    ENDM

     

    中断及异常的响应过程

    程序装在ROM中断中断和异常相应情况:

    对于简单的应用系统,通常将初始化和应用程序下载在0x0处,即在ROM或flash中,在硬件固定向量表中断对应位置放置转移指令,转到相应异常或中断服务程序进行处理。

    由于RAM区程序执行速度快,而且可以修改,所以对于大多数系统和复杂程序,通常将具体的异常或中断处理程序下载到RAM区执行。

     

    程序装在高端RAM中断中断或异常响应

    (1)       软件实现地址映射

    若程序下载到高端RAM,当异常中断发生时,S3C440B0X自动转到硬件固定向量表的歌地址处,所以需要在0x0开始的区域放置一个bootloader,它主要完成系统硬件初始化和地址映射工作。地址映射包含两部分,首先完成从0x0开始的固定向量表到0x0c000000(ram起始区,不同的系统不同)的转移,然后应用程序中的Isr_Init()函数完成到代码下载区RAM处的向量转移。

    Bootloader地址映射:

    在硬件固定表的各向量地址处放指令:ldr pc,=0x0000??,实现0x0000??->0x0c0000??的映射。

    注意:若IRQ异常采用非向量模式,在开始地址区不必进行中断源的映射;复位异常发生,硬件初始化后,直接映射到代码下载区的0x0c008000处,并执行应用系统初始化。

     

     

    (2)       见《基于ARM 的嵌入式系统接口技术》清华大学

    展开全文
  • rom bios 时钟中断是08号中断,linux 中怎样变成了0x20号中断? 8259A 是可编程中断控制器芯片,可管理8个中断源...中断矢量号号是可以编程, linux 将第一个中断源定时器中断编程为0x20. 中断源号,中断矢量号, 描
    rom bios 时钟中断是08号中断,linux 中怎样变成了0x20号中断?
    8259A 是可编程中断控制器芯片,可管理8个中断源。通过级联可最多管理64个中断源
    pc/at 使用了2片8259A, 占用地址0x20-0x3f 0xa0-0xbf 范围, 共可产生16个中断源。
    中断矢量号号是可以编程的, linux 将第一个中断源定时器中断编程为0x20.
    中断源号,中断矢量号, 描述:
    IRQ0       0x20          8253发出的100hz 时钟中断
    IRQ1       0x21          键盘
    IRQ2       0x22          接联从8259
    IRQ3       0x23          串行口 2
    IRQ4       0x24          串行口 1
    IRQ5       0x25          并行口 2
    IRQ6       0x26          软盘
    IRQ7       0x27          并行口 1
    主8259芯片占用地址 0x20-0x3f

    IRQ8        0x28         实时时钟中断
    IRQ9        0x29         级联到主芯片IRQ2
    IRQ10       0x2a         保留
    IRQ11       0x2b         保留
    IRQ12       0x2c         PS2 鼠标
    IRQ13       0x2d         协处理器中断
    IRQ14       0x2e         硬盘     
    IRQ15       0x2f         保留     
    从8259芯片占用地址 0xA0-0xBf

    展开全文
  • 中断的处理过程为了更容易理解中断的处理过程,先来分析前面的例子。正在看书时,电话铃响了,这里的电话就是中断源,它发出的铃声就是中断请求信号...当 CPU 正在执行主程序时,如果接收到中断源发出的中断请求信号...
  • 60个可屏蔽中断通道(不包含16个Cortex™-M3中断线); 16个可编程优先等级(使用了4位中断优先级); 低延迟异常和中断处理; 电源管理控制; 系统控制寄存器实现; 1. 中断和异常向量 中断优先级...
  • 单片机中断的过程

    千次阅读 2019-02-18 10:19:46
    1.根据响应的中断源的中断优先级, 使相应的优先级状态触发器置1; 2.把当前程序计数器PC的内容压入堆栈,保护断点,寻找中断源; 3.执行硬件中断服务子程序调用; 4.清除相应的中断请求标志位(串行口中断请求...
  • 中断系统

    2021-01-14 19:23:10
    中断源:指引起CPU中断事件,即中断请求信号来源。51单片机有5个中断源,分别是外部中断0,定时/计数器T0中断,外部中断1,定时/计数器T1中断,串行口中断,对应地址如下表: 中断源 中断矢量地址 外部...
  • 陷入处理程序的入口都为“trap”(这里是指一个汇编程序,而非PDP11指令); 中断则不同。他们有不同的入口,如: ... br4 /(中断矢量地址为60,电传打字机输入的中断处理程序) 527 klou; br4
  • 一、中断允许寄存器IE CPU对中断源的开放或中断屏蔽的控制是通过中断允许寄存器IE设置的,IE既可按字节地址寻址(其字节地址为A8H),又可按位寻址。AT89S52单片机中的6个中断矢量都是可屏蔽中断,通过对IE的某些...
  • 第五章 80C51单片微机的 中断系统原理及应用; 实现CPU与外部设备的速度配合 ?通过中断的方法来协调快速CPU与慢速外部设备之间的工作 ...80C51的中断系统包括: 中断源 中断允许寄存器IE 中断优先级寄存器IP 中断矢量等 ?
  • 时钟中断是系统中最重要的中断,每个时钟滴答都会产生时钟中断,它的中断矢量为(0100)或(0103)。   0533: . = 100^. 0534: kwlp; br6 0535: kwlp; br6   0569: .globl _clock 0570: kwlp: jsr r0,call; _...
  • S5PV210是三星推出的一款基于Cortex-A8的Soc,其内部集成的中断控制器由4个ARM PrimeCell PL192矢量中断控制器级连(daisy-chain)而成,每个PL192 VIC(Vector Interrupt Controller)支持32个中断源,所以最多支持...
  • 高级中断控制器(AIC)有8个优先级,可单独屏蔽,矢量化中断控制器,提供多达128个中断源的处理。 AIC驱动ARM处理器的nFIQ(快速中断请求)和nIRQ(标准中断请求)输入。AIC的输入要么是内部外围中断,要么是来自产品引脚...
  • 向量中断(矢量中断)和非向量中断,ARM一般是非向量中断,因为现在的中断源很多,如果做成向量,那中断向量表会很大。不过ARM总异常还是按照向量方式组织。NVIC(CM4) -- 向量中断 CR5/CA55 -- 非向量中断 ...
  • 针对传统煤矿电机工作效率低、控制精度差和成本高等问题,设计了一种...介绍了以功率单元、辅助电源和控制主电路组成硬件电路,并对软件系统架构和主中断程序进行了阐述。最后实验验证了该控制方案可行性和有效性。
  • 10.1 陷入和中断源 274 10.2 fuibyte(0814)与fuiword(0844) 274 10.3 中断 275 10.4 call(0776) 275 10.5 用户程序陷入 276 10.6 核心态栈 277 第11章 时钟中断 279 11.1 clock(3725) 279 11.2 timeout(3845) 281 ...
  • 除对操作系统常识性了解(比如知道中断、进程等概念)之外,本书不假定读者具备其他任何经验。 如果你学习过操作系统理论课程,你会发现本书是对于理论吻合和补充。它是从实践角度为你展现一幅操作系统画面...
  • 除对操作系统常识性了解(比如知道中断、进程等概念)之外,本书不假定读者具备其他任何经验。 如果你学习过操作系统理论课程,你会发现本书是对于理论吻合和补充。它是从实践角度为你展现一幅操作系统画面...
  • 程序取自...以便程序找到中断矢量。(猜测) 本压缩包包括原始mega8 asm,我改写mega48 c & asm,电路图见proteus文档,也可到上述链接查看。
  • NEON_11

    2020-03-16 09:56:44
    编码自动向量化最佳做法 随着实现变得更加复杂,...Arm建议修改您的源代码实现以消除这些情况。 例如,自动向量化必要条件是必须在循环开始时就知道循环大小中迭代次数。 中断条件意味着循环大小在循环开始...
  • DSP控制器及其应用

    2009-08-22 00:04:47
    3.7.2 事件管理模块的中断 3.7.3 系统模块中断 第4章 指令系统 4.1 寻址方式 4.1.1 立即寻址 4.1.2 直接寻址 4.1.3 间接寻址 4.2 句法格式 4.2.1 汇编句法的格式 4.2.2 指令分类表 4.3 伟送指令 4.4 算术操作指令 ...
  • 德力西产品说明.pdf

    2019-10-10 18:41:58
    德力西产品说明pdf,前 言   感谢您选用德力西(杭州)变频器有限公司生产CDI 9600系列小功率矢量变频器。 在使用CDI9600系列小功率矢量变频器之前,请您仔细阅读本手册,以保证... 中断变频器输出 寸动 ...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    源的移动计算平台,相信第三方应用会很快的丰富起来。 � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善...
  • 微机原理及接口技术

    热门讨论 2012-06-03 01:21:15
    很基础东西,高手可以忽略了! 目 录 第1 章 计算机基础知识................................ 1 1.1 计算机发展概况.................................... 1 1.1.1 微处理器和微机发展............. 1 1.1.2 ...
  • “库文件名”以.lib或.obj为后缀将被视为静态库,可使用绝对路径或相对路径(相对当前代码所在目录),如依赖多个静态库请分别列出并以逗号分隔;“在库中对应命令名”请务必准确填写静态库中公开导出符号...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

中断源的中断矢量