linux gpio c api

我有一个运行3.2内核的powerpc板。 用sysfs访问gpio可以像预期的那样工作

> echo 242 > /sys/class/gpio/export > cat /sys/class/gpio/gpio242/value > 1

有没有API来直接从用户空间访问GPIO引脚? 我必须处理基于文本的sysfs接口吗?

我喜欢这样的东西:gpio_set(int no,int val);

谢谢克劳斯

你如何检查你的内核是否支持硬件上的GPIO?

如何检测哪个引脚连接了传感器?

在Cubieboard平台中运行的Java代码中执行terminal命令获取输出

Linux用户空间GPIO使用sysfs中断

在DeviceTree中命名GPIO

如何从linux内核生成稳定的37kHz GPIO触发器?

PANDaboard GPIO银行从记忆中解脱出来

打开后文件没有准备好写入?

Linux内核模块中的定期任务

为什么在rapberry pi驱动中有`gpio_request`而不是`request_region`?

在最近的内核中,sysfs是你能够操纵GPIO的最低级别。 它可能有点乏味,但它提供了几个优于旧式API的优点:

没有丑陋的ioctl

可以很容易地脚本(认为启动脚本)

对于输入,“价值”文件可以很容易地轮询上升/下降/两个边缘,它会非常反应硬件中断

目前我没有示例代码,但是通过C代码访问它们时,我经常实现一个非常简单的包装器来操作文件描述符,并具有以下接口的变体:

int gpio_open(int number,int out); /* returns handle (fd) */ int gpio_close(int gpio); int gpio_set(int gpio,int up); int gpio_get(int gpio,int *up); int gpio_poll(int gpio,int rising_edge,int timeout);

从那时起,这个实现非常简单。

在vfs树中创建设备之后,可以像典型文件一样打开它们,前提是您已经编写了驱动程序,并在makedev文件中分配了正确的主要和次要编号,以在vfs树上创建gpio引脚。

每个GPIO都被映射为一个寄存器,所以你可以通过/ dev / mem访问它。 看到这里 。 如果要直接访问GPIO,则必须在内核空间级别工作

相关文章

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个...
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:...
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程...