GPIO导出、gpio-hog机制及新旧接口使用相关技术问题咨询
GPIO导出相关问题解答
问题1:gpio-hog操作后的GPIO是否会默认导出到用户空间
不会。gpio-hog是内核原生的GPIO固定配置机制,用于启动阶段直接完成GPIO的电平、输入输出模式初始化,被hog的GPIO会被内核标记为独占占用,默认不会开放给用户空间访问,也不会自动导出到用户空间。
问题2:新版GPIO字符设备接口下导出GPIO到用户空间的操作方式
新版GPIO字符设备接口(对应/dev目录下的/dev/gpiochipX设备节点)取消了旧sysfs接口中显式的预导出步骤:
- 自定义应用可通过对对应gpiochip设备发送
GPIO_V2_GET_LINE_IOCTL等ioctl请求,直接申请指定GPIO line的操作权限,申请成功后即可直接进行读写、中断监听等操作,等效于旧sysfs接口的导出+操作全流程 - 普通场景可直接使用官方配套的libgpiod库提供的命令行工具完成操作,比如
gpioget(读电平)、gpioset(写电平)等,无需提前执行导出命令,工具会自动完成权限申请、占用标记的全流程。
问题3:新版字符设备接口下查看已导出GPIO的方式
新版字符设备接口下,常用两种方式查询已被用户空间占用(等效于旧接口的“已导出”)的GPIO:
- 使用libgpiod提供的
gpioinfo命令,执行后会输出所有GPIO控制器下每一个GPIO line的状态,标记为used且consumer字段为用户态进程名的条目,就是已被用户空间成功申请的GPIO - 挂载debugfs后,查看
/sys/kernel/debug/gpio节点,所有标注了[user]标识的GPIO就是已被用户空间通过字符设备接口占用的GPIO,该操作需要root权限。
内容的提问来源于stack exchange,提问作者Rizwan
相关产品推荐
相关产品推荐

