点亮 LED

news2024/10/5 15:28:17

1.在 Linux 系统下,一切皆文件!应用层如何操控底层硬件,同样也是通过文件 I/O 的方式来实现。

设备文件通常在/dev/目录下,我们也把/dev 目录下的文件称为设备节点

设备节点并不是操控硬件设备的唯一途径,除此之外,我们还可以通过 sysfs 文件系统对硬件设备进行

操控。

2.sysfs 是一个基于内存的文件系统, 同 devfs、 proc 文件系统一样,称为虚拟文件系统;它的作用是将内核信息以文件的方式提供给应用层使用。

sysfs 文件系统把连接在系统上的设备和总线组织成为一个分级的文件、 展示设备驱动模型中各组件的层次关系。

sysfs 提供了一种机制,可以显式的描述内核对象、对象属性及对象间关系, 用来导出内核对象(kernel object,譬如一个硬件设备)的数据、属性到用户空间,以文件目录结构的形式为用户空间提供对这些数据、属性的访问支持。

3.sysfs 文件系统挂载在/sys 目录下,启动 I.MX6U 开发板,进入 Linux 系统(开发板出厂系统) 之后,我们进入到/sys 目录下查看

上图显示的便是 sysfs 文件系统中的目录,包括 block、 bus、 class、 dev、 devices、 firmware、 fs、 kernel、modules、 power 等,每个目录下又有许多文件或子目录,对这些目录的说明如所示:

                   /sys 下的子目录说明
/sys/devices
这是系统中所有设备存放的目录, 也就是系统中的所有设备在 sysfs 中的呈现、表达,也是 sysfs 管理设备的最重要的目录结构。

/sys/block
块设备的存放目录,这是一个过时的接口,按照 sysfs 的设计理念,系统所有的设备都存放在/sys/devices 目录下,所以/sys/block 目录下的文件通常是链接到/sys/devices 目录下的文件。

/sys/bus
这是系统中的所有设备按照总线类型分类放置的目录结构, /sys/devices 目录下每一种设备都是挂在某种总线下的,譬如 i2c 设备挂在 I2C 总线下。同样, /sys/bus 目录下的文件通常也是链接到了/sys/devices 目录。

/sys/class
这是系统中的所有设备按照其功能分类放置的目录结构,同样该目录下的文件也是链接到了/sys/devices 目录。 按照设备的功能划分组织在/sys/class 目录下,譬如/sys/class/leds目录中存放了所有的 LED 设备, /sys/class/input 目录中存放了所有的输入类设备。

/sys/dev
这是按照设备号的方式放置的目录结构,同样该目录下的文件也是链接到了/sys/devices 目录。该目录下有很多以主设备号:次设备号(major:minor)命名的文件,这些文件都是链接文件,链接到/sys/devices 目录下对应的设备。

/sys/firmware 描述了内核中的固件。

/sys/fs
用于描述系统中所有文件系统,包括文件系统本身和按文件系统分类存放的已挂载点。

/sys/kernel 这里是内核中所有可调参数的位置。

/sys/module 这里有系统中所有模块的信息。

/sys/power
这里是系统中电源选项,有一些属性可以用于控制整个系统的电源状态。

系统中所有的设备(对象)都会在/sys/devices 体现出来,是 sysfs 文件系统中最重要的目录结构;

/sys/bus/sys/class /sys/dev 分别将设备按照挂载的总线类型功能分类以及设备号的形式将设备组织存放在这些目录中,这些目录下的文件都是链接到了/sys/devices 中

4.应用层想要对底层硬件进行操控,通常可以通过两种方式:

1) /dev/目录下的设备文件(设备节点) ;

2) /sys/目录下设备的属性文件。

其设备驱动在实现时会将设备的一些属性导出到用户空间 sysfs 文件系统,以属性文件的形式为用户空间提供对这些数据、属性的访问支持,譬如 LED、 GPIO 等。

5./sys/class 目录,系统中的所有设备根据其功能分类组织到了/sys/class 目录下,所以/sys/class/leds 目录下便存放了所有的 LED 类设备。

主要关注便是 brightness、 max_brightness 以及 trigger 三个文件,这三个文件都是 LED 设备的

属性文件:

