s3c6410_中断

参考:

1)《USER‘S MANUAL-S3C6410X》Chapter 10 GPIO, Chapter 12 VECTORED INTERRUPT CONTROLLER

2)《ARM1176 JZF-S Technical Reference Manual》Chapter 2 Programmer‘s Model, Chapter 12 Vectored Interrupt Controller Port

3)《ARM Architecture Reference Manual》Chapter A2 Programmers‘ Model,

4)u-boot源码:

u-boot-x.x.x/cpu/s3c64xx/start.S

1. 中断源

S3C6410有64个中断源,0-31由VIC0控制,32-63由VIC1控制。产生中断时,进入IRQ或FIQ工作模式。

64个中断源的定义见《USER‘S MANUAL-S3C6410X》12.3 INTERRUPT SOURCE。中断源分内部中断源和外部中断源。内部中断源由S3C6410芯片的内部模块产生。外部中断源由S3C6410芯片的外部模块产生。

64个中断源中,外部中断的中断号分配如下:


Int. No.


Sources


Description


Group


53


INT_EINT4


External interrupt Group 1 ~ Group 9


VIC1


33


INT_EINT3


External interrupt 20 ~ 27


VIC1


32


INT_EINT2


External interrupt 12 ~ 19


VIC1


1


INT_EINT1


External interrupt 4 ~ 11


VIC0


0


INT_EINT0


External interrupt 0 ~ 3


VIC0

即:外部中断源group1-group9产生的中断的中断号为53;外部中断源group0的0-3号中断的中断号为0,4-11号中断的中断号为1,12-19号中断的中断号为32,20-27号中断的中断号为33。

2. 外部中断源

S3C一共有127个外部中断,分为10组,即group0-group9


Group


中断源


中断数


GPIO分布


group0


EINT0-EINT27


28


GPL,GPM,GPN,


group1


EINT1[14:0]


15


GPA,GPB


group2


EINT2[7:0]


8


GPC


group3


EINT3[4:0]


5


GPD


group4


EINT4[13:0]


14


GPF


group5


EINT5[6:0]


7


GPG


group6


EINT6[9:0]


10


GPH


group7


EINT7[15:0]


16


GPO


group8


EINT8[14:0]


15


GPP


group9


EINT9[8:0]


9


GPQ

3. S3C6410工作模式

各个工作模式下用到的寄存器如下:

除了system mode和user mode,其余6中工作模式都属于exception,优先级如下:

中断向量表用于存放中断处理程序的入口地址,中断向量表在0地址处

时间: 2024-12-20 11:42:55

s3c6410_中断的相关文章

LCD实验学习笔记(八):中断控制器

s3c2440有60个中断源(其中15个为子中断源). 程序状态寄存器(PSR)的F位设为1,禁用快速中断(FRQ). 程序状态寄存器(PSR)的I位设为1,禁用普通中断(IRQ). 相反,PSR寄存器F位为0开FRQ中断,I位为0开IRQ中断. s3c2440中断控制器中有五个控制寄存器:中断源等待寄存器(SRCPND),中断模式寄存器(INTMOD),屏蔽寄存器(INTMSK),优先级寄存器(PRIORITY),中断等待寄存器(INTPND). SRCPND寄存器各位对应不同的中断,其中外部

Java阻塞中断和LockSupport

在介绍之前,先抛几个问题. Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常? Thread.interrupt()会中断线程什么状态的工作? RUNNING or BLOCKING? 一般Thread编程需要关注interrupt中断不?一般怎么处理?可以用来做什么? LockSupport.park()和unpark(),与object.wait()和notify()的区

一种Linux下共享中断的处理方法

前段时间调试一款芯片的时候,碰到一个奇怪的问题:只要在板卡上插入一个PS2键盘,启动内核时系统就可能会进入串口中断函数去执行,过一会系统就panic不往下继续执行.后来经过分析出现问题时的panic的堆栈,借助EJTAG工具,读到这个时候的串口的中断状态位,竟然发现串口并没有真正产生中断.那么,串口本身没有中断,内核怎么又会跑到串口的中断服务函数去执行呢? 我们知道Linux的中断可以分为I/O 中断 .时钟中断和处理器核间中断.其中I/O中断是Linux 系统响应外部IO事件的重要方式.尽管不

线程的中断

如果一个Java程序有不止一个执行线程,当所有线程都运行结束的时候,这个Java程序才能运行结束:更确切地说应该是所有的非守护线程运行结束时,或者其中一个线程调用了System.exit()方法时,这个Java程序才运行结束. Java提供了中断机制,我们可以使用它来结束一个线程.这种机制要求线程检查它是否被中断了,然后决定是不是响应这个中断请求.线程允许忽略中断请求并且继续执行. package concurrency; public class Generator2 extends Thre

20150218【改进】IMX257实现GPIO-IRQ中断按键获取键值驱动程序

[改进]IMX257实现GPIO-IRQ中断按键获取键值驱动程序 2015-02-18 李海沿 一.使用struct pin_desc 管理按键的值 1.定义结构体 2.将前面我们申请中断时写的(void *)1修改为 &pins_desc[n] 在ioctl中,设置中断中修改 在key_release中释放中修改 3.在中断程序中利用我们定义的struc pins_desc判断并得到按键的值 4.得到按键键值后,唤醒程序,在read函数中返回键值 附上驱动源程序: 1 /***********

20150218【改进信号量】IMX257实现GPIO-IRQ中断按键获取键值驱动程序

[改进信号量]IMX257实现GPIO-IRQ中断按键获取键值驱动程序 2015-02-18 李海沿 前面我们使用POLL查询方式来实现GPIO-IRQ按键中断程序 这里我们来使用信号量,让我们的驱动同时只能有一个应用程序打开. 一.首先在前面代码的基础上来一个简单的信号 1.定义一个全局的整形变量 2.在打开函数中,每次进入打开函数canopen都自减1, 3.当我们不使用时,在realease 中canopen自加1 4.这样就实现了一个简单的信号量,我们编译,测试 当我们使用两个应用程序来

20150218【改进Poll定时查询】IMX257实现GPIO-IRQ中断按键获取键值驱动程序

[改进Poll定时查询]IMX257实现GPIO-IRQ中断按键获取键值驱动程序 2015-02-18 李海沿 按键驱动程序中,如果不使用read函数中使程序休眠的,而是还是使用查询方式的话,可以使用Poll函数,来控制一定时间内,如果有按键发生,则立即返回键值. 同时,poll也可以同时监控多个(比如说按键,鼠标,等)一旦发生事件则立即返回. 我们在linux查看帮助: 从帮助中的说明得知, poll, ppoll - wait for some event on a file descrip

开关中断与cpsid/cpsie指令

在汇编代码中,CPSID   CPSIE  用于快速的开关中断. CPSID I ;PRIMASK=1, ;关中断 CPSIE I ;PRIMASK=0, ;开中断 CPSID CPSIE F F ;FAULTMASK=1, ;FAULTMASK=0 ;关异常 ;开异常 I:IRQ中断;    F:FIQ中断 最常见的这两个命令的使用处是在关中断.开中断的实现中,我们经常用的local_irq_save和local_irq_restore最终都是调用了以下两个实现,即关/开中断只是操作了CP

mysql主从中断

Mysql主从复制中断一例 收到mysql主从中断报警,马上登上服务器查看,发现是中继日志损坏. Show slave status\G,提示中继日志损坏.  Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog'