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

相关推荐

  • API网关云市场怎么注册?API网关云市场注册流程详解

    在数字化转型的浪潮中,企业实现数据互联互通的核心在于高效、安全的接口管理,API网关注册不仅是技术架构中的基础环节,更是企业接入API网关云市场、实现商业价值变现的关键一步, 通过标准化的注册流程,企业能够将内部服务能力封装为标准API,快速发布至云市场,实现从“成本中心”向“利润中心”的转变,这一过程不仅大幅……

    2026年3月27日
    8500
  • 广东电信宽带DNS服务器地址是多少,怎么设置?

    广东电信宽带DNS服务器地址首选是96.128.86和96.128.166,这是电信官方为广东全省用户提供的默认解析地址,绝大多数情况下直接自动获取即可,如果你遇到网页打不开、游戏延迟高或者视频加载慢的情况,手动修改DNS往往能解决大半问题,下面我直接把广东电信各地市的DNS清单、设置步骤和进阶优化方案一次说清……

    2026年8月8日
    1200
  • tbc合服后服务器总数到底是多少,2026年有多少个

    TBC怀旧服合服后,国服服务器数量最终稳定在约30个,具体包括PVP、PVE和RP服务器,分布在各大区,这一数据基于官方合服公告及后续服务器列表统计得出,合服背景与过程TBC怀旧服上线初期,国服一口气开设了超过80个服务器,覆盖一区、五区、十区等大区,试图满足玩家涌入需求,但开服热度消退后,部分服务器人口急剧下……

    2026年8月13日
    200
  • RackNerd美国VPS值得买吗?洛杉矶VPS推荐

    RackNerd新年促销的1核1G VPS低至$14/年,支持洛杉矶、圣何塞等多地机房,适合预算有限的个人建站或轻量级测试需求,在云服务器市场,价格往往是新手入门的第一道门槛,RackNerd作为老牌IDC,凭借极高的性价比常年占据“白菜价VPS”讨论区,2026年新年之际,其续费优惠再次引发关注,对于想要搭建……

    2026年6月23日
    2010
  • axb隐私号码保护api有什么功能?axb隐私号码api怎么接入

    AXB隐私号码保护API的核心价值在于通过中间号技术实现通话双方的隐私隔离,在保障业务正常沟通的前提下彻底阻断真实号码泄露,是企业构建信任体系与合规运营的关键基础设施,该API不仅能够有效规避用户信息泄露风险,更能通过全流程的通话数据留存,为企业优化服务流程、提升运营效率提供数据支撑,是当下共享经济、物流配送……

    2026年4月8日
    9300
  • 服务器独享2M带宽到底够多少人用,够用吗?

    服务器独享2M带宽,在网站优化得当且内容标准的情况下,通常能支撑20到50人同时在线访问,但实际并发量取决于页面大小、用户行为以及服务器响应速度,2M带宽的真实承载能力2M带宽指的是2Mbps,换算成每秒最大传输字节是256KB,网络协议开销和物理损耗会让实际可用带宽打折扣,多数情况下稳定在200KB/s左右……

    2026年8月12日
    400
  • Ansible怎么安装?centos7下ansible安装教程

    Ansible安装的核心在于利用Python包管理器pip或系统包管理器yum/apt快速部署,其最大优势是无Agent架构,通过SSH协议实现跨平台自动化运维,适合中小规模集群及云原生环境,在IT运维领域,自动化不再是大型互联网公司的专属特权,而是所有技术团队的标配,Ansible作为其中的佼佼者,凭借其简洁……

    2026年6月10日
    3900
  • 一台服务器最多能配多少个IP地址?,如何配置多个IP地址?

    一台服务器可以配置的IP地址数量在理论上没有上限,但实际部署中受操作系统、子网划分、硬件接口和云服务商策略制约,通常从几十个到上千个不等,影响IP配置数量的核心因素操作系统与网络栈限制Linux和Windows Server对IP地址数量没有硬性上限,但每个网络接口的别名数量受内核参数和驱动能力影响,以Linu……

    2026年8月1日
    300
  • 安装智能家居系统多少钱?Linux操作系统安装费用是多少

    安装智能家居系统的费用通常在1万元至10万元人民币之间,而安装Linux操作系统则完全免费,两者在技术门槛、实施成本与后续维护上存在巨大差异,智能家居系统的价格取决于设备数量、品牌生态及房屋面积,属于硬件与集成服务密集型投入;Linux系统的安装则属于软件技术型投入,核心成本在于学习时间与技术积累, 对于普通家……

    2026年3月23日
    9200
  • Android软著申请提交构建申请有哪些注意事项?软件著作权申请流程及所需材料

    软著申请被补正后,如何处理?收到补正通知后,需在规定时间内(通常30个工作日)登录系统,根据补正意见修改材料并重新上传,常见补正原因包括:页眉页脚格式错误、截图不清晰、代码行数不足等,修改时需确保所有材料一致,避免再次出错,Android软著申请周期是多久?官方标准审查周期为30-45个工作日,若遇高峰期或材料……

    2026年6月11日
    2900

发表回复

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