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. 设备的查看

相关推荐
曦夜日长10 小时前
Git系统篇,Git本地使用(一):从“究极进化版“到三个区域的底层原理
大数据·linux·git·elasticsearch
shimly12345610 小时前
给断网无 sudo ubuntu22.04 机器安装 nodejs
linux
滕州市燕猫虎计算机科技工作室个体工商户11 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
别动我齐刘海12 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
Lsetea12 小时前
OpenSSL报certificate chain too long:error 22与verify_depth深度排查
linux·https·ssl证书·openssl·证书链
不像程序员的程序媛13 小时前
linux常见文本操作命令
linux·运维·服务器
xier_ran13 小时前
【infra之路】AI 编译器学习笔记(二):重拾 C++——移动语义与 LLVM 风格的类型转换
人工智能·笔记·学习
wangbing112513 小时前
开发指南149-IotDB-常用命令
linux·运维·iotdb
看着博客敲代码13 小时前
WorkBuddy 接上 Kali MCP 做自动化渗透:信息收集到初步验证的落地记录
linux·人工智能·安全·网络安全·自动化