brightness: 翻译过来就是亮度的意思, 该属性文件可读可写; 所以这个属性文件是用于设置 LED的亮度等级或者获取当前 LED 的亮度等级,譬如 brightness 等于 0 表示 LED 灭, brightness 为正整数表示 LED 亮,其值越大、 LED 越亮; 对于 PWM 控制的 LED 来说, 这通常是适用的,因为它存在亮度等级的问题,不同的亮度等级对应不同的占空比,自然 LED 的亮度也是不同的; 但对于 GPIO控制(控制 GPIO 输出高低电平)的 LED 来说,通常不存在亮度等级这样的说法,只有 LED 亮(brightness 等于 0)和 LED 灭(brightness 为非 0 值的正整数)两种状态,I.MX6U开发板上的这颗 LED 就是如此,所以自然就不存在亮度等级一说,只有亮和灭两种亮度等级。

max_brightness: 该属性文件只能被读取,不能写,用于获取 LED 设备的最大亮度等级。

trigger: 触发模式,该属性文件可读可写,读表示获取 LED 当前的触发模式,写表示设置 LED 的触发模式。 不同的触发模式其触发条件不同, LED 设备会根据不同的触发条件自动控制其亮、灭状态, 通过 cat 命令查看该属性文件,可获取 LED 支持的所有触发模式以及 LED 当前被设置的触发模式:

none 表示无触发,常用的触发模式包括none(无触发)、

mmc0(当对 mmc0 设备发起读写操作的时候 LED 会闪烁)、

timer(LED 会有规律的一亮一灭,被定时器控制住)、

heartbeat(心跳呼吸模式, LED 模仿人的心跳呼吸那样亮灭变化)。

6.通过echo 命令进行控制:

echo timer > trigger //将 LED 触发模式设置为 timer
echo none > trigger  //将 LED 触发模式设置为 none
echo 1 > brightness  //点亮 LED 
echo 0 > brightness  //熄灭 LED

使用 echo 或 cat 命令进行测试、控制 LED 状态;

除了使用 echo 或 cat 命令之后,同样我们编写应用程序,使用 write()、 read()函数对这些属性文件进行 I/O 操作以达到控制 LED 的效果。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue模板语法(二)

Vue条件语句 1、v-if、v-else、v-else-if v-if、v-else、v-else-if用于根据条件来渲染某一块的内容: 这些内容只有在条件为true时,才会被渲染出来;这三个指令与JavaScript的条件语句if、else、else if类似; v-if的渲染原理&a…

单片机开发---ESP32-S3模块上手

背景介绍 想起来之前做的半成品单片机游戏机,又想继续做一个,不过之前那个单片机驱动屏幕速率太低,已经无法改进了。所以这次斥巨资购买了一款顶配的ESP32S开发板,做个简单的游戏机,没问题。 完整介绍链接 这花花绿绿…

通过logstash将Redis数据写入ElasticSearch

点击上方蓝字关注我使用logstash将Redis中数据自动同步至ES中1. 部署Redis上传编译好的Redis二级制安装包,使用redis用户启动redis即可具体编译安装过程可参考https://mp.weixin.qq.com/s/RaWy0sqRxcAti1qbv-GbZQ2. 部署logstash下载二进制安装包wget https://ar…

HTTP FLV交互流程及实例解析

HTTP FLV交互流程及实例解析 文章目录HTTP FLV交互流程及实例解析HTTP FLV传输方式HTTP FLV 抓包分析结束语HTTP FLV传输方式 前文已经介绍过,HTTP FLV利用了一个HTTP的协议约定,http 的content-length头字段如果不存在,则客户端就会一直接收…

ESP32-Camera性能(简单)测试评估

TOC 1. ESP32-Camera简介 最近因为接触了ESP32摄像头相关的资料和信息,稍微简单整理下,希望对该方案有兴趣的朋友可以有所帮助。 1.1 资料&信息 The Internet of Things wit ESP32ESP32-S Series开发模组Github: ESP32-Camera 1.2 ESP-EYE摄像头…

别忘记我:通过局部-全局内容建模进行文本擦除方法

本文简要介绍了发表于ECCV 2022的论文“Don’t Forget Me: Accurate Background Recovery for Text Removal via Modeling Local-Global Context”的相关工作。该论文针对文本擦除中存在的复杂背景修复的问题,提出了CTRNet,它利用局部和全局的语义建模提…

一个 go-sql-driver 的离奇 bug

文|郝洪范京东技术专家Seata-go 项目共同发起人微服务底层技术的探索与研究。本文 3482 字 阅读 7 分钟对于 Go CURD Boy 来说,相信 github.com/go-sql-driver/mysql 这个库都不会陌生。基本上 Go 的 CURD 都离不开这个特别重要的库。我们在开发 Seata-g…

