S3C2440系统中断(转)
++++++++++++++++++++++++++++++++++++++++++
本文系本站原创,欢迎转载! 转载请注明出处:
http://blog.csdn.net/mr_raptor/article/details/6556186
++++++++++++++++++++++++++++++++++++++++++
1.1 S3C2440系统中断
CPU和外设构成了计算机系统,CPU和外设之间通过总线进行连接,用于数据通信和控制,CPU管理监视计算机系统中所有硬件,通常以两种方式来对硬件进行管理监视:
系统中断是嵌入式硬件实时地处理内部或外部事件的一种机制。对于不同CPU而言,中断的处理只是细节不同,大体处理流程都一样,S3C2440A的中断控制器结构如下图所示:
总中断源详下面表中列出了S3C2440A部分中断源,它分别对应中断源寄存器里某个位:详细中断源请查看S3C2440A硬件手册。
中断源 |
描述 |
优先级仲裁分组 |
INT_ADC |
数模转换和触摸屏中断 |
ARB5 |
INT_RTC |
实时时钟中断 |
ARB5 |
INT_UART0 |
UART0中断(包含子中断) |
ARB5 |
INT_NFCON |
NandFlash控制中断 |
ARB4 |
INT_WDT_AC97 |
看门狗中断 |
ARB1 |
EINT8-23 |
外部中断8~23(包含外部子中断) |
ARB1 |
EINT4-7 |
外部中断4~7(包含外部子中断) |
ARB1 |
EINT3 |
外部中断3 |
ARB0 |
EINT2 |
外部中断2 |
ARB0 |
EINT1 |
外部中断1 |
ARB0 |
EINT 0 |
外部中断0 |
ARB0 |
中断信号除上述分法之外,还可以按照硬件位置分为:外部中断源和内部中断源。
l 内部中断源:它是嵌入式系统中常见硬件产生的中断信号,比如:UART串口中断源,时钟Timer中断源,看门狗中断源等
S3C2440A可以支持EINT0~EINT23共24种外部中断,完全可以满足小型嵌入式设备外设硬件的需求。
外部中断源也分为外部中断源和外部子中断源,其处理方式和内部中断源基本一样。
1.1.1 中断优先级
中断信号在7个分组里PK时的优先级是可编程的,通过PRIORITY寄存器进行优先级设置。如下表(只列出PRIORITY寄存器部分位):
寄存器名 |
地址 |
是否读写 |
描述 |
复位默认值 |
PRIORITY |
0x4A00000C |
R/W |
中断优先级控制寄存器 |
0x7F |
PRIORITY |
位 |
描述 |
初始值 |
ARB_SEL6 |
[20:19] |
仲裁组6优先级排序方式 00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-5 10 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5 |
0x00 |
ARB_SEL5 |
[18:17] |
仲裁组5优先级排序 00 = REQ 1-2-3-4 01 = REQ 2-3-4-1 10 = REQ 3-4-1-2 11 = REQ 4-1-2-3 |
00 |
… |
… |
… |
… |
ARB_MODE6 |
[6] |
仲裁组6优先级是否轮转: 0 = 不轮转, 1 = 轮转 |
1 |
ARB_MODE5 |
[5] |
仲裁组5优先级是否轮转: 0 = 不轮转, 1 = 轮转 |
1 |
… |
… |
… |
… |
2 中断控制器相关寄存器
寄存器名 |
地址 |
是否读写 |
描述 |
复位默认值 |
SUBSRCPND |
0x4A000018 |
R/W |
子中断源暂存寄存器,保存中断请求状态: 0:没有中断请求信号 1:中断请求信号产生 |
0x00000000 |
SUBSRCPND |
对应SRCPND |
位 |
描述 |
初始值 |
Reserved |
无 |
[31:15] |
未使用 |
0 |
INT_AC97 |
INT_WDT_AC97 |
[14] |
0 = 未产生中断 1 = 产生中断 |
0 |
… |
… |
… |
… |
… |
INT_RXD0 |
INT_UART0 |
[0] |
0 = 未产生中断 1 = 产生中断 |
0 |
寄存器名 |
地址 |
是否读写 |
描述 |
复位默认值 |
INTSUBMSK |
0x4A00001C |
R/W |
子中断源信号屏蔽存寄存器,设置相应位来屏蔽中断信号: 0:未屏蔽,中断可用 1:屏蔽中断信号 |
0xFFFF |
INTSUBMSK |
位 |
描述 |
初始值 |
Reserved |
[31:15] |
未使用 |
0 |
INT_AC97 |
[14] |
0 = 未屏蔽1 = 屏蔽中断 |
1 |
… |
… |
… |
… |
INT_RXD0 |
[0] |
0 = 未屏蔽1 = 屏蔽中断 |
1 |
该寄存器用来屏蔽子中断源信号,默认值为全部子中断都被屏蔽掉,因此要想处理某个硬件中断,必须要打开中断屏蔽位,通过写入0来取消屏蔽中断。
寄存器名 |
地址 |
是否读写 |
描述 |
复位默认值 |
SRCPND |
0x4A000000 |
R/W |
中断源暂存寄存器,保存中断请求状态: 0:没有中断请求信号 1:中断请求信号产生 |
0x00000000 |
SRCPND |
位 |
描述 |
初始值 |
INT_ADC |
[31] |
0 = 未产生中断 1 = 产生中断 |
0 |
… |
… |
… |
… |
EINT0 |
[0] |
0 = 未产生中断 1 = 产生中断 |
0 |
寄存器名 |
地址 |
是否读写 |
描述 |
复位默认值 |
INTMSK |
0x4A000008 |
R/W |
中断源信号屏蔽存寄存器,设置相应位来屏蔽中断信号: 0:未屏蔽,中断可用 1:屏蔽中断信号 |
0xFFFFFFFF |
INTMSK |
位 |
描述 |
初始值 |
INT_ADC |
[31] |
0 = 未屏蔽1 = 屏蔽中断 |
1 |
… |
… |
… |
… |
EINT0 |
[0] |
0 = 未屏蔽1 = 屏蔽中断 |
1 |
该寄存器用来屏蔽中断源信号,默认值为全部中断都被屏蔽掉,因此要想处理某个硬件中断,必须要打开中断屏蔽位,通过写入0来取消屏蔽中断。
寄存器名 |
地址 |
是否读写 |
描述 |
复位默认值 |
INTPND |
0x4A000010 |
R/W |
最高优先级中断暂存寄存器里面保存有经过优先级仲裁的结果: 0:没有中断请求信号 1:中断请求信号产生 |
0x00000000 |
INTPND |
位 |
描述 |
初始值 |
INT_ADC |
[31] |
0 = 未产生中断 1 = 产生中断 |
0 |
… |
… |
… |
… |
EINT0 |
[0] |
0 = 未产生中断 1 = 产生中断 |
0 |
寄存器名 |
地址 |
是否读写 |
描述 |
复位默认值 |
INTOFFSET |
0x4A000014 |
R |
中断号偏移量寄存器,用来保存当前处理的中断号 |
0x0000000 |
#define TIMER0_IRQ_OFT 10 // 时钟0定时中断
#define EINT0_IRQ_OFT 0 // 开发板K1按键1对应外部中断EINT0
unsigned long irqOffSet = INTOFFSET; // 取得中断号
case TIMER0_IRQ_OFT: // 当前中断为定时器0中断
case EINT0_IRQ_OFT: // 当前中断为K1按键触发
do_key1_pressed(); // 处理K1按下事件
SRCPND &= (1<<irqOffSet); // 清除中断源
INTPND = INTPND; // 清除最高优先级中断暂存寄存器中断
寄存器名 |
地址 |
是否读写 |
描述 |
复位默认值 |
INTMOD |
0x4A000004 |
R/W |
中断模式寄存器,指定对应中断模式: 0 = IRQ一般中断模式 1 = FIQ快速中断模式 |
0x0000000 |
INTMOD |
位 |
描述 |
初始值 |
INT_ADC |
[31] |
0 = IRQ 1 = FIQ |
0 |
… |
… |
… |
… |
EINT0 |
[0] |
0 = IRQ 1 = FIQ |
0 |
通过设置ARM内核产生中断。需要注意的是,快速中断不存在优先级仲裁,只能有一位被设置为<FONT face=""">FIQ模式。
++++++++++++++++++++++++++++++++++++++++++
http://blog.csdn.net/mr_raptor/article/details/6556186
S3C2440系统中断(转)相关推荐
- S3C2440系统中断
1.1 S3C2440系统中断 CPU和外设构成了计算机系统,CPU和外设之间通过总线进行连接,用于数据通信和控制,CPU管理监视计算机系统中所有硬件,通常以两种方式来对硬件进行管理监视: l ...
- mini6410中断控制器-VIC中断控制器
++++++++++++++++++++++++++++++++++++++++++ 本文系本站原创,欢迎转载! 转载请注明出处: http://blog.csdn.net/mr_raptor/art ...
- 【转】s3c2440 按键驱动 — 字符设备
原文网址:http://www.xuebuyuan.com/632893.html 主机:VM - redhat 9.0 开发板:FL2440,linux-2.6.12 arm-linux-gcc:3 ...
- Nucleus 实时操作系统中断(下)
Nucleus 实时操作系统中断(下) Nucleus RTOS兼容性 由于中断在Nucleus SE中的实现方式与Nucleus rto截然不同,因此不应期望有特定的兼容性.Nucleus RTOS ...
- Nucleus 实时操作系统中断(上)
Nucleus 实时操作系统中断(上) Interrupts in the Nucleus SE RTOS 所有现代微处理器和微控制器都有某种中断设施.这种能力对于提供许多应用程序所需的响应能力是必不 ...
- S3C2440 SDRAM内存驱动 .
SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)也就是通常所说的内存.内存的工作原理.控制时序.及相关控制器的配置方法一直是嵌入式系统 ...
- arm-linux交叉编译工具链的制作(基于S3C2440)【转】
本文转载自:http://eric-gao.iteye.com/blog/2160622 制作arm-linux交叉编译工具链一般通过crosstool工具或者crosstool-NG,前者使用方便, ...
- S3C2440的内存情况在NAND FLASH或者NOR FLASH启动的情况下
1,从NANDFLASH启动时,在ARM上电时,ARM会自动把NANDFLASH前4K的内容拷贝到S3C2440内部SRAM中,同时把SRAM的地址映射到0X00000000.ARM上电后会从SRAM ...
- Linux下Minigui开发环境的搭建(PC+S3C2440
花了两天时间终于把Minigui的开发环境搭建好了,遇到了很多问题,看了很多人的博客,对我的启发很大.关键是以前偷懒装redhat的时候为了省空间,很多库文件都没安装搞的自己很狼狈,不过也由于这个原因 ...
最新文章
- 运行shell脚本时报错[[ : not found解决方法
- constructor
- Microsoft加入量子计算的竞争
- 补第一阶段冲刺站立会议1(应发表日期5月13日)
- 多源计算机培训,多源数据汇聚的多流形学习算法研究
- dynamic programming动态规划初步理解【-1】
- 【持续更新】【产品相关名词解释】CBD、BOM、DFM、EVT、EOF、CMF、PP、MP等
- 房价会象汽车电脑一样下降
- 对SQL说不!NoSQL的数据库技术革命
- 菜鸡前端面试题整理日记
- 安徒生---海的女儿
- 重装Office后打开Powerpoint和excel提示找不到VCRUNTIME140_1.dll的解决办法(亲测成功,简单有效)
- 学习记录_美术部分_美术理论基础
- 金融业大数据风控方式
- svn分支开发与主干合并(branch merge)
- [PHP]用PHP自己写一个zoomeye的api(偷懒必备quq)
- species-in-pieces网站动效的JS实现
- 云计算助推金融行业信息化发展
- 第十一次作业 - Alpha 事后诸葛亮
- php代码审计之bluecms
热门文章
- 如何进入csdn的我的收藏? 我的收藏在哪里?
- Android 房租计算器,简单计算器
- python如何读取log文件_怎么解决Python读取log文件时报错
- Qpython SL4A服务调用GPS定位获取获取位置信息
- R语言:wilcox 无法精确计算带连结的p值
- Python全栈:Django模板
- android 7 audio架构,GitHub - zozo825117/ble_audio_android: android audio框架
- 计算机无法访问苹果相册,iPhone与电脑连接后找不到照片怎么办?掌握这三个技巧,烦恼问题轻松解决!...
- 树莓派4b 4G 64位系统下安装opencv
- LESS与SASS的伯与仲