1.前言 本文主要是对 <<ARM嵌入式系统开发:软件设计与优化>> 第9.3.2节的读书总结,如下只是简单的做一记录,详细的后续补充 2.嵌套中断处理过程 3. 详细处理流程 结合源码可以得出如下: 1.首先进出中断处理函数后,禁用中断,并保存被打断任务的上下文,此时为IRQ处理器模式,相应的堆栈 ...
分类:
其他好文 时间:
2018-05-12 16:17:18
阅读次数:
208
5.1 中断体系 ARM 体系的CPU 有 7 种工作模式 用户模式(usr):ARM 处理器正常的程序执行状态 快速中断模式(fiq):用于高速数据传输或通道处理 中断模式(irq):用户通用的中断处理 管理模式(svc):操作系统使用的保护模式 数据访问终止模式(abt):当数据或指令预取终止时 ...
分类:
其他好文 时间:
2018-04-27 02:25:51
阅读次数:
175
硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产 ...
分类:
其他好文 时间:
2018-04-24 11:04:16
阅读次数:
144
bootstrap: 中断 硬件:保存寄存器, 切到ISR(Interrupt Service Routine) ISR汇编:保存需要的寄存器,设置环境 ISR C: 处理中断,从外设读入数据 ISR C: 返回汇编ISR ISR汇编:恢复寄存器,返回中断点。 本质:以IRQ(Interrupt R ...
分类:
其他好文 时间:
2018-03-12 21:07:54
阅读次数:
179
结合之前的 "串口实验(轮询方式)" 与 "中断体系分析" ,我们来做下中断方式的串口接收实验。 start.S ~~~~ .global _start .global IRQ_handle _start: / 关 Watch Dog / ldr r0, =0xE2700000 mov r1, 0 ...
分类:
其他好文 时间:
2018-02-16 14:16:38
阅读次数:
189
一、设备IRQ的suspend和resume 本小节主要解决这样一个问题:在系统休眠过程中,如何suspend设备中断(IRQ)?在从休眠中唤醒的过程中,如何resume设备IRQ? 一般而言,在系统suspend过程的后期,各个设备的IRQ (interrupt request line)会被di ...
分类:
系统相关 时间:
2018-02-13 23:39:51
阅读次数:
280
一、概述 在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断: 1、IRQ number。CPU需要为每一个外设中断编号,我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID,和硬件无关,仅仅是被CPU用来标识一个外设中断。 2、HW i ...
分类:
系统相关 时间:
2018-02-13 22:17:11
阅读次数:
278
一、前言 当外设触发一次中断后,一个大概的处理过程是: 1、具体CPU architecture相关的模块会进行现场保护,然后调用machine driver对应的中断处理handler 2、machine driver对应的中断处理handler中会根据硬件的信息获取HW interrupt ID ...
分类:
系统相关 时间:
2018-02-13 22:16:18
阅读次数:
297
一、前言 一个合格的linux驱动工程师需要对kernel中的中断子系统有深刻的理解,只有这样,在写具体driver的时候才能: 1、正确的使用linux kernel提供的的API,例如最著名的request_threaded_irq(request_irq)接口 2、正确使用同步机制保护驱动代码 ...
分类:
系统相关 时间:
2018-02-13 22:15:41
阅读次数:
235
一、前言 本文主要围绕IRQ number和中断描述符(interrupt descriptor)这两个概念描述通用中断处理过程。第二章主要描述基本概念,包括什么是IRQ number,什么是中断描述符等。第三章描述中断描述符数据结构的各个成员。第四章描述了初始化中断描述符相关的接口API。第五章描 ...
分类:
系统相关 时间:
2018-02-13 22:12:16
阅读次数:
228