LabVIEW将现有数据文件映射至TDMS数据文件格式

LabVIEW将现有数据文件映射至TDMS数据文件格式在某些情况下,可能无法使用TDMS文件格式,例如客户或供应商指定必须使用某种格式存储数据。有些传统仪器可能会自动使用某种自定义格式提供数据输出文件。此外,已经用某种方式收集的传统测量数据无…

PyQt6快速入门-自定义Widget

自定义Widget 文章目录 自定义Widget1、准备工作2、重写paintEvent事件3、Position策略4、更新显示5、绘制条形框5.1 绘制计算5.2 绘制条形框6、自定义样式7、添加鼠标交互能力8、完整代码QPainter是Qt中所有小部件绘制的基础。在本文中,详细介绍如何构建一个全新的自定义 GUI…

vue文本点击样式设置

vue文本点击样式设置嘚吧嘚干就完了光标边小手文本域样式修改hover语法语法一语法二语法三语法四学以致用,效果实现嘚吧嘚 相信当家在写代码的过程中,文本的点击事件是常有的吧,如历史搜索记录、页面跳转等。本次就就分享一下文本点击样式设…

从CES的亚马逊云科技展台,看云计算如何改变汽车行业

当云计算技术被广泛运用于智能汽车的制造,会给整个汽车行业带来怎样的变革?CES 2023汽车展区:亚马逊云科技展台成为焦点作为全球规模最大、影响力最为广泛的国际消费电子展,CES 2023于近日在美国拉斯维加斯圆满落下帷幕。在这场汇…

数据结构和算法的基本概念和基本术语(数据,数据元素,数据项,数据对象)

目录 一、数据结构的研究内容 1.1学生信息管理系统 1. 2人机对弈问题 1. 3最短路径问题 二、基本概念和术语 2.1数据,数据元素,数据项,数据对象 2.1.1 数据(Data): 2.1.2 数据元素(Data Element)&a…

关于elasticsearch一些基本操作

哈喽~大家好,这篇来看看关于elasticsearch一些基本操作。 🥇个人主页:个人主页​​​​​ 🥈 系列专栏: 【微服务】 🥉与这篇相关的文章: SpringCloud Se…

Import语句基础

1 问题 在 Java 中,如果给出一个完整的限定名,包括包名、类名,那么 Java 编译器就可以很容易地定位到源代码或者类。import 语句就是用来提供一个合理的路径,使得编译器可以找到某个类。 2 方法 1.import导入声明可分为两种: 1&a…

【每日一道智力题】之 轮流取石子(简单的尼姆博弈)

题目:一共有N颗石子(或者其他乱七八糟的东西),每次最多取M颗最少取1颗,A,B轮流取,谁最后会获胜?(假设他们每次都取最优解)。解答:结论&#xff1a…

告诉大家几个好用的功能

功能一:打开通知面板/月历面板 WinN的作用是调出通知面板,由于Windows 11将月历与通知面板合在了一起,因此它的另一项功能,就是——打开月历。 功能二:WindowsW:启用小组件面板 如果我们需要用到系统自带的小组件&am…

WC2023游记

今年,我势必打破铜牌魔咒 Day -?~? 虽然已年及高二,但WC的讲课还是没有听懂多少,这段时间,北师大还有一名E队来我校训练,我只能感慨:“如果一个选手比你强,还比你小,那你就再也打…

51 种 AI 工具,生活、编程、内容创建都应该使用它

AI 正在席卷全球 🔥🔥🔥 它具有无限的潜力,并将改变我们的生活,让生活变得更美好。这项技术将迅速改进,您今天可以使用许多工具来提高您的工作效率,帮助您完成工作,为您提供有关许多…

单网口ubuntu主机配置virt-manager传统桥接bridge网络

单网口ubuntu主机配置virt-manager传统桥接bridge网络 虚拟机的网络桥接bridge模式往往需要物理宿主机有两个网口,一个网口1连接外网配置ip,另一个网口2空闲不配置ip,在virt-manager里配置虚拟机的网卡绑定网口2,从而实现虚拟机桥…

81.门控循环单元(GRU)以及代码实现

1. 关注一个序列 做RNN的时候,处理不了太长的序列,因为把整个序列信息全部放在隐藏状态中,所有东西都放进去,当时间步很长的话,隐藏状态就会累积太多东西,就可能对很前面的信息不那么容易抽取出来了。 所…