嵌入式linux--sysfs文件系统以及操作GPIO

在这里插入图片描述

sysfs文件系统

在Linux系统中,/sys路径是一个特殊的虚拟文件系统(Virtual File System),用于提供对内核和设备的运行时信息的访问。它是sysfs文件系统的挂载点,提供了一种以文件和目录形式表示系统设备、总线、驱动程序和其他内核对象的方式。

/sys路径的主要作用如下:

  1. 设备和总线信息:/sys路径下的子目录包含了与系统设备和总线相关的信息。例如,你可以在/sys/class目录下找到各种设备的类别目录,如GPIO、I2C、SPI等。通过浏览这些目录和文件,你可以获取设备的属性、状态和配置信息。

  2. 内核对象:/sys路径还提供了对内核对象的访问。例如,你可以在/sys/kernel目录下找到与内核相关的信息,如内核版本、参数和模块信息等。这些信息可以用于系统的监控和诊断。

  3. 调试接口:/sys路径提供了一些调试接口,允许你对内核和设备进行调试和配置。通过读写特定的文件,在运行时可以修改某些内核参数和设备属性,进行调试和性能优化。

  4. 动态设备管理:/sys路径中的一些目录用于动态设备管理。例如,当你插入一个USB设备时,相关的设备信息将在/sys/bus/usb目录下动态创建,你可以通过监视这些目录和文件来检测设备的插入和移除事件。

/sys路径为用户空间提供了一种方便的方式来获取和配置内核和设备的信息。通过浏览和操作/sys路径下的文件和目录,你可以获取到有关系统硬件、内核对象和设备的详细信息,以及对其进行调试和配置的能力。

一个简单的gpio

在Linux中,可以通过C程序来操作GPIO(General Purpose Input/Output)引脚,实现对外部设备的控制和数据交互。操作GPIO的原理是通过文件系统中的GPIO设备文件来读写GPIO引脚的状态。下面是一个简单的GPIO控制的示例程序:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>#define GPIO_PIN 17  // 要操作的GPIO引脚号int main() {int fd;char buf[2];// 打开GPIO设备文件fd = open("/sys/class/gpio/gpio17/value", O_RDWR);if (fd < 0) {perror("无法打开GPIO设备文件");exit(1);}// 设置GPIO引脚为输出模式write(fd, "out", 3);// 控制GPIO引脚输出高电平write(fd, "1", 1);sleep(1);  // 延时1秒// 控制GPIO引脚输出低电平write(fd, "0", 1);sleep(1);  // 延时1秒// 关闭GPIO设备文件close(fd);return 0;
}

上述示例程序中,我们首先通过open()函数打开GPIO设备文件/sys/class/gpio/gpio17/value,其中gpio17表示要操作的GPIO引脚号,value表示GPIO引脚的状态文件。接着,通过write()函数设置GPIO引脚为输出模式,并通过write()函数向GPIO设备文件写入10来控制GPIO引脚输出高电平或低电平。最后,通过close()函数关闭GPIO设备文件。

请注意,在使用GPIO之前,你需要确保GPIO引脚已经被正确配置和映射到用户空间。这通常需要进行一些额外的设置,如导出GPIO引脚、设置引脚方向等。具体的设置步骤可以参考Linux系统的文档和GPIO驱动的相关文档。

要编译上述示例程序,可以使用以下命令:

gcc gpio_example.c -o gpio_example

然后,运行生成的可执行文件gpio_example即可控制GPIO引脚的状态。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/180280.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot--中间件技术-4:整合Shiro,Shiro基于会话SessionManager实现分布式认证,附案例含源代码!

SpringBoot整合安全中间件Shiro 技术栈&#xff1a;SpringBootShiro 代码实现 pom文件加坐标 Springboot版本选择2.7.14 &#xff1b;java版本1.8 &#xff1b; shiro做了版本锁定 1.3.2 <properties><java.version>1.8</java.version><!--shiro版本锁定…

k8s资源管理操作——陈述式管理方式

目录 陈述式资源管理方式 1、常用的kubernetes管理命令 1&#xff09;查看版本信息 2&#xff09;查看资源对象简写 3&#xff09;查看集群信息 4&#xff09;配置kubectl自动补全 5&#xff09;node节点查看日志 2、资源管理命令 1&#xff09;创建资源 2&#xff0…

docker 部署日志平台出错汇总

第一次运行elasticsearch:8.11.1镜像&#xff0c;报错如下&#xff1a; [rootmaster ~]# docker run --name es03 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.11.1 docker: Error response from daemon: driver failed programmi…

SystemVerilog学习 (5)——接口

一、概述 验证一个设计需要经过几个步骤&#xff1a; 生成输入激励捕获输出响应决定对错和衡量进度 但是&#xff0c;我们首先需要一个合适的测试平台&#xff0c;并将它连接到设计上。 测试平台包裹着设计,发送激励并且捕获设计的输出。测试平台组成了设计周围的“真实世界”,…

ExoPlayer架构详解与源码分析(8)——Loader

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

嵌入式养成计划-53----ARM--串口通信

一百三十四、串口通信 134.1 串口的概念 串口&#xff08;UART&#xff09;&#xff1a;Universal asynchronous receiver transmitter (USART/UART)&#xff0c;通用异步接收发送器通过串口可以实现两个不同机器之间的信息交互串口通信属于总线通信的一种 134.2 总线的概念…

服务名无效。 请键入 NET HELPMSG 2185以获得更多的帮助

遇到的问题是MySQL服务没有。 因为net start 服务名&#xff0c;启动的是win下注册的服务。此时&#xff0c;我系统中并没有注册mysql到服务中。即下面没有mysql服务。 mysqld --install net start mysql

OpenCV入门2——图像视频的加载与展示一些API

文章目录 题目OpenCV创建显示窗口OpenCV加载显示图片题目 OpenCV保存文件利用OpenCV从摄像头采集视频从多媒体文件中读取视频帧将视频数据录制成多媒体文件OpenCV控制鼠标关于[np.uint8](https://stackoverflow.com/questions/68387192/what-is-np-uint8) OpenCV中的TrackBar控…

Python---数据序列中的公共方法

公共方法就是 支持大部分 数据 序列。 常见公共方法---简单 运算符描述支持的容器类型合并字符串、列表、元组*复制字符串、列表、元组in元素是否存在字符串、列表、元组、字典not in元素是否不存在字符串、列表、元组、字典 案例&#xff1a; 合并 代码&#xff1a; # …

微机原理_9

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。 1.当运算结果的最高位为1时&#xff0c;标志位(&#xff09; A. CF1 B. OF1 C. SF1 D. ZF1 2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可…

windows安装maven,配置环境变量

官网下载&#xff1a; 其他版本找 Other Releases 配置环境变量 1、解压缩之后开始配置环境变量 2、右键此电脑&#xff0c;选中属性->高级系统设置->高级->环境变量。 3、①和②任选一个都可 ①在系统变量那边增加MAVEN_HOME&#xff0c;路径是解压缩后的文件路径。…

如何使用 Github Action 管理 Issue

本文作者为 360 奇舞团前端开发工程师 Daryl 前言 很多小伙伴打开 github 上的仓库都只使用Code查看代码&#xff0c;或者只是把 github 当成一个代码仓库&#xff0c;但是 github 还提供了很多好用的功能。 其中&#xff0c;GitHub Action就是一个很好用的功能&#xff0c;本文…