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

相关推荐

  • x99服务器主板现在多少钱一斤,值得买吗

    x99服务器主板并不按斤计价,二手市场行情通常在每斤30元至80元区间,但实际成交价取决于型号、成色、是否点亮等因素,整板评估远高于废料回收价,x99服务器主板为什么会出现“按斤卖”的说法“多少钱一斤”这个问法,大概率是从废品回收场景流传出来的,不少回收商收电子垃圾时习惯按重量估算,x99主板属于洋垃圾和矿渣中……

    2026年8月13日
    1900
  • Win2012服务器可以创建多少个账户,怎么设置?

    Windows Server 2012对账户数量没有硬性上限,但实际能建多少取决于账户类型——本地账户受限于SAM数据库,建议控制在5000以内;域账户依赖Active Directory,在合理硬件下可支撑数百万个,了解Win2012的账户体系本地账户与SAM数据库每台Win2012独立服务器都有本地安全账户……

    2026年8月17日
    600
  • AI系统开发费用账单怎么算?2026年最新报价明细

    AI系统开发费用并非固定标价,而是由模型复杂度、数据量级、算力需求及定制化程度共同决定的动态区间,通常基础应用从几万元起步,而企业级深度定制项目往往需要数十万至数百万不等的预算投入,很多企业在初次接触AI项目时,最直观的感受是“价格迷雾重重”,同样的聊天机器人,有的报价几千,有的报价几十万,这中间的差异究竟在哪……

    2026年6月10日
    4300
  • Apache创建虚拟主机怎么做,Apache虚拟主机配置教程

    Apache创建虚拟主机的核心在于正确修改主配置文件开启虚拟主机功能,并构建独立的配置段指定文档根目录与域名,随后重启服务使配置生效,这一过程实现了在同一台服务器上运行多个网站,是提升服务器资源利用率、降低运维成本的关键技术手段,Apache配置的精髓在于逻辑的严密性,必须确保路径正确、权限开放且语法无误,才能……

    2026年3月27日
    12300
  • a类b类c类网络地址范围怎么区分,网络地址分类详解

    IP地址的分类管理是网络通信的基石,A类、B类、C类地址范围的划分直接决定了网络规模与主机数量的分配逻辑,对于涉及网络基础设施备案、增值电信业务经营许可证申请等证件类审核流程而言,准确理解并规范使用IP地址范围,是确保合规性审查通过的核心前提,A类地址适用于大型网络,B类地址服务于中型网络,C类地址则主导小型网……

    2026年3月27日
    11900
  • 安装网站时出现dir怎么办,直播播放时出现卡顿怎么解决

    网站安装过程中的目录权限配置错误与直播播放时的卡顿现象,看似是两个独立的技术问题,实则存在深层的因果关联,核心结论在于:安装网站时出现的“dir_”类错误提示,往往意味着系统底层目录权限或路径配置存在缺陷,这种基础环境的不稳固,直接导致后续直播模块在读写数据流时受阻,从而引发播放卡顿, 解决这一问题必须从服务器……

    2026年3月31日
    9000
  • 如何封装连接MySQL数据库?,上传驱动步骤有哪些?

    封装MySQL数据库连接并上传驱动,是Java Web开发中的基础操作,核心在于选用兼容的Connector/J版本并通过类路径加载驱动,推荐使用Maven自动管理依赖或手动上传jar包至项目lib目录,上传mysql数据库连接驱动前需要准备什么在实际动手前,明确几个前提能避免后续反复踩坑,驱动版本必须与MyS……

    2026年8月2日
    400
  • 云服务器一年成本到底多少钱?,哪家云服务器最便宜?

    云服务器一年的成本从几百元到数万元不等,具体取决于配置、带宽、机房等级和服务商,按需匹配才是关键,影响云服务器成本的核心因素配置参数:CPU、内存与硬盘的取舍云服务器的基础配置直接决定计算能力,CPU核心数越多,内存越大,处理并发请求的能力越强,价格自然上浮,硬盘方面,普通HDD价格最低,SSD次之,NVMe固……

    2026年8月22日
    200
  • 阿里云轻量服务器1核2G新用户仅需96元是真的吗?阿里云开发者成长计划补贴详情

    阿里云开发者成长计划通过全面补贴策略,将轻量应用服务器1核2G配置的新用户首年价格降至96元,这是目前获取高性价比云资源的最优解,在云计算市场日益成熟的今天,开发者对于基础设施的成本敏感度达到了前所未有的高度,过去,搭建一个个人博客或小型测试环境往往需要数百元的初期投入,而现在,随着阿里云推出开发者成长计划,这……

    2026年6月23日
    2500
  • 32g服务器内存卡现在多少钱一张,性价比高吗?

    32GB服务器内存卡的价格根据类型、频率、品牌和渠道的不同,目前主流DDR4 32GB内存条价格在500元至1000元区间,DDR5 32GB内存条则在1000元至2000元范围,选购时需结合服务器兼容性和预算综合决策,32g服务器内存卡价格受哪些因素影响DDR4与DDR5的代际差异DDR4和DDR5是当前服务……

    2026年7月25日
    1600

发表回复

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