接着继续介绍 /sys 目录,这次分享的是 /sys/bus 目录~/sys/bus 目录主要用于设备模型和设备驱动的管理,通过文件系统接口向用户空间暴露内核对象(如设备、驱动程序等)的信息。/sys/bus 目录下包含了与系统中各种总线相关的信息和接口,主要包括以下几个子目录:1. subsystem: 该目录包含各类总线的子系统,例如 PCI、USB、I2C 等。在这些子目录中,可以找到与特定总线相关的设备和驱动程序的信息。2. <bus_name>: 每个总线类型在此目录下都有一个相应的子目录。例如:- /sys/bus/pci:与 PCI 总线相关的信息。
- /sys/bus/usb:与 USB 总线相关的信息。
- /sys/bus/i2c:与 I2C 总线相关的信息。
- 该目录下包含了与 PCI 设备相关的信息。你可以找到每个 PCI 设备的详细信息,包括设备 ID、厂商 ID、状态等。
- 例如,使用 ls /sys/bus/pci/devices/ 可以列出所有 PCI 设备。
- 包含了 USB 设备的信息。你可以查看已连接 USB 设备的详细信息。
- 文件如 devices/ 下会列出 USB 设备,drivers/ 下会列出相关 USB 驱动程序。
- 包括与 I2C 设备相关的信息,显示 I2C 设备的地址、类型等。
- devices/: 列出了该总线上连接的所有设备,每个设备都有一个对应的目录,里面包含该设备的属性文件。
- drivers/: 列出了可以与该总线上的设备交互的所有驱动程序。
- bind/unbind: 这两个文件用于将设备绑定到驱动程序或将其解绑。通过写入设备的名称或 ID,可以手动进行绑定或解绑操作。
- uevent: 该文件用于生成 uevent,通常用于设备热插拔事件的通知。
echo "<device_id>" > /sys/bus/pci/drivers/<driver_name>/bind
echo "<device_id>" > /sys/bus/pci/drivers/<driver_name>/unbind
/sys/bus 目录是 Linux 内核中处理设备和驱动的重要组成部分,它通过 sysfs 提供了一个统一的接口,让用户能够以文件系统的方式访问和管理系统中的设备。咱们可以通过这个目录,可以获得系统设备的详细信息,并对设备进行管理和控制。在设备驱动开发和系统调试中,这个目录提供了很大的帮助。