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

在运行时获取Linux中的gpio pinctrl值

在Linux中,GPIO(General Purpose Input/Output)是一种通用的输入输出接口,用于与外部设备进行数字信号的交互。pinctrl(Pin Control)是一种用于管理和配置GPIO引脚的子系统。

在运行时获取Linux中的GPIO pinctrl值,可以通过以下步骤实现:

  1. 确定GPIO引脚编号:首先,需要确定要获取的GPIO引脚的编号。不同的硬件平台和芯片可能有不同的GPIO编号方案,可以查阅相关文档或者开发板的资料来获取正确的GPIO编号。
  2. 导出GPIO引脚:在Linux中,GPIO引脚默认是不可用的,需要通过导出操作将其暴露给用户空间。可以使用sysfs文件系统中的GPIO导出接口来实现,例如:
  3. 导出GPIO引脚:在Linux中,GPIO引脚默认是不可用的,需要通过导出操作将其暴露给用户空间。可以使用sysfs文件系统中的GPIO导出接口来实现,例如:
  4. 其中,<gpio_number>是要导出的GPIO引脚编号。
  5. 配置GPIO引脚模式:GPIO引脚可以有不同的工作模式,例如输入模式、输出模式、中断模式等。可以通过pinctrl子系统来配置GPIO引脚的模式。具体的配置方法可能因硬件平台而异,可以参考相关文档或者开发板的资料。
  6. 读取GPIO pinctrl值:一旦GPIO引脚被正确配置,就可以通过读取相应的GPIO寄存器来获取其值。具体的读取方法可能因硬件平台而异,可以参考相关文档或者开发板的资料。

需要注意的是,不同的硬件平台和芯片可能有不同的GPIO驱动和接口,因此具体的实现细节可能会有所不同。在实际应用中,可以根据具体的硬件平台和需求来选择适合的方法和工具。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,无法给出相关链接。但腾讯云提供了丰富的云计算服务和解决方案,可以通过访问腾讯云官方网站来了解更多信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

高通GPIO驱动(DTS方式)

gpio调试方式有很多,linux3.0以上ARM架构处理器基本上都采用了DTS方式,在linux3.0可以通过获取sysfs方式来获取gpio状态; sysfs文件系统建立可以参照下面的博客...//设置gpio寄存器 二、在kernel代码操作gpio  在代码中有两种方式操作gpio,一种是一次申请单个gpio,通过设备树,成功后操纵该gpio,另一种是使用pinctrl子系统,通过设备树设置...比上面的方式多了许多配置GPIO方式,例如配置电流(可以用于睡眠唤醒功能),管理pin脚复用,接口规格等功能;蜗窝科技大牛们就有几篇写很好: linux内核GPIO系统之(1):软件框架...linux内核GPIO系统之(2):pin control subsystem Linux内核GPIO系统之(3):pin controller driver代码分析 linux内核GPIO...系统之(4):pinctrl驱动理解和总结 linux内核GPIO系统之(5):gpio subsysem和pinctrl subsystem之间耦合 DTS代码: 1 device_node

4.6K40

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

pinctrl 子系统就是为了解决这个问题而引入pinctrl 子系统主要工作内容如下: ①、获取设备树 pin 信息。...1)of_find_compatible_node 函数在设备树根据 device_type 和 compatible 这两个属性查找指定节点,此处是为了获取在设备树设置 GPIO 节点句柄...如果其他地方请求了这个 gpio,还没有释放,那么我们会请求不到。 4)请求到这个 gpio 以后,我们就可以对它进行操作,比如获取到它,设置它。 5)使用完以后,释放这个 gpio。...3、pinctrl_select_state 在 Linux ,加 devm_ 开头函数,代表这个函数支持资源管理。...1)devm_pinctrl_get:用于获取设备树自己用 pinctrl 建立节点句柄; 2) pinctrl_lookup_state:用于选择其中一个 pinctrl 状态,同一个 pinctrl

1.8K10

linux利用read命令获取变量

