中断小结

上下文 是否抢占 顶半部 中断 否 Softirq/tasklet 软中断 是 workqueue 进程 是 threaded_irq 进程 是 Tasklet:底半部,优先级比较高,处理函数中不能睡眠。 workqueue:底半部,处理函数可以睡眠,也可以执行比较长的应用。 threaded_irq:底半部,处理函数可以睡眠,也可以执行比较长的应用,支持IRQ_ONESHOT。 中断处理过程 为

workqueue

API接口 初始化 函数 说明 DECLARE_WORK(n, f) 静态定义一个work,实际就是定义一个struct work_struct的全局变量。 DECLARE_DELAYED_WORK(_work, _func) 静态定义一个work,与上面的区别就是work可以在指定时间之后再由线程来执行。 INIT_WORK(_work, _func) 可以动态的分配一个struct work_

软中断和tasklet

Linux的中断分为上下部机制,上半部在中断上下文中关闭了本地CPU中断响应,下半部是在中断线程中处理。在Linux系统没有引入中断线程化机制之前,就已经出现了一些下半部的机制,如软中断SoftIRQ,Tasklet和workqueue。 SoftIRQ是预留给系统对时间要求比较严格进行使用的,Linux系统已经定义了软中断的类型,通常情况下用户部需要修改软中断的类型,对于用户来说可以使用task

Linux中断实现

interrupt controller初始化 设备树中对gic-v3的描述如下,其中interrupt-controller标识了该设备是一个中断控制器。 interrupt-controller@3400000 { compatible = \"arm,gic-v3\"; #interrupt-cells = <0x03>; #address-cells = <0x00>;

中断基本概念

在现代嵌入式系统中,处理器上会挂接很多个外设,CPU在执行任务的时候,可能会同时由多个中断发生,那么中断必要要进行响应处理并维护一个队列一一运行,这样自然会影响CPU的效率,为了让CPU专注于实际运算,中断控制器孕育而生,各中断信号源都先交给中断控制器处理,由中断控制器进行管理,同时接受多个中断请求并进行优先级判断,然后选中一个最高优先级的请求送个CPU进行处理,在CPU响应处理中断时,中断控制器

Arm64体系结构简介

ARM简介 ARM版本 典型处理器 主要特性 v1 26位地址空间 v2 增加乘法、乘加法、支持协处理指令等 v3 地址空间扩展到32位,增加SPSP和CPSR等 v4 ARM7TDMI/ARM920T 增加Thumb指令等 v5 ARM926EJ-S 增加Jazelle和VFPv2等 v6 ARM11 MPCore 增加SIMD、TrustZone以及Thumb-2等 v7 Cortex-A8/