Linux下如何操作GPIO,Linux GPIO驱动怎么编写?

Linux 下的 GPIO 控制指南

在 Linux 嵌入式开发中,GPIO (General Purpose Input/Output) 是最基础的外设,用于控制 LED、读取按键状态、驱动继电器等,在 Linux 系统中,操作 GPIO 主要有两种主流方式:传统的 Sysfs 接口 和现代推荐的 libgpiod 接口


Sysfs 接口(传统方式)

Sysfs 是一种基于文件系统的交互方式,通过读写 /sys/class/gpio 目录下的文件来控制引脚,虽然这种方式在较新的内核中已被标记为 deprecated(弃用),但在许多旧版嵌入式系统中仍然非常常见。

如何在Linux操作系统上调试GPIO?
加载中
如何在Linux操作系统上调试GPIO?

操作步骤:

  • 导出引脚
    通过向 export 文件写入引脚编号,使该引脚在 sysfs 中可见。
    echo 18 > /sys/class/gpio/export
  • 设置方向
    在导出的引脚目录下,通过 direction 文件设置输入或输出。

    • 设置为输出:echo out > /sys/class/gpio/gpio18/direction
    • 设置为输入:echo in > /sys/class/gpio/gpio18/direction
  • 写入/读取电平
    • 输出高电平:echo 1 > /sys/class/gpio/gpio18/value

      Linux下如何操作GPIO,Linux GPIO驱动怎么编写?

    • 输出低电平:echo 0 > /sys/class/gpio/gpio18/value
    • 读取电平:cat /sys/class/gpio/gpio18/value
  • 取消导出
    操作完成后,释放引脚。
    echo 18 > /sys/class/gpio/unexport

缺点:

  • 性能较低:每次操作都需要进行文件系统调用。
  • 非原子性:在多进程环境下,容易出现竞争条件。
  • 资源占用:由于是基于文件的,管理起来不够灵活。

libgpiod 接口(现代推荐方式)

libgpiod 是目前 Linux 内核推荐的标准方式,它通过字符设备(/dev/gpiochipX)直接与内核通信,效率更高,且支持更复杂的控制逻辑。

核心工具命令:

使用 libgpiod,你不再需要频繁地 echo 文件,而是使用专门的命令行工具:

  • gpiodetect:列出系统中所有的 GPIO 控制器(chip)。
  • gpioinfo:查看特定 GPIO 控制器上所有引脚的状态和配置。
  • gpioset:设置 GPIO 引脚的电平。

      Linux下如何操作GPIO,Linux GPIO驱动怎么编写?

    • 示例:gpioset gpiochip4 12=1 (将 chip4 的第 12 号引脚设为高电平)。
  • gpioget:读取 GPIO 引脚的电平。
    • 示例:gpioget gpiochip4 12
  • gpiomon:监控 GPIO 引脚的状态变化(中断触发)。
    • 示例:gpiomon gpiochip4 12

优点:

  • 高效性:直接通过 ioctl 系统调用,减少了文件系统开销。
  • 原子性:支持同时对多个引脚进行原子操作。
  • 事件驱动:通过 gpiomon 可以非常方便地处理中断事件。

两种方式的对比总结

特性 Sysfs 接口 libgpiod 接口
内核状态 已弃用 (Deprecated) 当前标准 (Recommended)
操作对象

Linux下如何操作GPIO,Linux GPIO驱动怎么编写?

/sys/class/gpio/gpioN

/dev/gpiochipX
性能 较低 (文件系统开销) 高 (直接系统调用)
中断处理 较复杂 (需通过 epoll 监听文件) 简单 (原生支持 gpiomon)
安全性 容易产生竞态条件 支持原子操作,更安全

开发建议

  • 如果你在维护旧的嵌入式设备,或者在学习基础原理,可以了解 Sysfs
  • 如果你在进行新项目的开发,或者追求高性能和稳定性,请务必学习并使用 libgpiod
  • 在编写 C/C++ 程序时,建议直接调用 libgpiod 提供的 API,而不是通过 system("echo ...") 来调用命令行,以获得最佳性能。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/489462.html

(0)
为什么律所在AI搜索中搜不到,AI搜索优化具体怎么操作?
上一篇 2026年7月13日 00:55
IDC与CDN的区别是什么?CDN和IDC的具体区别及应用场景该如何选择?
下一篇 2026年7月13日 00:56

