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)