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://idctop.com/linux%e4%b8%8b%e5%a6%82%e4%bd%95%e6%93%8d%e4%bd%9cgpio%ef%bc%8clinux-gpio%e9%a9%b1%e5%8a%a8%e6%80%8e%e4%b9%88%e7%bc%96%e5%86%99%ef%bc%9f/

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

相关推荐

  • 一台GPU服务器可分析多少视频,多少钱?

    一台标配8卡加速卡的GPU服务器(GPU服务器),在实际生产环境中通常可同时分析200至500路1080p实时视频流,或批量处理约40部90分钟长片的AI识别任务——但具体数字由显卡型号、视频规格、算法复杂度、部署架构共同决定,不存在适用所有场景的固定答案,先算明白这笔算力账:哪些变量在决定视频分析上限把“一台……

    2026年8月24日
    1900
  • 万网服务器一台到底多少钱,租用一年怎么收费

    万网服务器一台的价格没有固定数字,入门级云服务器年付通常在几百元区间,企业级独立服务器年付可达数千至上万元,实际支出取决于配置、计费方式和购买时长,万网品牌已并入阿里云体系,现在所称的万网服务器主要指阿里云旗下的云服务器产品线,了解价格前,先要弄清几个决定成本的关键变量,万网服务器价格由哪些因素决定计费模式包年……

    2026年9月15日
    300
  • 云服务器BCC到底能放多少个网站,云服务器建站数量怎么选?

    云服务器BCC能放多少网站,没有固定“站点数”答案;对多数中小展示站,一台中等配置BCC通常可承载数十个以内,带交易、论坛、API或高并发下载的站点往往只能放几个到十几个,最终要看CPU、内存、带宽、磁盘IO和单站资源画像,很多人买BCC时习惯问“2核4G能放几个站”,这个问题像问“一套90平方米的房子能住几个……

    相关资讯 2026年10月23日
    200
  • 卖一台服务器能赚多少钱,服务器批发利润空间如何

    卖一台服务器赚多少钱?核心答案:一台实体服务器的毛利通常在3000元至3万元区间,但利润大头往往不在硬件,而在于后续的托管、带宽和运维服务——单台服务器三年的综合利润能做到硬件毛利的数倍,如果你正在考虑进入服务器销售这个行当,或者想弄清楚IDC服务商到底靠什么赚钱,这篇文章按照2026年百度搜索的偏好习惯,把利……

    2026年8月17日
    1400
  • 一台服务器到底要多少钱?哪个平台买最划算?

    服务器价格没有固定答案,一台满足中小网站或企业应用的服务器,年付成本从几百元到数万元不等,具体取决于配置、带宽、机房线路和服务商资质,服务器价格为什么差距这么大?服务器不是标准化的数码产品,它的定价由硬件配置、网络资源、运维服务和使用周期四个维度共同决定,很多用户第一次询价时只问“多少钱一个月”,却忽略了核心参……

    2026年10月19日
    200
  • WIN10 DNS服务器怎么设置,默认地址及修改方法是什么?

    Windows 10系统下,首选DNS服务器建议设置为114.114.114.114,备用DNS设置为223.5.5.5,这两个地址分别由国内知名服务商提供,解析速度快且稳定,能有效解决网页打不开、视频加载慢等常见网络问题,为什么你的Win10需要手动设置DNS绝大多数用户上网时都在使用宽带运营商自动分配的DN……

    相关资讯 2026年10月23日
    100
  • Linux死进程怎么强制关闭,如何查看并杀死卡死的进程?

    Linux 死进程详解与处理指南在 Linux 系统中,用户提到的“死进程”通常指两种完全不同的状态:僵尸进程 (Zombie Process) 和 不可中断睡眠进程 (Uninterruptible Sleep Process),处理这两者的逻辑截然不同,僵尸进程 (Zombie Process)僵尸进程是指……

    2026年7月14日
    1500
  • 服务器一般用mbps是多少网速

    服务器一般用mbps是多少网速?结论先行:绝大多数中小型网站的服务器带宽在5Mbps到50Mbps之间,日常业务够用;视频、下载站或高并发应用才需要100Mbps起步,这个数字不是拍脑袋定的,而是根据实际流量模型算出来的,下文从单位换算、业务场景、选购建议三个维度拆解,帮你一次性搞懂带宽和网速的关系,先搞懂Mb……

    2026年8月27日
    3600
  • 32g内存服务器到底能承载多少用户?,服务器配置怎么选?

    32G内存服务器能承载多少用户?直接回答:在标准Web应用架构下,32G内存服务器可稳定支撑5000至20000个日活跃用户,但具体数值取决于业务类型、代码效率及架构设计,并非单一由内存决定,决定承载量的核心因素:不只是内存大小许多用户选购服务器时陷入”内存越大承载越多”的思维定式,但实际运维中,32G内存只是……

    2026年8月21日
    400
  • 四核云服务器多少钱,哪个品牌性价比更高更划算?

    四核云服务器多少钱?没有一口价,常见区间是月付几十元到数百元,独享型、高带宽、高防和带合规资质的四核云服务器可能到上千元每月;真正决定账单的是配置、带宽、磁盘、防护、续费价和服务商资质,四核云服务器多少钱:先看懂价格逻辑四核不等于同一档性能“四核”只说明CPU核心数,不代表整台云服务器性能一致,同样是四核,价格……

    2026年10月12日
    100

发表回复

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