中断处理流程如下:
1、发生中断时,CPU执行异常向量vector_irq的代码。
2、在vector_irq里面,最终会调用中断处理的总入口函数asm_do_IRQ。
3、asm_do_IRQ根据中断号调用irq_desc数组项中的handle_irq。
4、hadnle_irq会使用chip成员中的函数来设置硬件,比如...
分类:
系统相关 时间:
2014-08-27 09:27:31
阅读次数:
275
外中断是指那些不再CPU内部产生的中断,即通过端口与cpu通信的外设产生的中断。可屏蔽中断是CPU可以不响应的外中断不可屏蔽中断是CPU必须响应的中断,其中断类型码都是2sti,cli可以屏蔽中断,让一些如改变中断向量的操作安全进行。1. 可屏蔽中断,CPU根据标志寄存器IF位决定是否响应中断,IF...
分类:
其他好文 时间:
2014-08-15 09:27:37
阅读次数:
273
既然学习了USB,那就必须的搞懂USB设备与USB主机数据是怎么通讯的。这里主要讲设备端,因为我们的代码是做USB设备用的。我们需要必须要定义了USB中断。起始在STM32的中断向量表中给USB两个中断,我们可以在stm32f10x.h中找到这两个中断: USB_HP_CAN1_TX_IRQn = ...
分类:
其他好文 时间:
2014-08-13 17:48:26
阅读次数:
200
所有以ARM为内核的处理器的异常共分为7中,每一种异常对应一个异常向量,每个异常向量占4个字节,指出中断服务程序的入口地址。异常向量表从0x00000000~0x0000001F。
其中普通中断和快速中断的向量地址为0x00000018~0x0000001B和0x0000001C和0x0000001F。每一个ARM芯片,除了内核异常外还有多种内置硬件组件的中断,这些中断源的中断向量对应于IRQ或...
分类:
其他好文 时间:
2014-08-06 02:02:10
阅读次数:
187
在基于OSEck RTOS的TI DSP中,中断可以作为一个进程存在,在OSEck系统中,进程分为两类:优先级进程,中断进程。当可屏蔽中断(INT4~15)发生后,就会执行相应的中断vector,在vector的代码中会找到注册在该中断号上的进程,然后由OSEck负责调度,进而切换到可屏蔽中断进程。该中断进程与优先级进程类似,同样有PCB(进程控制块),而在odo_vect2pcb数组中就存储了可...
分类:
其他好文 时间:
2014-07-23 00:11:03
阅读次数:
225
下面的创建中断向量表的代码,可以将段vecs(存储中段向量表的段)重定位到某个地址,如DSP的L2起始地址(对于core1,是0x10800000),同时要将ISTP指向这个地址。
;create interrupt vector table for C6000 DSP
;-------------------------------------------------------------...
分类:
其他好文 时间:
2014-07-20 10:27:36
阅读次数:
202
启动的方式对于S3C2440而言,启动的方式有两种,一是Nor Flash方式启动,二是Nand Flash方式启动。使用Nor Flash方式启动Nor Flash的地址范围如下 0x0000.0000—0x0800.0000 (2M Nor Flash) 片内的BootSRAM地址被置为 0x4...
分类:
其他好文 时间:
2014-07-18 20:32:12
阅读次数:
220
C66x DSP执行中断的简要流程:
1、使能了全局中断和子中断,如果硬件检测到中断发生,那么CPU就要跳转。
2、软件把CPU内部的A,B类寄存器的值等推入堆栈保存,把当前PC寄存器的值放入IRP/NRP寄存器中以备中断返回能找到当前被打断的位置。
3、CPU的PC指针读出中断向量表的地址,也就是把“ISTP寄存器的ISTB值+子中断向量偏移量”装入PC寄存器,这样就执行跳转。
4、在中...
分类:
其他好文 时间:
2014-07-13 17:59:56
阅读次数:
244
16位/32位中断机制比较
原理:
16位中断机制:使用中断向量表
32位中断机制:使用中段描述符表IDT
位置:
中断向量表的位置是固定的,位于内存的开始0x00000
中断向量符表位置不固定,由系统设计者安排,由IDTR(IDT基地址寄存器)锁定其位置。...
分类:
其他好文 时间:
2014-07-09 12:32:57
阅读次数:
204
int 0x13中断向量所指向的中断服务程序实质上就是磁盘服务程序。
用途:将指定扇区的代码加载到内存的指定位置。
因此,在使用int 0x13中断时要将参数传递给服务程序:
例如:将指定扇区和加载的内存位置传递给服务程序
传递参数的方式:通过几个通用寄存器实现
示例代码:
{CSDN:CODE:422811}...
分类:
其他好文 时间:
2014-07-09 10:57:31
阅读次数:
543