相关推荐

  • 腾讯云SA2服务器2C4G5M首年782元值得买吗,腾讯云新企业用户专享优惠

    腾讯云SA2机型2C4G5M配置首年仅需782元,这是目前针对新企业用户最具性价比的入门级云服务器方案,适合轻量级网站、开发测试及小型应用部署,在云计算市场日益成熟的今天,企业选择服务器不再仅仅是为了拥有一台机器,而是为了获得稳定、安全且具备扩展性的计算资源,对于初创团队、个人开发者或中小型企业而言,如何在有限……

    2026年6月20日
    3400
  • 国外CDN试用怎么申请?免费CDN加速器推荐

    国外CDN试用的核心价值在于通过真实业务场景的测试,验证节点覆盖、回源性能及安全防护能力,从而筛选出最适合自身业务架构的加速服务商,在众多国际CDN服务商中做出选择,不能仅依赖官网宣传的数据,必须通过严格的试用流程,对网络延迟、带宽成本、API集成度以及技术支持响应速度进行全方位评估,这是确保海外业务稳定拓展的……

    2026年3月5日
    10200
  • app与微网站的区别是什么,企业开发选哪个好

    在移动互联网深度渗透企业运营的当下,企业在数字化转型过程中面临着一个关键抉择:是开发独立的APP,还是构建依托微信生态的微网站?这一决策直接关系到企业的获客成本、运营效率及品牌建设,核心结论在于:APP与微网站并非简单的技术载体差异,而是代表了两种截然不同的用户连接逻辑与运营模式,APP是企业构建私域流量、实现……

    2026年3月18日
    10000
  • 洛杉矶C3机房500G防御云服务器多少钱?美国高防服务器租用推荐

    百纵科技洛杉矶C3机房推出的500Gbps防御云服务器,月付低至38元且续费同价,是应对DDoS攻击的高性价比选择,在网络安全威胁日益复杂的当下,服务器稳定性直接决定了业务的生死,对于许多中小型企业、游戏开发者以及跨境电商卖家而言,寻找一款既具备强大防御能力,又不会让预算超支的云服务器,是一个长期痛点,百纵科技……

    2026年7月7日
    14800
  • DNF公益服服务器多少钱一个月,哪里便宜

    DNF公益服服务器一个月多少钱?答案很直接:从几十元到上千元不等,具体取决于配置、带宽、防御和机房线路,但无论预算多少,选对服务商才是关键,影响DNF公益服服务器价格的核心因素硬件配置CPU核心数、内存大小和硬盘类型直接决定购买成本,入门级双核4G内存的云服务器,月费在50-100元区间;四核8G内存起步,月费……

    2026年7月27日
    600
  • 服务器双核4G机器QPS究竟有多少,能抗住多少并发?

    双核4G服务器的QPS通常在几百到数千之间,具体数值取决于应用场景、代码优化程度以及数据库效率,没有固定标准,影响QPS的核心因素QPS不是单纯的硬件指标,它由多个环节共同决定,双核4G配置属于入门级,在实际生产中,性能表现主要受以下因素影响,理解这些因素才能准确评估自己的业务需求,应用类型与资源消耗- **静……

    2026年8月24日
    100
  • Name.com新用户注册享85折及5美元优惠券吗?域名注册优惠

    Name.com新用户注册即可领取5美元优惠券,首次购买域名享85折优惠,.me域名更是低至5折,同时提供.com和.net域名的续费福利,这是目前性价比极高的域名注册方案,在构建个人品牌或企业官网时,域名不仅是网络地址,更是数字资产的核心,对于初次接触域名注册的用户而言,如何在众多服务商中选择既稳定又经济的产……

    2026年7月3日
    10900
  • 优刻得GlobalSSH新版本如何修改端口加速?非UCloud IP加速方案

    优刻得GlobalSSH新版本已全面支持修改端口以加速非UCloud IP连接,这一功能通过动态路由优化和协议调整,显著降低了跨国及跨网段访问的延迟,是解决海外服务器连接不稳问题的有效方案,在云计算日益普及的今天,服务器连接的稳定性直接决定了业务运行的效率,对于许多使用非UCloud节点的用户而言,跨国访问或跨……

    2026年6月21日
    3000
  • apache分布式部署怎么做,apache分布式部署步骤详解

    Apache分布式部署的核心价值在于通过横向扩展实现高可用性与负载均衡,其成功实施的关键在于拓扑结构的合理规划、配置文件的标准化管理以及故障转移机制的精细化设置,企业级应用通过apache分布式部署,能够有效解决单点故障问题,显著提升系统的并发处理能力与业务连续性保障水平,是构建现代化高并发Web服务架构的必经……

    2026年3月16日
    13800
  • 简米云16核32g服务器究竟多少钱?,性能怎么样?

    阿里云16核32G服务器的价格因实例规格、地域和计费模式不同,包年包月普遍在每月1000-2000元区间,按量付费则灵活但成本更高,实际支出还需叠加带宽与存储费用,价格构成与核心影响因素阿里云16核32G配置并非一个固定套餐,价格由以下变量共同决定:实例规格族:不同代系和类型(如通用型g7、计算型c7、内存型r……

    2026年8月6日
    300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注