首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux系统GIC介绍与编程

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 第四章GIC介绍与编程 资料下载 视频观看 4.1 GIC介绍 4.1.1 配置 4.1.2 初始化 4.1.3 GIC中断处理 4.2 GIC的寄存器 4.2.1 Distributor...下图是GIC控制器的逻辑结构: 4.1.1 配置 ​ GIC作为内存映射的外围设备,被软件访问。...如果此字段为0b00000,则GIC不会实现配置锁定。 如果GIC没有实现安全扩展,则保留该字段。...处理GIC的基地址不一样外,对GIC的操作都是一样的。 在NXP官网可以找到IMX6ULL的SDK包。 下载后可以参考这个文件:core_ca7.h,里面含有GIC的初始化代码。

2.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Altera cyclone V HPS GIC

    今天和大侠简单聊一聊英特尔 Altera系列 cyclone V HPS GIC,话不多说,上货。...一、CYCLONE V GIC配置 Cyclone v使用双核ARM CORTEX A9硬核处理器,MPU系统框图如下: ? 由上面图可以看出,双核CORTEXA9共同使用一个GIC,pl390。...而橙色箭头方向表示GIC提供了一个AXI接口,可以用于访问distributor,对GIC进行配置。蓝色表示软件可以通过CPU接口直接编程GIC,产生中断,该中断具有广播性质。...通用GIC系统框图如下所示: ? 由上图可以看到GIC明显分成了Distributor与cpu接口两部分。所有的中断都经过Distributor,SGI中断只是能edge触发。...中断结束寄存器(GICC_EOIR) 当中断服务程序(ISR)中的中断处理完成时,记录相应的中断ID,并通知gic已执行eoi处理。写该寄存器通过GIC中断处理完毕。 ? ?

    92530

    Linux系统驱动之GIC驱动程序对中断的处理流程

    资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...多级中断控制器处理流程 参考资料: linux kernel的中断子系统之(七):GIC代码分析 使用逐步演进的方法才能形象地理解。 1....假设要使用UART模块,它发出的中断连接到GIC的32号中断,分配的irq_desc序号为16 在GIC domain中会记录(32, 16) 那么注册中断时就是:request_irq(16, ......发生UART中断时 程序从GIC中读取寄存器知道发生了32号中断,通过GIC irq_domain可以知道virq为16 调用irq_desc[16]中的handleA函数,它的作用是调用action...按下KEY时: 程序从GIC中读取寄存器知道发生了33号中断,通过GIC irq_domain可以知道virq为16 调用irq_desc[16]中的handleB函数 handleB

    2.2K20

    Linux系统驱动之两类中断控制器处理流程_链式和层级

    处理流程对比 在这里插入图片描述 参考资料: linux kernel的中断子系统之(七):GIC代码分析 Linux 4.9.88内核源码 Linux-4.9.88\drivers...\gpio\gpio-mxc.c Linux-4.9.88\arch\arm\boot\dts\imx6ull.dtsi Linux 5.4内核源码 Linux-5.4\drivers\pinctrl...\stm32\pinctrl-stm32mp157.c Linux-5.4\drivers\irqchip\irq-stm32-exti.c Linux-5.4\arch\arm\boot\dts\stm32mp151...它底下的4个中断触发时,都会导致GIC的33号中断被触发。 处理中断时,需要分辨:是谁触发了GIC 33号中断?这需要读取"chained intc"中的寄存器。...它底下的4个中断,跟GIC中的4个中断一一对应。 处理GIC 100~103号中断时,不需要读取"hierarchy intc"的寄存器来分辨是谁触发了中断。 2.

    1.1K41

    Linux 中断子系统(三):中断处理知识点大全

    Linux 中断相关节点 /proc/interrupts cat 这个节点,会打印系统中所有的中断信息,如果是多核CPU,每个核都会打印出来。...更多介绍请参看 Linux 内核源代码自带的文档:linux-4.14/Documentation/IRQ-affinity.txt /proc/irq/{IRQ}/smp_affinity /proc...从GIC角度看,GIC 会发送高优先级中断请求给CPU。但是CPU不一定响应!!!...在中断处理过程中,主要是 GIC 和 CPU 的交互,即便 GIC 支持高优先级中断抢占正在执行的低优先级中断,发信号给 CPU core,但是 CPU core 可以不处理,因为 Linux 中当 CPU...对于这类中断,linux kernel有一套复杂的机制来处理,你可以通过command line参数(noirqdebug)来控制开关该功能。

    5.3K20

    吐血整理 | 肝翻 Linux 中断所有知识点

    Linux 中断管理机制 GIC 硬件原理 GIC,Generic Interrupt Controller。是ARM公司提供的一个通用的中断控制器。...驱动 这里主要分析 linux kernel 中 GIC v3 中断控制器的代码(drivers/irqchip/irq-gic-v3.c)。...linux 内核为了应对此问题,引入了 irq_domain 的概念。 irq_domain 的引入相当于一个中断控制器就是一个 irq_domain。这样一来所有的中断控制器就会出现级联的布局。...每一个中断控制器对应多个中断号, 而硬件中断号在不同的中断控制器上是会重复编码的, 这时仅仅用硬中断号已经不能唯一标识一个外设中断,因此 linux kernel 提供了一个虚拟中断号的概念。...包括从设备树获取中断源信息的解析,硬件中断号到 Linux 中断号的映射关系,irq_desc 等各个结构的分配及初始化、中断的注册等等,总而言之,就是完成静态关系创建,为中断处理做好准备。

    3.5K61

    Linux内核笔记之中断映射

    硬中断和虚拟中断号 在Linux 内核笔记之高层中断处理一文中,介绍了ARM gic中断控制器对于硬中断的处理过程。...gic的中断处理程序是从ack一个硬件中断开始的, 在gic的中断处理过程中,会根据中断的映射去寻找对应的虚拟中断号, 再去进行后续的中断处理。...对于软件工程师而言,我们不需要care是中断哪个中断控制器的第几个中断号, 因此linux kernel提供了一个虚拟中断号的概念。...irq_domain 接下来讨论硬件中断号是如何映射到虚拟中断号的linux kernel提供irq_domain的管理框架, 将hwirq映射到虚拟中断号上。...interrupt controller初始化的过程中,注册irq domain 以gic 注册irq_domain为例 +-> gic_of_init +-> gic_init_bases +-

    5.1K30

    Linux系统驱动之链式中断控制器驱动程序编写

    资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...沿着中断的处理流程,GIC之下的中断控制器涉及这4个重要部分:handleB、GPIO Domain、handleC、irq_chip handleB:处理GIC 33号中断,handleB由GPIO...驱动提供 屏蔽GIC 33号中断:调用irq_dataA的irq_chip的函数,irq_dataA由GIC驱动提供 细分并处理某个GPIO中断: 读取GPIO寄存器得到hwirq,通过...GPIO Domain转换为virq,假设是102 调用irq_desc[102].handle_irq,即handleC 清除GIC 33号中断:调用irq_dataA的irq_chip的函数,由GIC...对于这些虚拟的中断控制器,我们没有真实按键,通过devmem指令写GIC的PENDING寄存器触发中断。 3. 编程 会涉及2个驱动程序:虚拟的中断控制器驱动程序,按键驱动程序,以及对应的设备树。

    1.6K30

    韦东山:在Linux设备树(DTS)中指定中断_在代码中获得中断

    所以软件上的“中断控制器”就有很多个:GIC、GPIO1、GPIO2等等。 GPIO1连接到GIC,GPIO2连接到GIC,所以GPIO1的父亲是GIC,GPIO2的父亲是GIC。...假设GPIO1有32个中断源,但是它把其中的16个汇聚起来向GIC发出一个中断,把另外16个汇聚起来向GIC发出另一个中断。...这就意味着GPIO1会用到GIC的两个中断,会涉及GIC里的2个hwirq。 这些层级关系、中断号(hwirq),都会在设备树中有所体现。...它提供中断屏蔽、中断状态查询功能,实际上这些功能在GIC里也实现了,个人觉得有点多余。除此之外,它还提供唤醒功能,这才是保留它的原因。...label = "User Button"; gpios = ; gpio-key,wakeup; linux

    7.9K20
    领券