ARM·中断控制器
}
红色部分,便是我们这章的重点内容,也就是对中断寄存器的配置,init的初始化 。
这张图,前后反复提到,可以作为重点的参考图,结合下面这张s3c2440的中断源的表
CPU与外设之间的数据传送控制方式,通常有以下三种:
*查询方式
*中断方式
*DMA方式(Direct Memory Access)
直接内存存取是数字信号处理器DSP用于快速数据交换的重要技术
独立于CPU后台批量数据传输能力
*中断请求
*中断仲裁
*中断响应
*中断处理
*中断返回
中断处理流程:
(1)中断控制器捕获当前外设发出的中断信号,通知soc
(2)soc保存当前程序的运行环境,然后调用中断服务程序来处理中断
(3)ISR中通过读取中断控制寄存器、外设的相关寄存器来是哪一个中断触发,获取硬件中断号IRQ,跳转到相应的地方完成中断
(4)清楚中断:通过读写相关中断控制寄存器和外设相关的寄存器来实现
(5)最后恢复被中断程序的环境,继续执行
(太多)
这里关于一级中断和二级中断源的一个处理
(EINT8_23,ENT4_7)
当一个中断响应,我们可以通过相应地控制寄存器对中断进行定性的控制,也就是操作这些寄存器 ;
*源挂起寄存器 SRCPND (与SUBSRCPND相似)
*中断模式寄存器 INTMOD
*中断屏蔽寄存器 INTMASK
*中断优先级寄存器 PRIOPITY
*中断挂起寄存器 INTPND
*确认中断源寄存器 INTOFFSET
*子中断源源挂起寄存器 SUBSRCPND(清中断时往SUBSRCPND寄存器中的对应位写入1)
*子中断屏蔽寄存器 INTSUBMASK(设置为1:对应子中断被屏蔽 ;设置为0:表示子中断允许)
(关于 挂起:有人说的很好,挂起是被翻译过来的,英文是Pending,另一个意思更加准确:等待被执行)
(多个中断一起响应的时候,优先级更高的中断先执行,其他被挂起)
*外部中断控制寄存器EXTINTx
*外部中断屏蔽寄存器EINTMASK
*外部中断挂起寄存器EINTPEND
(1)EXTINTx
设置可以控制低电平触发,高电平触发,下降沿触发,上升沿触发,边沿触发
(2)外部中断屏蔽寄存器
(3)外部中断挂起寄存器
ARM中断控制 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)