前言 本文主要给大家介绍了关于linux利用read命令获取变量中值相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍吧。...-p提示语句 -n 字符个数 -s 屏蔽回显 -t 等待时间 -d 输入分界 read来获取变量,是通过屏幕中等待用户输入,如果是用read命令从已知变量来获取值要如何操作呢?...比如说: input_ips=’127.127.127.10-127.127.127.14’,通过read命令分别读取到start_ip, end_ip两个变量?...方法一: root@linux~# input_ips='127.127.127.10-127.127.127.14' root@linux~# read start_ip end_ip < <(echo...总结 以上就是这篇文章全部内容了,希望本文内容对大家学习或者工作能带来一定帮助,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn支持。

4.3K30

一文搞懂 | Linux pinctrlgpio子系统

pinctrl_ops抽象出三个回调函数,用来获取pin groups相关信息,如下: struct pinctrl_ops { //获取系统pin groups个数,后续操作,将以相应索引为单位...给定一个selector(index),获取指定pin groupname get_group_pins 给定一个selector(index),获取该pin grouppin信息(该pin group...); void (*dbg_show)(struct seq_file *s, struct gpio_chip *chip); //GPIO控制器引脚号码基 int...要操作一个引脚,首先要 get 引脚,然后设置方向,读、写。 建议使用“devm_”版本相关函数。...比如在 Linux 开发过程,先申请了GPIO,再申请内存;如果内存申请失败,那么在返回之前就需要先释放GPIO资源。

98720

【深度】韦东山:GPIOPinctrl子系统使用

如果驱动开发都是这样去查找寄存器,那我们就变成“寄存器工程师”了,即使是做单片机都不执着于裸写寄存器了。 Linux下针对引脚有2个重要子系统:GPIOPinctrl。...驱动程序要包含头文件, #include // descriptor-based 或 #include // legacy...比如在Linux开发过程,先申请了GPIO,再申请内存;如果内存申请失败,那么在返回之前就需要先释放GPIO资源。...对应,驱动代码要注册一个platform_driver,在probe函数:获得引脚、注册file_operations。 在file_operations:设置方向、读/写。 ?...在probe函数获得GPIO 核心代码是第87行,它从该设备(对应设备树设备节点)获取名为“led”引脚。在设备树,必定有一属性名为“led-gpios”或“led-gpio”。

8.7K74

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

使用设备树方式,是将与LED有关寄存器信息,写到了设备树文件,这样,当设备信息修改了,还可以通过设备树接口函数,来获取设备信息,提高了驱动代码复用能力。...还是需要设备树告诉驱动,在设备树SD卡节点下添加一个属性来描述SD卡 CD 引脚就行了: 属cd-gpios描述了SD卡CD引脚使用哪个IO,属性一共有三个: &gpio1 表示CD引脚所使用...(unsigned gpio, int value) 2.2.3 gpio_get_value/set_value gpio_get_value 此函数用于获取某个GPIO(0 或 1) #define...gpio_get_value __gpio_get_value /** * gpio: 要获取gpio标号 * return: 非负值-得到gpio 负值-获取失败 */ int __gpio_get_value...ret; /* 获取设备树属性数据 */ /* 1、获取设备节点:gpioled */ gpioled.nd = of_find_node_by_path("/gpioled

76120

全志A64 设备树里gpio应用开发

gpio控制器是由厂商负责驱动好,在设备树里关于gpio控制器描述: pio: pinctrl@01c20800 { compatible = "allwinner,sun50i-pinctrl...//np为设备或设备子节点对象, propname为指定属性名字, index表示获取属性里第几个 // 其中flags一定得注意,按文档里说明应就是一个int类型,但根本就不能为int参数...gpio, int value); //作输出功能,并根据value输出高低电平 int gpio_get_value(unsigned gpio); //获取指定IO口电平 void gpio_set_value...驱动编写蜂鸣器测试代码 如下: #include #include #include <linux/platform_device.h...驱动编写两个LED驱动测试代码如下: #include #include #include <linux/platform_device.h

3.9K30

Linux 驱动开发 gpio子系统 快速入门

pinctrl 子系统和 gpio 子系统之间关系。...点击查看大图 gpio 作用: 作为输入功能时,支持读引脚; 作为输出功能时,支持输出高低电平; 部分 gpio 还负责接收中断; gpio 使用依赖于 pinctrl: ?...里可以通过 "led" 这个字符串,配合偏移获取这一组 gpio任一 gpio。...至于如何标志是硬件上哪一个引脚,是由平台相关 gpio controller driver 设备树节点里 #gpio-cells 来决定,上述例子需要 2个参数才能确定硬件引脚,所以 #gpio-cells...() 返回是硬件上电平; gpiod_set_value() 设置是逻辑而非电平,1 表示使能,0 表示不使能,由设备树里 gpio mappings 里 GPIO_ACTIVE_XXX

4.9K33

10_编程_GPIO使用Pinctrl

我们要做什么 假设使用这个虚拟GPIO ControllerpinA来控制LED: 如果不想在使用GPIO引脚时,在设备树设置Pinctrl信息, 如果想让GPIOPinctrl之间建立联系,...我们需要做这些事情: 1.1 表明GPIOPinctrl联系 在GPIO设备树中使用gpio-ranges来描述它们之间联系: 1.2 解析这些联系 在GPIO驱动程序,解析跟Pinctrl...之间联系:处理gpio-ranges: 1.3 编程 在GPIO驱动程序,提供gpio_chip->request 在Pinctrl驱动程序,提供pmxops->gpio_request_enable...再次开后门 在STM32MP157内核Pinctrl驱动并没有提供pmxops->gpio_request_enable或pmxops->request, 为什么也可一直接使用GPIO功能?...原因: * GPIO控制器设备树,没有`gpio-ranges` * Pinctrl驱动并没有提供`pmxops->gpio_request_enable`或`pmxops->request`

61940

pinctrl 子系统深入分析

在此框架,(1)、(2)、(3)由半导体厂商搞定,半导体厂商会利用 Linux 提供框架,根据自己芯片,客制化代码。普通驱动工程师就是调用 API 即可,就算是写驱动了。...很多东西操作系统都规定好了,留给我们重新设计很少,我们不做设计题,我们做填空题。 在 Linux 内核源码pinctrl 子系统代码大都在 kernel/drivers/pinctrl/......3、gpio 相关结构体,我们说过 pinctrl 子系统和 gpio 子系统是耦合,我们从结构体就可以看得出来,它包含了最重要结构体 gpio_chip。...pinctrl_register probe 函数后面的调用,最重要是调用 pinctrl_register 函数,此函数用于向 Linux 内核注册一个 PIN 控制器,,此函数原型如下: struct...但是这个用户并不是我们这些使用芯片程序员,而是半导体厂商,半导体厂商发布 Linux 内核源码已经把这些工作做完了。 下面是参考文章,写比博主更深入,尤其第一个链接,大家可以查看。

81620

没串口怎么操作核心板Linux?ADB(以点灯为例)

介绍 我们在平时开发,很有可能遇见有的核心板没有串口,但我们却想操作板子搭建Linux,那么这时候应该怎么办呢?可以使用ADB,下面我们来具体介绍一下ADB。...它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间交互。常常用于手机端Android调试,但也可以使用在Linux开发板调试。...adb 工作原理 当您启动某个 adb 客户端时,该客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它会启动服务器进程。...然后,服务器会与所有正在运设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)奇数号端口查找模拟器。...输入adb shell进入到板子linux系统命令行 点灯 查看IO复用情况表 cat /sys/kernel/debug/pinctrl/2000000.pinctrl/pinmux-pins

1.7K40

Linuxgpio接口使用方法示例

前言 Linux内核gpio是最简单,最常用资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应接口使用gpiogpio使用0~MAX_INT之间整数标识,...不能使用负数,gpio与硬件体系密切相关,不过linux有一个框架处理gpio,能够使用统一接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用 使用gpio..., int value); 获取输入引脚电平: /* GPIO INPUT: return zero or nonzero */ int gpio_get_value(unsigned gpio);...* GPIO OUTPUT, might sleep */ void gpio_set_value_cansleep(unsigned gpio, int value); 获取一个GPIO并声明标签:...); } else { set_irq_type(gpio_to_irq(sw->gpio), IRQ_TYPE_EDGE_RISING); } } 参考文章 Linuxgpio口使用方法

2.5K53
领券