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

我眼中的Linux设备(四 中断)

一般情况中断产生设备数量要多于中断控制器,多个中断产生设备中断都由一个中断控制器处理,这种多对一的关系也很像一个树形结构,所以在设备中,中断也被描述成,叫中断。...以下表述的时候为了明确是在说中断,在父节点和子节点前边我们都加上“中断”二字,是为了防止和设备的父节点、子节点混淆(虽然大部分情况设备的父子关系就是中断的父子关系,但是因为存在特例,所以我们还是强调是中断父子关系...如果设备的父节点就是中断父节点,那么可以不用设置interrupt-parent属性。...因为他的中断设备可能和设备的父设备不同,那么用interrupt-parent属性指向他的中断设备。...根据中断的特性,一个设备中是有可能有多个中断的。 以上是中断设备中如何描述的规则,听起来是挺复杂的,但只要理解了就很简单,为了帮助理解我们举一个实际的例子。

2.4K70

GPIO—按键中断

STM32F103ZET6有7组GPIO,每组16个引脚,即112个GPIO引脚,但EXTI只支持19个外部中断/事件请求,因此需要将多个GPIO合成一组,共用一个中断线,STM32F103系列中断线分组如表...结合图 13.1.1 所示,EXTI0-EXTI15作为GPIO中断线使用,同组的GPIO共享一条中断线,比如EXTI0组,PA0作为了中断源,则此时PB0~PG0不能作为中断源。...GPIO引脚可以产生外部中断或事件,如是中断则交由NVIC处理,如果是事件则产生脉冲信号联动其它模块工作。...无论是内部中断源,还是GPIO产生的中断,都由NVIC管理分组,然后根据中断优先级分组确定抢占优先级级数和子优先级级数。 GPIO引脚众多,将引脚数字相同的作为一组,共享一个中断线。...按键初始化:GPIO端口时钟使能、AFIO复用功能时钟使能、GPIO引脚设置为下降沿触发中断(PA0, PG15, PC13, PE3); 填充每个按键中断处理函数:读取按键GPIO状态,操作对应LED

2.7K30
您找到你想要的搜索结果了吗?
是的
没有找到

11_GPIO中断

1.2.1 GPIO中断GPIO中断,指有GPIO模块产生的中断,有边沿触发中断或者电平翻转中断GPIO模块能检测到引脚上的值是0还是1,并能通过外部拓展将电平从变为1或是从1变到0。...CPU接收外部的中断请求,并进行处理,其实是一个被动接受的过程,这样的好处是己能保证主任务的执行效率,又能及时获取外部请求,从而处理重要的设备请求中断。 ​...1.5.2.2 修改Makefile PREFIX=arm-linux-gnueabihf- CC=$(PREFIX)gcc LD=$(PREFIX)ld AR=$(PREFIX)ar OBJCOPY=...nostdinc -fno-builtin -I$(INCLUDEDIR) LDFLAGS := -L /usr/arm/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.../lib/gcc/arm-linux-gnueabihf/6.2.1 -lgcc objs := start.o main.o led.o key.o interrupt.o uart.o eabi_compat.o

1.1K20

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

作者:韦东山 全文分为三大部分 1.设备中断节点的语法 2.设备中断节点的示例 3.在代码中获得中断 参考: 内核Documentation\devicetree\bindings\interrupt-controller...\interrupts.txt 1.设备中断节点的语法 1.1 设备里的中断控制器 中断的硬件框图如下: ?...这就意味着GPIO1会用到GIC的两个中断,会涉及GIC里的2个hwirq。 这些层级关系、中断号(hwirq),都会在设备中有所体现。...1.2 设备里使用中断 一个外设,它的中断信号接到哪个“中断控制器”的哪个“中断引脚”,这个中断的触发方式是怎样的? 这3个问题,在设备里使用中断时,都要有所体现。...; linux,code = ; }; }; 那么可以使用下面的函数获得引脚和flag: button->gpio = of_get_gpio_flags(pp,

6.8K20

linux 设备

linux 设备 ---- 参考地址 http://blog.csdn.net/green1900/article/details/45646095 http://www.cnblogs.com...中断控制器和中断使用情况、 6. GPIO控制器和GPIO使用情况、 7. Clock控制器和Clock使用情况。...unit_address一般是设备地址,用来唯一标识一个节点 Linux中的设备还包括几个特殊的节点,比如chosen,chosen节点不描述一个真实设备,而是用于firmware传递一些数据给OS...这样就可以实现类似函数调用的效果 3.KEY 在设备中,键值对是描述属性的方式,比如,Linux驱动中可以通过设备节点中的”compatible”这个属性查找设备节点 inux设备语法中定义了一些具有规范意义的属性...,标识此设备节点属于哪一个中断控制器,如果没有设置这个属性,会自动依附父节点的 interrupts,一个中断标识符列表,表示每一个中断输出信号 3.4gpio gpio-controller,用来说明该节点描述的是一个

3K20

Linux设备语法详解

概念 Linux内核从3.x开始引入设备的概念,用于实现驱动代码与设备信息相分离。在设备出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。...我这里用`Linux4.8.5源码自带的dm9000网卡为例来分析设备的使用和移植。...此外,还有一些Linux内核定义好的,一类设备通用的有默认意义的属性,这些属性一般不能被内核自动解析生成相应的设备信息,但是内核已经编写的相应的解析提取函数,常见的有 "mac_addr","gpio"...的中断控制器(GIC)节点描述: 要说interrupt-parent,就得首先讲讲Linux设备管理中对中断的设计思路演变。...ARM设备专题 设备(上) Linux ARM设备专题 设备(下)

5.7K71

Linux设备(DTS)介绍

设备由来 linux内核源码中,之前充斥着大量的平台相关(platform Device)配置,而这些代码大多是杂乱且重复的,这使得ARM体系结构的代码维护者和内核维护者在发布一个新的版本的时候有大量的工作要做...设备的作用 设备是一个描述硬件的数据结构,甚至你可以将其看成一个大结构体(这个结构体就是平台,成员就是具体的设备),需要注意的是设备并不能解决所有的硬件配置问题(例如:机器识别),它只是提供一种语言...,将硬件的配置从linux内核的源码中提取出来。...Linux使用设备的主要原因如下 A:平台识别 B:实时配置 C:设备植入 设备解耦目标 目标一 vendor相关修改,完全独立出来,禁止在soc原生的dtsi中修改,只允许以dtbo的方式存在;...目标二 同基线项目dtbo要共二进制 设备解耦框架设计 设备识别原理及设备共二进制原理 项目号(Project No)与 PCB ID两个变量同时与dtbo中的两个属性“dtsi_No”“pcb_No

45220

Linux设备是什么?

众所周知操作系统一直在不断的更新和发展,而在Linux驱动的架构上面也是不断的进步和完善。在早期的Linux内核和ARM架构中并没有采用设备。...在图片中,的主干就是系统总线,IIC控制器、SPI控制器等都是接到系统主线的分支上的。通过DTS这个文件描述设备信息是有相关的语法规则的,并且在Linux内核中只有3.x版本以后的才支持设备。...未使用设备设备匹配方法 在没有使用设备之前,uboot会向Linux内核传递一个叫machine id的值,machine id也就是设备ID,告诉Linux内核自己是一个什么设备...使用设备设备匹配方法 当Linux内核引入设备以后就不在使用MACHINE_START了,而是换为了DT_MACHINE_START。...说明引入了设备以后就不会根据machine id来检查Linux 内核是否支持这个设备

7K20

Linux BSP实战课(设备篇):设备的解析

设备的解析 setup_machine_fdt unflatten_device_tree 总结 设备常用OF操作函数 查找节点的 OF 函数 查找父/子节点的 OF 函数 提取属性值的 OF 函数...其他常用的 OF 函数 设备的解析 我们来看看内核是如何把设备解析成所需的device_node。...Linux最底层的初始化部分在HEAD.s中,这是汇编代码,暂且不作过多讨论。...unflatten_device_tree(); } 这两个被调用的函数就是主要的设备处理函数: setup_machine_fdt:根据传入的设备dtb的根节点完成一些初始化操作。...unflatten_device_tree:对设备具体的解析,这个函数中所做的工作就是将设备各节点转换成相应的 struct device_node 结构体。 下面我们再来通过代码跟踪仔细分析。

25610

Linux笔记(22)| 设备初探

今天跟大家分享的是设备设备Linux3.x以后的版本才引入的,设备用于描述一个硬件平台的板级细节。...如果硬件资源发生了改变,我们只需要修改设备文件就行了,但是这样还不够好,如果有非常多的设备,就要写非常多的设备文件,这些文件非常庞大,导致Linux内核非常臃肿。...在Linux内核里有设备文件,路径是 源码目录/arch/arm/boot/dts/imx6ull-seeed-npi.dts 来看一下设备文件的格式: Devicetree node格式: [...第二步,编译设备 编译内核时会自动编译设备,但是编译内核很耗时,所以我们推荐使用如下命令只编译设备。...以上就是我们今天设备的所有内容。总结一下,主要是讲了为什么要有设备设备文件的结构是怎样的,如何从设备文件中获取节点信息,包括查找节点,获取节点属性,以及内存映射等,最后讲了编译设备

1.9K10

Linux设备学习篇(1)

Linux设备学习篇(1) 1. 什么是设备 2. 为什么要使用设备来替代传统的总线设备驱动模型 3. DTS、DTB 和 DTC 4....的主干就是系统总线,IIC 控制器、GPIO 控制器、SPI 控制器等都是接到系统主线上的分支。...chosen 属性 chosen并不是一个真实的设备,chosen 节点主要是为了 uboot 向 Linux 内核传递数据,比如启动参数bootargs,不代表实际的设备。其父节点必须是根节点。...绑定信息文档 设备是用来描述板子上的设备信息的,不同的设备其信息不同,反映到设备中就是属性不同。那么我们在设备中添加一个硬件对应的节点的时候从哪里查阅相关的说明呢?...Linux 内核给我们提供了一系列的函数来获取设备中的节点或者属性信息,这一系列的函数都有一个统一的前缀“of_”,所以在很多资料里面也被叫做 OF 函数。

2.5K10

Linux驱动实践:如何编写【 GPIO设备的驱动程序?

目录 示例程序目标 编写驱动程序 编写应用程序 卸载驱动模块 在前几篇文章中,我们一块讨论了:在 Linux 系统中,编写字符设备驱动程序的基本框架,主要是从代码流程和 API 函数这两方面触发。...编写驱动程序 以下所有操作的工作目录,都是与上一篇文章相同的,即:~/tmp/linux-4.15/drivers/。...文件的内容如下(不需要手敲,文末有代码下载链接): #include #include #include #include #include // GPIO 硬件相关宏定义 #define MYGPIO_HW_ENABLE // 设备名称...从代码中可以看出:驱动程序使用 alloc_chrdev_region 函数,来动态注册设备号,并且利用了 Linux 应用层中的 udev 服务,自动在 /dev 目录下创建了设备节点。

4.8K30

Linux设备(Device Tree)机制

设备(Device Tree)基本概念及作用 2. 设备的组成和使用 2.1. DTS和DTSI 2.2. DTC 2.3. DTB 2.4. Bootloader 3....Device Tree可以描述的信息包括CPU的数量和类别、内存基地址和大小、总线和桥、外设连接、中断控制器和中断使用情况、GPIO控制器和GPIO使用情况、Clock控制器和Clock使用情况。...设备的主要优势:对于同一SOC的不同主板,只需更换设备文件.dtb即可实现不同主板的无差异支持,而无需更换内核文件。...注:要使得3.x之后的内核支持使用设备,除了内核编译时需要打开相对应的选项外,bootloader也需要支持将设备的数据结构传给内核。 2....Header 在\kernel\include\linux\of_fdt.h文件中有相关定义 4.2.device-tree structure 设备树结构块是一个线性化的结构体,是设备的主体,以节点的形式保存了主板上的设备信息

4.4K30

Linux笔记(23)| “插件”设备

今天和大家分享的依然是设备,上一节里主要是介绍了设备文件的基本格式、语法规则等,今天介绍一下如何使用设备,以及如何动态加载设备。...设备里记录的是“资源”,比如我们要点亮led,就可以增加一个led的节点,把led相关的寄存器放在这个节点里。...这样我们的设备文件就写好了,参照上一节的做法,我们修改完设备文件,然后进行编译,将生成的dtb文件替换开发板原来的dtb文件,然后重启开发板即可。...设备文件写好了,接下来就是写驱动文件了。...其实驱动文件和我们之前在Linux笔记(21)| platform总线驱动分析介绍的基本是一样的,唯一的不同就是资源获取方式不一样,之前是在设备文件中获取,现在是在设备文件上获取。

2.2K10

DRV_05_GPIO按键驱动分析与使用

drivers\input\keyboard\gpio_keys.c 设备 IMX6ULL:Linux-4.9.88/arch/arm/boot/dts/100ask_imx6ull-14x14...设备示例 2.1 设备讲解 属性: 必备:compatible = "gpio-keys"; 可选: autorepeat: 表示自动重复,按下按键不松开,驱动会自动重复上报按键值 对于每一个...驱动程序分析 3.1 套路 根据设备获得硬件信息:哪个GPIO、对于什么按键 分配/设置/注册input_dev结构体 request_irq: 在中断处理函数中确定按键值、上报按键值 有两种...IRQ函数 gpio_keys_gpio_isr:设备中的用gpios来描述用到的引脚 gpio_keys_irq_isr:设备中的用interrupts来描述用到的引脚 3.2 gpio_keys_gpio_isr.../bin 4.2 配置内核 QEMU的内核里已经配置了GPIO按键的设备,只需要编译出gpio_keys驱动程序即可。

1.8K20

内核中断系统中的设备

这节课讲解如何在中断系统中使用设备,也就是用设备如何描述中断。...中断体系在4.x内核中变化很大,中断体系又跟pinctrl系统密切相关,pinctrl中又涉及GPIO子系统,这样讲下去的话,设备课程就变成驱动专题了,所以我打算只讲中断体系统,对于pinctrl、gpio...\source_and_images\第5,6课的源码及映像文件(使用了完全版的设备)\内核补丁及设备 先解压原始内核(source_and_images\kernel): tar xzf linux...#interrupt-cells = ;–>表明下一级的设备要用多少个32位的数据来描述这个中断 GPIO中断控制器 gpf { gpio-controller; #...有几个U32的数据来描述中断 =第05节_示例_使用设备描述按键中断= 在上节视频里我们体验了怎么在设备中描述中断,这一节我们来写一个按键驱动程序来看看怎么使用设备来描述按键驱动程序所使用的引脚和所使用的中断

1.1K31

韦东山:剥丝抽茧分析linux中断系统的重要数据结构

所以在中断比较“稀疏”的情况下可以用基数来代替数组。 1.irq_desc数组 irq_desc结构体在include/linux/irqdesc.h中定义,主要内容如下图: ?...要理解它们,需要先看中断结构图: ? 外部设备1、外部设备n共享一个GPIO中断B,多个GPIO中断汇聚到GIC(通用中断控制器)的A号中断,GIC再去中断CPU。...注意: 导致GPIO中断B发生的原因很多,可能是外部设备1,可能是外部设备n,可能只是某一个设备,也可能是多个设备。...当我们后面从设备讲起,如何在设备中指定中断设备中断如何被转换为irq时,irq_domain将会起到极大的作为。...这里基于入门的解度简单讲讲,在设备中你会看到这样的属性: interrupt-parent = ; interrupts = ; 它表示要使用

1K20
领券