瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。
【公众号】迅为电子
【粉丝群】824412014(加群获取驱动文档+例程)
【视频观看】嵌入式学习之Linux驱动(第八期_设备树插件_全新升级)_基于RK3568
【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板
第74章 虚拟文件系统ConfigFS介绍
前面几个章节中,我们详细讲解了设备树插件的语法和编译过程,了解了如何利用设备树插件实现设备树的模块化和复用。本章节将进一步拓展我们的知识,介绍虚拟文件系统ConfigFS。虚拟文件系统ConfigFS是一个特殊的文件系统,旨在提供一种动态配置Linux内核和设备的机制。让我们一起深入学习ConfigFS,并将其应用于实际实验操作中,为我们的设备树和系统开发带来更多的可能性和创新性。
74.1 常用的虚拟文件系统
在Linux内核中,有几个常用的虚拟文件系统,虚拟文件系统提供了一个内核抽象层,使得应用程序可以通过统一的文件访问接口操作不同类型的文件和设备。它简化了应用程序的开发和维护,提供了更高的可移植性和灵活性,并提供了管理文件系统和访问底层硬件的功能。
其中最常见的虚拟文件系统如下所示:
1 procfs是一个虚拟文件系统,提供了对系统内核运行时状态的访问接口。它以文件和目录的形式表示内核中的进程,设备,驱动程序和其他系统信息。通过读取和写入procfs中的文件,可以获取和修改有关系统状态的信息。
2 sysfs是一个虚拟文件系统,用于表示系统中的设备,驱动程序和其他内核对象。它提供一种统一的接口,通过文件和目录来访问和配置这些对象的属性和状态。Sysfs常用于设备驱动程序和系统管理工具,用于查看和控制系统的硬件和内核对象。
3 configfs是一个虚拟文件系统,用于动态配置和管理内核对象。它提供了一种以文件和目录的形式访问内核对象的接口,允许用户在运行时添加,修改和删除内核对象,而无需重新编译内核或重新启动系统。ConfigFS常用于配置和管理设备,驱动程序和子系统。
这些虚拟文件系统在功能上有一些区别,如下所示:
Procfs主要用于访问和管理进程信息,提供了有关进程,内核参数和系统状态的信息。
Sysfs主要用于表示和配置系统中的设备,驱动程序和其他内核对象,提供了一种统一的接口来访问和控制这些对象的属性和状态。
Configfs主要用于动态配置和管理内核对象,提供了一种以文件和目录的形式访问内核对象的接口,允许在运行时添加,修改和删除内核对象。
74.2 设备树插件选择ConfigFS原因
在上个章节,我们学习了设备树插件的使用,从而理出设备树插件的实现方式,
通过上节课设备树插件的使用我们可以理出设备树的插件的实现方式,如下图(图 74-1)所示:
图 74-1
要实现上述的功能,用户空间需要和内核进行交互,也就是将dtbo加载到内存里面去。
sysfs虚拟文件系统的作用是将内核中的数据、属性以文件的方式导出到用户空间。导出到用户空间以后,读这些文件表示读取设备的文件,写这些文件就表示控制设备。configfs作用的英文解释为Userspace-driven kernel object configuration,翻译过来就是用户空间配置内核对象。
所以configfs与sysfs恰恰相反,sysfs导出内核对象给用户空间,configfs是从用户空间去配置内核对象,并且不需要重新编译内核或者修改内核代码。所以configfs更适合设备树插件这个技术。
选择ConfigFS虚拟文件系统作为设备树插件的实现方式,可以满足设备树插件对动态性、灵活性的需求,使得设备树的配置和管理更加方便和高效。