Linux驱动开发(1)——什么是驱动

Linux驱动开发手册

什么是驱动

驱动是对要硬件的抽象

对于一个驱动而言,最重要的是使得硬件可以使用,而不是确定如何去使用硬件。如何使用硬件是由上层软件来决定的。而作为一个驱动而言,最终要的是使得硬件变得可用。

字符设备 (char device) 是一种最常见的硬件抽象。

/dev 目录下的设备节点文件就是内核导出给用户空间的访问设备驱动的接口。

设备节点文件中有三个基本信息:

  • Type,用于标识是 block 还是 char device;

  • Major number,用于标志是那一类 char deivce;

  • Minor number,用于标志是哪一个 char device;

各类虚拟文件系统

在 Linux 中多种虚拟文件系统,其中有:

  • /proc 目录,这个伪文件系统主要提供了进程以及进程信息等内容的查看
  • /sys 目录,这个伪文件系统挂载了 sysfs ,提供了 Linux 系统中硬件的层级视图

sysfs伪文件系统

Linux 2.6以后的内核引入了sysfs文件系统,sysfs被看成是与proc、devfs和devpty同类别的文件系统,该文件系统是一个虚拟的文件系统,它可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的proc文件系统十分类似。sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件的层次关系,其顶级目录包括block、bus、dev、devices、class、fs、kernel、power和firmware等。

block目录包含所有的块设备;devices目录包含系统所有的设备,并根据设备挂接的总线类型组织成层次结构;bus目录包含系统中所有的总线类型;class目录包含系统中的设备类型(如网卡设备、声卡设备、输入设备等)。

参考资料

  • 知乎
  • 《Linux设备驱动程序设计》

Linux驱动开发(1)——什么是驱动
https://ysc2.github.io/ysc2.github.io/2024/04/16/Linux驱动开发-1-——什么是驱动/
作者
Ysc
发布于
2024年4月16日
许可协议