查看: 336|回复: 0

[经验] 飞凌嵌入式ElfBoard ELF 1板卡-控制LED灯之sysfs文件系统

[复制链接]

该用户从未签到

发表于 2024-10-18 09:27:20 | 显示全部楼层 |阅读模式
分享到:
之前玩过单片机的同学都知道,搞嵌入式都是从点灯开始的。ELF1开发板左下角有红、绿、黄三个LED灯,核心板有一个LED心跳灯。控制一个LED灯亮灭的方法有很多,可以给灯的两端施加电压差,通过改变上下拉即可。也可以通过Linux中的pinctrl子系统和GPIO子系统,通过配置引脚和系统提供的API进行控制。
而Linux系统通过sysfs,将设备和驱动层的设备属性等信息以文件的形式开放到应用层,供用户使用。在《01-0 ELF1、ELF1S开发板_快速启动手册_V1》中有“echo 1 > /sys/class/leds/led1/brightness”,这个brightness代表的就是sysfs将led1输出来的亮度。  本篇先简单介绍sysfs文件系统,下一篇结合前面介绍过的文件I/O方式写一个点灯的C程序。
板卡的三个LED灯如图:
9-1.png
sysfs文件系统
sysfs文件系统概念
sysfs是Linux2.6以上的内核在发展迭代过程中衍生出来的一个功能,它的作用是通过一个内存文件系统将信息导出到用户进程空间。文件系统的目录层次结构组织严格,并且是基于内核数据结构的内部组织。文件系统中创建的文件主要是ASCII文件(每个文件通常只有一个值)。这些特点保证了信息导出的准确性和方便性,方便用户在应用层对设备进行操作。
在Linux系统下一切皆文件,sysfs是一个基于内存的文件系统,被称为虚拟文件系统。它对系统设备进行管理,产生一个包含所有系统硬件层次的视图,同时将内核信息以文件的方式提供给应用层使用。
sysfs文件系统把连接在系统上的设备和总线组织成为一个分级的文件,展示设备驱动模型中各组件的层次关系。sysfs提供了一种机制,可以显式的描述内核对象、对象属性及对象间关系,用来导出内核对象(kernel object,譬如一个硬件设备)的数据、属性到用户空间,以文件目录结构的形式为用户空间提供对这些数据、属性的访问支持。下表描述了内核对象、对象属性及对象间关系在用户空间sysfs中的的表现。
9-2.png
sysfs的存在如同一栋规模宏大的建筑,为了构造它,除了基本的建筑材料外,尚需要一种机制,来向建筑外面的世界(用户空间程序)展示内部的构造,并且通过文件接口的方式实现与外界的沟通与互动。sysfs文件系统就充当了这种角色。
9-3.png
       
如图一个USB的鼠标设备Mouse 1,其设备类型Classes为输入设备,同时USB总线Buses类型中有归属于usb-hid,在devices一个驱动设备中其属于usb 2中的port 1端口设备dev1:1-0,采用类似于一个矩阵管理形式。
/sys/目录结构解释如下:
9-4.png
sysfs文件系统中控制LED状态
给ELF1开发板上电,进入Linux系统后,进入到/sys目录下查看:
9-5.png
进入class目录,找到led设备,进入led1里:
9-6.png
常用的三个属性是brightness,max_brightness,trigger。
查看LED1触发状态,当前状态为none:
9-7.png
将LED1的触发状态改为插入TF卡闪烁,即mmc:
9-8.png
此时插入TF卡后led1红灯闪烁三次,拔出后闪烁一次。

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-18 01:42 , Processed in 0.125569 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.