从版本4.8开始,Linux内核引入了一个新的基于字符设备的用户空间API,用于管理和控制GPIO(通用输入/输出),在Linux内核4.8之前,在用户空间中管理GPIO的唯一接口是sysfs接口,pio通过/sys/class/gpio中的导出文件进行配置和控制,可以通过该接口执行的基本GPIO操作,比如:
1、Export a GPIO via /sys/class/gpio/export
2、Configure the GPIO direction (input/output) via: /sys/class/gpio/gpioX/direction
3、Read/write GPIO value via /sys/class/gpio/gpioX/value
具体操作如下图:
但这个接口有些缺点,比如缺乏批量GPIO读写、GPIO配置选项有限(如:无法将GPIO配置为低电平、漏极开路、开源等),当两个或多个进程同时访问同一GPIO时,可能会出现竞争条件问题,GPIO的轮询事件不可靠等。从4.8版本开始,Linux内核引入了一个新的基于字符设备chardev的用户空间GPIO接口。
GPIO控制器的接口在用户空间中以字符设备的形式提供