S3C2440的中断体系结构】的更多相关文章

概述 S3C2440A中的中断控制器接受来自60个中断源的请求.提供这些中断源的可以是内部外设,如DMA控制器.UART.IIC等等.在这些中断源中,UARTn.AC97和EINTn中断对于中断控制器而言是"或"关系(在这几个源中还可以有中断分支). 当从内部外设和外部中断请求引脚收到多个中断请求时,中断控制器在仲裁步骤后请求ARM920T内核的FIQ或IRQ. 总流程图如下: 程序状态寄存器(PSR)的 F 位和 I 位 如果 ARM920T CPU 中的 PSR 的 F 位被置位为…
上一篇文章介绍了S3c2440的中断体系结构,今天我们来分析一下GNU-uC/OS-II在S3c2440上中断的实现. 首先找到IRQ的中断的向量,位于 2440init.S : OK ,我们通过名字找到了这个函数: OS_CPU_IRQ_ISR: STMFD SP!, {R1-R3} MOV R1, SP ADD SP, SP, #12 SUB R2, LR, #4 MRS R3, SPSR MSR CPSR_cxsf, #SVCMODE|NOINT STMFD SP!, {R2} STMFD…
本章目标:     了解ARM体系CPU的7种工作模式     了解S3C2410/S3C2440中断体系结构     掌握S3C2410/S3C2440的中断服务程序的编写方法 9.1 S3C2410/S3C2440 中断体系结构 9.1.1 ARM体系CPU 的7种工作模式     ARM体系的CPU有以下7种工作模式:     ① 用户模式(usr):ARM处理器正常的程序执行状态:     ② 快速中断模式(fiq):用于高速数据传输或通道处理:     ③ 中断模式(irq):用于通用…
1.中断处理体系结构 Linux内核将所有中断统一编号,使用一个irq_desc结构数组来描述这些中断. 数组声明在/linux/kernel/irq/handle.c中,其中#define NR_IRQS 128,定义在/linux/include/asm/irq.h中 /* * Linux has a controller-independent interrupt architecture. * Every controller has a 'controller-template', t…
s3c2440的异常向量表: IRQ中断地址是0x18.所以,根据之前的异常处理方式,我们编写启动文件: 为什么需要lr减4,可以参考这篇文章:http://blog.csdn.net/zzsfqiuyigui/article/details/23334177 这是为了保证,当cpu正在执行某条指令时被中断打断,中断返回的时候,要继续执行这条被打断的指令,如果不减去4,cpu处理完中断之后,将会在被打断执行的这条指令的下一条指令开始执行(因为lr_irq保存的是下一条指令执行的地址),就会丢失掉…
用到的知识: 中断  等待队列  睡眠  select  poll  misc http://pan.baidu.com/s/1bneSG5h…
个中断源的请求.提供这些中断源的是内部外设,如DMA控制器.UART.IIC等等.在这些中断源中,UARTn.AC97和EINTn中断对于中断控制器而言是“或”关系.任意一个中断发生都会触发总中断 当从内部外设和外部中断请求引脚收到多个中断请求时,中断控制器在仲裁步骤后请求ARM920T内核的FIQ或IRQ. 仲裁步骤由硬件优先级逻辑决定并且写入结果到帮助用户通告是各种中断源中的哪个中断发生了的中断挂起寄存器中. 中断源有两种,一种是直接中断源,比如触摸屏中断,还有一种是带子中断的中断,类似于串…
 ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:                   复位异常(Reset).     数据异常(Data Abort).     快速中断异常(FIQ).     外部中断异常(IRQ).     预取异常(Prefetch Abort).     软件中断(SWI).     未定义指令异常(Undefined instruction).        ARM异常优先级:        (1)当发生各种异常时,CPU会进入对应的工作模式,并跳转到…
一.ARM中断体系结构 arm有7中异常工作模式 用户模式.快中断模式.管理模式.数据访问终止模式.中断模式.系统模式.未定义指令终止模式. 几种模式有什么不同呢, 1.不同的寄存器 2.不同的权限 3.触发条件 对于不同的寄存器,ARM920T有31个通用的32位寄存器和6个程序状态寄存器.这37个寄存器分为7组,进入某个工作模式时就使用他那组的寄存器.有些寄存器,不同的工作模式下有他的副本,当切换到另一个工作模式时,那个工作模式的寄存器副本将被使用:这些寄存器被称为备份寄存器(图中灰色部分的…
S3C2440中的中断处理最终是通过IRQ实现的,在Linux驱动之异常处理体系结构简析已经介绍了IRQ异常的处理过程,最终分析到了一个C函数asm_do_IRQ,接下来继续分析asm_do_IRQ,目标是推导出中断的处理过程. 看到asm_do_irq函数,它位于arch\arm\kernel\Irq.c中.它先根据irq中断号从irq_desc 数组中取出这个中断对应的desc结构体,irq中断号是根据INTOFFSET寄存器的值来确定的,这个寄存器里的值根据中断的来源不同会置位相应的位,它…