插件窝 干货文章 linux驱动子系统有哪些

linux驱动子系统有哪些

驱动 子系统 功能 示例 354    来源:    2025-04-14

Linux 内核的驱动子系统(也称为框架子系统)是内核中用于管理硬件设备的标准化接口层,它们抽象了硬件细节,为驱动开发提供统一的模型。以下是 Linux 中主要的驱动子系统和框架:


1. 字符设备(Char Devices)

  • 功能:提供字节流式访问(非块设备),如键盘、串口、传感器等。
  • 核心APIfile_operations 结构体(实现 openreadwriteioctl 等)。
  • 示例驱动/dev/random/dev/ttyS0

2. 块设备(Block Devices)

  • 功能:管理以固定大小块(如磁盘、SSD)访问的设备,支持缓存和文件系统。
  • 核心APIblock_device_operations 结构体。
  • 示例驱动/dev/sda(SCSI磁盘)、/dev/loop0(回环设备)。

3. 网络设备(Network Devices)

  • 功能:处理网络数据包(以太网卡、Wi-Fi 等)。
  • 核心APInet_device 结构体(注册 ifconfig 可见的接口)。
  • 示例驱动eth0wlan0

4. 输入子系统(Input Subsystem)

  • 功能:统一管理输入设备(键盘、鼠标、触摸屏)。
  • 核心APIinput_dev 结构体,通过 /dev/input/eventX 上报事件。
  • 示例驱动:USB 键盘、触摸板驱动。

5. 帧缓冲(Framebuffer)

  • 功能:抽象显示设备,提供图形内存的直接访问。
  • 核心APIfb_info 结构体。
  • 示例驱动/dev/fb0(显卡驱动)。

6. 声音子系统(ALSA)

  • 功能:高级音频架构(Advanced Linux Sound Architecture)。
  • 核心API:ALSA 库和内核接口(如 snd_card)。
  • 示例驱动:声卡驱动(如 snd_hda_intel)。

7. USB 子系统(USB Core)

  • 功能:管理 USB 主机控制器和设备(HID、存储、串口等)。
  • 核心APIusb_driverusb_device_id
  • 示例驱动:USB 摄像头(uvcvideo)、USB 存储(usb-storage)。

8. I2C/SPI 子系统

  • 功能:管理 I2C 和 SPI 总线设备(传感器、EEPROM 等)。
  • 核心API
    • I2C:i2c_driveri2c_client
    • SPI:spi_driverspi_device
  • 示例驱动:温度传感器(lm75)、OLED 屏幕。

9. PCI/PCIe 子系统

  • 功能:管理 PCI/PCIe 设备(显卡、网卡等)。
  • 核心APIpci_driverpci_device_id
  • 示例驱动:NVIDIA 显卡(nouveau)、Intel 网卡(igb)。

10. 设备树(Device Tree)

  • 功能:描述硬件配置(替代传统硬编码),用于嵌入式平台(如 ARM)。
  • 关键文件.dts(设备树源码)、.dtb(编译后的二进制)。

11. 电源管理(Power Management)

  • 功能:处理休眠(Suspend/Resume)、动态频率调整(DVFS)。
  • 核心APIpm_ops、Runtime PM(运行时电源管理)。

12. DMA 引擎(DMA Engine)

  • 功能:管理直接内存访问(DMA)控制器。
  • 核心APIdmaengine 框架。

13. Regulator 框架

  • 功能:管理电源调节器(如电压、电流控制)。
  • 典型应用:移动设备省电优化。

14. IIO(Industrial I/O)

  • 功能:工业传感器框架(ADC、陀螺仪、光感等)。
  • 核心APIiio_dev 结构体。

15. V4L2(Video for Linux 2)

  • 功能:视频设备框架(摄像头、采集卡)。
  • 核心APIvideo_device 结构体。

16. GPU 驱动(DRM/KMS)

  • 功能:图形渲染与显示管理(Direct Rendering Manager/Kernel Mode Setting)。
  • 示例驱动amdgpui915(Intel 显卡)。

17. 其他重要框架

  • MTD(Memory Technology Devices):Flash 存储(如 NAND、NOR)。
  • HWMON(Hardware Monitoring):硬件监控(温度、风扇转速)。
  • LED 框架:控制 LED 设备。
  • PWM 框架:脉冲宽度调制(如电机控制)。

总结

Linux 通过子系统将驱动分类管理,开发者只需实现对应框架的接口,无需关心底层细节。理解这些子系统是开发或调试驱动的关键。可通过内核文档(Documentation/driver-api/)或源码(drivers/ 目录)深入学习。