1、文件系统介绍
sysfs 是一个基于内存的文件系统, 同 devfs、 proc 文件系统一样,称为虚拟文件系统; 它的作用是将内核信息以文件的方式提供给应用层使用。
proc 文件系统, 应用层可以通过proc 文件系统得到系统信息和进程相关信息,与 proc 文件系统类似, sysfs 文件系统的主要功能便是对系统设备进行管理,它可以产生一个包含所有系统硬件层次的视图。
sysfs 文件系统挂载在/sys 目录下。包括 block、 bus、 class、 dev、 devices、 firmware、 fs、 kernel、modules、 power 等,每个目录下又有许多文件或子目录。
sysfs 提供了一种机制,可以显式的描述内核对象、对象属性及对象间关系, 用来导出内核对象(kernel object,譬如一个硬件设备)的数据、属性到用户空间,以文件目录结构的形式为用户空间提供对这些数据、属性的访问支持。
2、应用层想要对底层硬件进行操控,通常可以通过两种方式:
- /dev/目录下的设备文件(设备节点) ;
- /sys/目录下设备的属性文件
具体使用哪种方式需要根据不同功能类型设备进行选择,有些设备只能通过设备节点进行操控,而有些设备只能通过 sysfs 方式进行操控;当然跟设备驱动具体的实现方式有关,通常情况下,一般简单地设备会使用 sysfs 方式操控,其设备驱动在实现时会将设备的一些属性导出到用户空间 sysfs 文件系统,以属性文件的形式为用户空间提供对这些数据、属性的访问支持,譬如 LED、 GPIO 等。
但对于一些较复杂的设备通常会使用设备节点的方式, 譬如 LCD 等、触摸屏、摄像头等。