首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

09_GPIO子系统与Pinctrl子系统的交互

视频观看 百问网驱动大全 GPIO子系统与Pinctrl子系统的交互 参考资料: Linux 5.x内核文档 Linux-5.4\Documentation\driver-api Linux-5.4...Linux-4.9.88\Documentation\gpio Linux-4.9.88\Documentation\devicetree\bindings\gpio\gpio.txt Linux-...,假设在GPIO子系统全局编号为100103 GPIO1内部引脚编号为03,假设在GPIO子系统全局编号为104107 假设我们要使用pin1_1,应该这样做: 根据GPIO1的内部编号1,可以换算为...Pinctrl子系统的编号5 使用Pinctrl的函数,把第5个引脚配置为GPIO功能 2.2 数据结构 3....GPIO调用Pinctrl的过程 GPIO子系统的request函数,用来申请某个GPIO引脚, 它会导致Pinctrl子系统的这2个函数之一被调用:pmxops->gpio_request_enable

81610

01_GPIO子系统视频介绍

视频观看 百问网驱动大全 GPIO子系统视频介绍 参考资料: Linux 5.x内核文档 Linux-5.4\Documentation\driver-api Linux-5.4\Documentation...\devicetree\bindings\gpio\gpio.txt Linux 4.x内核文档 Linux-4.9.88\Documentation\gpio Linux-4.9.88\Documentation...预计录制的内容 使用GPIO子系统要掌握的重要概念 基于GPIO子系统的LED驱动程序 LED驱动程序上机实验(分为多个单板) GPIO子系统层次与数据结构 具体单板上GPIO子系统源码分析(分为多个单板...) 编写一个GPIO扩展芯片的驱动程序 GPIO子系统与Pinctrl子系统的交互 GPIO子系统的sysfs接口 结构 具体单板上GPIO子系统源码分析(分为多个单板) 编写一个GPIO扩展芯片的驱动程序...GPIO子系统与Pinctrl子系统的交互 GPIO子系统的sysfs接口

56420

手把手教你使用 gpio 子系统 API

pinctrl 子系统就是为了解决这个问题而引入的,pinctrl 子系统主要工作内容如下: ①、获取设备树 pin 信息。...如果 pinctrl 将一个 pin 脚初始化为 GPIO 而不是 IIC 或者 SPI,那么接下来就可以使用 gpio 子系统的API。 gpio 子系统是基于 pinctrl 子系统的!...(pinctrl 的 api 其实可以实现所有需求,但 gpio 的函数更常用一些) 1、gpio 子系统 API gpio 子系统操作一个 GPIO 需要如下几步: 1、of_find_compatible_node...1)of_find_compatible_node 函数在设备树根据 device_type 和 compatible 这两个属性查找指定的节点,此处是为了获取在设备树设置的 GPIO 的节点句柄...3、pinctrl_select_state 在 Linux ,加 devm_ 开头的函数,代表这个函数支持资源管理。

1.8K10

【深度】韦东山:GPIO和Pinctrl子系统的使用

Linux下针对引脚有2个重要的子系统GPIO、Pinctrl。 1.Pinctrl子系统重要概念 1.1 引入 无论是哪种芯片,都有类似下图的结构: ?...等BSP工程师在GPIO子系统、Pinctrl子系统把自家芯片的支持加进去后,我们就可以非常方便地使用这些引脚了:点灯简直太简单了。 等等,GPIO模块在图中跟I2C不是并列的吗?...2.3 在驱动代码调用GPIO子系统 在设备树中指定了GPIO引脚,在驱动代码如何使用? 也就是GPIO子系统的接口函数是什么?...驱动程序要包含头文件, #include // descriptor-based 或 #include // legacy...比如在Linux开发过程,先申请了GPIO,再申请内存;如果内存申请失败,那么在返回之前就需要先释放GPIO资源。

8.9K74

【i.MX6ULL】驱动开发6——Pinctrl子系统GPIO子系统点亮LED

本篇介绍的Pinctrl子系统GPIO子系统的方式,不需要再直接操作寄存器了,因为这两个子系统已经替我们实现了对寄存器的操作,我们只需要操作这两个子系统提供的API函数即可。...1 Pinctrl子系统 Pintrl子系统,顾名思义,就是管理pin引脚的一个系统,比如要点亮LED,即要控制LED对应引脚的高低电平,就要先通过Pintrl子系统将LED对应的引脚复用为GPIO功能...1.1 设备树iomuxc节点 如何使用Pintrl子系统呢?其实它也是要依赖设备树的,先来了解一下设备树里的iomuxc节点,这个节点是IOMUXC外设对应的节点,负责IO功能的复用。...使用GPIO子系统后,就不需要自己操作寄存器,通过调用GPIO子系统提供的API函数即可实现对GPIO的控制。...头文件需要添加一个: #include 设备结构体改为gpio_led: /* gpioled设备结构体 */ struct gpioled_dev{ dev_t

78020

Linuxgpio接口的使用方法示例

前言 Linux内核gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpiogpio使用0~MAX_INT之间的整数标识,...不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用的 使用gpio...使用gpio接口需要包含#include ,在驱动中使用延时函数mdelay,需要包含#include 文件,Documentation/gpio.txt.../* GPIO OUTPUT */ void gpio_set_value(unsigned gpio, int value); int gpio_cansleep(unsigned gpio);...); } else { set_irq_type(gpio_to_irq(sw->gpio), IRQ_TYPE_EDGE_RISING); } } 参考文章 Linuxgpio口使用方法

2.5K53

Linux 时钟子系统

一文搞懂 | Linux 时钟子系统 Clock 时钟就是 SoC 的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。...上面六类本质上都属于clock device,内核把这些 clock HW block 的特性抽取出来,用 struct clk_hw 来表示,具体如下: struct clk_hw { //指向CCF模块对应...每当consumer通过clk_get对CCF的clock device(也就是clk_core)发起访问的时候都需要获取一个句柄,也就是clk struct clk *clk; //clock...如下所示: 然后将返回的 struct clk 指针,保存在一个数组,并调用 of_clk_add_provider 接口,告知 Common Clock Framework。...(即“clock-names”的第几个),调用of_clk_get,取得clock指针。

4K30

Linux IIO 子系统

Linux 内核为了管理这些日益增多的 ADC 类传感器,特地推出了 IIO 子系统,我们学习如何使用 IIO 子系统来编写 ADC 类传感器驱动。...大家一般在搜索 IIO 子系统的时候,会发现大多数讲的都是 ADC,这是因为 IIO 就是为 ADC 类传感器准备的,当然了 DAC 也是可以的。...1、iio_dev 结构体 IIO 子系统使用结构体 iio_dev 来描述一个具体 IIO 设备,此设备结构体定义在include/linux/iio/iio.h 文件 2、iio_dev 申请与释放...iio_info结构体定义在 include/linux/iio/iio.h 5、iio_chan_spec IIO 的核心就是通道,一个传感器可能有多路数据,比如一个 ADC 芯片支持 8 路采集...Linux 内核使用 iio_chan_spec 结构体来描述通道,定义在 include/linux/iio/iio.h 文件

2.2K40

Linux Led 子系统

内核驱动维护者针对每种驱动设计一套【成熟的、标准的、典型的】驱动实现,并把不同厂家的同类硬件驱动相同的部分抽出来实现好,再把不同部分留出接口给具体的驱动工程师来实现,这就叫驱动框架。...2、概述 led 子系统驱动框架: 所有 led 共性: 有和用户通信的设备节点 亮和灭 不同点: 有的 led 可能是接在 gpio 管脚上,不同的 led 有不同的 gpio 来控制 有的 led...可能由其他的芯片来控制(节约 cpu 的 pin,或者为了控制 led 的电流等) 可以设置亮度 可以闪烁 所以 Linux led 子系统把所有 led 的共性给实现了,把不同的地方留给驱动工程师去做...led 子系统核心文件: driver/leds/led-class.c driver/leds/led-core.c driver/leds/led-triggers.c include/linux/...led 子系统是一个简单的 Linux 子系统 ,在目录 /sys/class/leds 下展示该子系统设备,每个设备都有自己的属性: brightness:设置 LED 亮度,范围 0 ~ max_brightness

36330

Linux GPIO 开发指南

2 模块介绍 Pinctrl 框架是 linux 系统为统一各 SoC 厂商 pin 管理,避免各 SoC 厂商各自实现相同 pin 管理子系统而提出的。目的是为了减少 SoC 厂商系统移植工作量。...• 与 gpio 子系统的交互 • 实现 pin 中断 2.2 相关术语介绍 ​ 表 2-1: Pinctrl 模块相关术语介绍 术语 解释说明 SUNXI Allwinner 一系列 SOC 硬件平台...因此管脚控制器子系统需要一个机制用来枚举管脚组且检索一个特定组实际枚举的管脚 Pinconfig 管脚可以被软件配置成多种方式,多数与它们作为输入/输出时的电气特性相关。...index, enum of_gpio_flags *flags) 拿到gpio的配置信息后(保存在flags参数,见4.2.8.小节),在根据需要调用相应的标准接口实现自己的功能 对于linux-...警告 linux5.4 使 用 pinctrl_gpio_set_config 配 置 gpio 属 性, 对 应 使 用pinconf_to_config_pack 生成 config 参数: •

8.1K60

LINUX网络子系统DMA机制的实现

我们先从计算机组成原理的层面介绍DMA,再简单介绍Linux网络子系统的DMA机制是如何的实现的。 一、计算机组成原理的DMA 以往的I/O设备和主存交换信息都要经过CPU的操作。...二、Linux网络子系统DMA机制的实现 1. DMA机制在TCP/IP协议模型的位置 网卡明显是一个数据流量特别大的地方,所以特别需要DMA方式和主存交换数据。...packets <= %u bytes\n", copybreak); } return ret; } module_init(e1000_init_module); 该函数所做的只是向PCI子系统注册...具体做法是,在第230行,通过pci_register_driver()函数将e1000_driver这个驱动程序注册到PCI子系统。.../include/linux/dma-mapping.h /* * Set both the DMA mask and the coherent DMA mask to the same thing

5K62

Linux 电源管理子系统

8)底层的时钟、稳压器、频率/电压表(OPP模块完成)支撑,各驱动子系统都可能用到。...1、CPUFreq 驱动 CPUFreq 子系统位于 drivers/cpufreq 目录下,负责进行运行过程 CPU 频率和电压的动态调整,即 DVFS(Dynamic Voltage Frequency...6、Regulator 驱动 Regulator是Linux系统电源管理的基础设施之一,用于稳压电源的管理,是各种驱动子系统设置电压的标准接口。...Linux的Regulator子系统提供如下API以用于注册/注销一个稳压器: structregulator_dev * regulator_register(conststructregulator_desc...在开机的过程,TI OMAP4芯片会注册针对CPU设备的OPP表(代码位于arch/arm/mach-omap2/) 8、PM QoS Linux内核的PM QoS系统针对内核和应用程序提供了一套接口

2.9K20

Linux 网络子系统

今天分享一篇经典Linux协议栈文章,主要讲解Linux网络子系统,看完相信大家对协议栈又会加深不少,不光可以了解协议栈处理流程,方便定位问题,还可以学习一下怎么去设计一个可扩展的子系统,屏蔽不同层次的差异...目录 Linux网络子系统的分层 Linux网络子系统实现需要: 支持不同的协议族 ( INET, INET6, UNIX, NETLINK…) 支持不同的网络设备 支持统一的BSD socket API...TCP,UDP协议包在网络子系统的实现流程。...创建ksoftirqd内核线程 linux内核通过调用subsys_initcall来初始化各个子系统,在源代码目录里你可以grep出许多对这个函数的调用。...网络子系统的分层 Linux网络子系统实现需要: 支持不同的协议族 ( INET, INET6, UNIX, NETLINK…) 支持不同的网络设备 支持统一的BSD socket API 需要屏蔽协议

3.3K21
领券