• 正文
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard ELF 1板卡-应用编程示例控制LED灯之sysfs文件系统

2024/10/18
884
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

之前玩过单片机的同学都知道,搞嵌入式都是从点灯开始的。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灯如图:

sysfs文件系统

sysfs文件系统概念

sysfs是Linux2.6以上的内核在发展迭代过程中衍生出来的一个功能,它的作用是通过一个内存文件系统将信息导出到用户进程空间。文件系统的目录层次结构组织严格,并且是基于内核数据结构的内部组织。文件系统中创建的文件主要是ASCII文件(每个文件通常只有一个值)。这些特点保证了信息导出的准确性和方便性,方便用户在应用层对设备进行操作。

在Linux系统下一切皆文件,sysfs是一个基于内存的文件系统,被称为虚拟文件系统。它对系统设备进行管理,产生一个包含所有系统硬件层次的视图,同时将内核信息以文件的方式提供给应用层使用。

sysfs文件系统把连接在系统上的设备和总线组织成为一个分级的文件,展示设备驱动模型中各组件的层次关系。sysfs提供了一种机制,可以显式的描述内核对象、对象属性及对象间关系,用来导出内核对象(kernel object,譬如一个硬件设备)的数据、属性到用户空间,以文件目录结构的形式为用户空间提供对这些数据、属性的访问支持。下表描述了内核对象、对象属性及对象间关系在用户空间sysfs中的的表现。

sysfs的存在如同一栋规模宏大的建筑,为了构造它,除了基本的建筑材料外,尚需要一种机制,来向建筑外面的世界(用户空间程序)展示内部的构造,并且通过文件接口的方式实现与外界的沟通与互动。sysfs文件系统就充当了这种角色。

如图一个USB的鼠标设备Mouse 1,其设备类型Classes为输入设备,同时USB总线Buses类型中有归属于usb-hid,在devices一个驱动设备中其属于usb 2中的port 1端口设备dev1:1-0,采用类似于一个矩阵管理形式。

/sys/目录结构解释如下:

sysfs文件系统中控制LED状态

给ELF1开发板上电,进入Linux系统后,进入到/sys目录下查看:

进入class目录,找到led设备,进入led1里:

常用的三个属性是brightness,max_brightness,trigger。

查看LED1触发状态,当前状态为none:

将LED1的触发状态改为插入TF卡闪烁,即mmc:

此时插入TF卡后led1红灯闪烁三次,拔出后闪烁一次。

飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