sys文件系统与misc文件系统学习小总结

1.sys文件系统

sysfs 是 Linux 内核中一种特殊虚拟文件系统,用来向用户空间提供内核设备和驱动程序的信息。它提供了一种统一的接口,用于查看和操作设备、驱动程序、文件系统等内核对象。sysfs 存放在内存中,挂载在 /sys 目录下,文件系统中的文件不对应硬盘上任何文件。

2. sys 文件系统使用

sysfs 在驱动中的作用通常包括:

  1. 设备信息显示 :将内核对象(设备、驱动、总线等)的属性以文件形式展示在 /sys 目录下,例如设备状态、配置参数、硬件拓扑等。用户可通过 cat 或者 echo 命令直接读取/修改这些文件,无需编写专用工具。
  2. 动态设备管理:实时反映系统设备变化(如热插拔),目录结构随设备增删动态更新,支持设备分类。
  3. 驱动调试与配置:提供寄存器访问接口,允许直接读取/写入硬件寄存器。

3. 相关函数的接口

希望通过 sys 文件系统,自动创建设备节点。当设备驱动和设备类型成功匹配后,就会自动创建设备节点。

4. 通过 sys 文件系统加入调试节点

不需要通过编程,查看 sys 下的文件,就可以获得灯、蜂鸣器的状态信息,当然也是可以写入的。

  1. 先把设备类、设备创建好后。
  2. 调用 device_create_file 函数,创建设备的属性。
  3. 用 _ATTR 填充属性结构体:属性的名字(直接写字符串,不用引号)、读写权限、读函数、写函数。
  4. 填入函数指针:show(读属性)、store(写属性)。建议 ioremap、寄存器的设置都建议在 init 中完成,有可能插入模块后,就查看设备属性了。show 的返回值需要返回输出字符串的长度;store 的返回值要返回该函数形参的最后一个参数,否则会阻塞。
  5. 插入 insmod 后,会生成多个属性文件。

2. misc 设备驱动

1. 设备类型概念

我们可以在 Linux 系统中通过 cat /proc/devices 查看系统中所有加载的驱动。

2. 混杂设备操作接口

简化字符设备驱动的编写,也会自动创建设备的节点,应用层的程序不需要变化,可以不需要原来的函数。

  1. alloc_chrdev_region(自动获得设备号,注册设备号)、register_chrdev_region(注册固定设备号)。

    文件名后缀含义:

    • .dts 文件:一种以 ASCII 文本格式的设备树描述。
    • .dtsi 文件:与 C 语言头文件类似,允许其他的 dts 文件包含此文件。
    • DTC:将 .dts 编译为 .dtb 的工具。
    • dtb 文件:.dts 被 DTC 编译后的二进制格式的设备树描述。
  2. cdev_init、cdev_alloc():初始化或申请字符设备。

  3. mknod(手动创建节点)、class_create、device_create(自动创建节点方式)。

3. 设备的查看

相关推荐
Linux界最忧郁之人5 小时前
华为云ECS&IMS&AS实战|弹性云服务器、私有镜像、弹性伸缩完整实验
linux·运维·服务器·centos·华为云·openstack
li星野5 小时前
Regular and Irregular Nouns — One-Page A4 Notes
学习
whyutianict_vv6 小时前
零基础转 AI 运维:投入清单、技术路线与核对表
linux·运维·人工智能·ai
无言听风雨丶6 小时前
systemd 与信号 / 僵尸进程:Linux 进程管理的底层逻辑与排错
linux·服务器·网络
DevOpenClub6 小时前
高考一分一段 API:分数查位次、科类枚举与历史对照
linux·数据库·高考
小贾要学习6 小时前
【C++后端开发项目】Reactor 模型 / C++ 仿写 muduo HTTP 服务器:让底层网络库真正跑起网页
linux·服务器·c++·http·网络编程·muduo·reactor模型
Blockbuater_drug6 小时前
OpenMM分子动力学模拟02 安装:Linux:conda 一条命令装通 GPU 加速的分子模拟环境
linux·conda·cuda·gpu驱动·pythonpath·openmm安装
程序员JerrySUN6 小时前
PCIe Gen5 SSD 为什么读得快、写得慢?从存储原理到 Linux 性能实测
linux·服务器·网络
Android系统攻城狮7 小时前
Linux FFmpeg深度解析之avcodec_parameters_copy调用流程与实战(二十五)
linux·运维·服务器·ffmpeg·音视频·车载音频
Z21-X7 小时前
云原生运维实战笔记:华为云存储类服务全景解析——EVS、OBS、SFS与CBR深度实践
运维·笔记·学习·云原生·华为云