在 Linux 中,SPI 设备通过设备节点来表示和访问。SPI 设备节点的生成过程如下:
1. 内核驱动程序注册 SPI 设备:
- 在内核驱动程序中,通过 `spi_register_master()` 或 `spi_register_controller()` 函数注册 SPI 主设备或从设备。
- 在注册过程中,驱动程序会创建对应的 SPI 设备结构体 (`struct spi_device`)。
2. 设备树或 ACPI 配置:
- 在设备树或 ACPI 配置文件中,定义 SPI 设备的属性,如总线名称、设备地址等。
- 这些配置信息会被内核用于创建相应的 SPI 设备节点。
3. 自动创建设备节点:
- 当内核加载 SPI 驱动程序并识别到 SPI 设备时,会自动在 `/sys/bus/spi/devices/` 目录下创建对应的设备节点,如 `spi0.0`。
- 这些设备节点对应于内核中注册的 `struct spi_device` 实例。
4. 手动创建设备节点:
- 如果 SPI 设备没有在设备树或 ACPI 中定义,可以手动在 `/sys/bus/spi/devices/` 目录下创建设备节点。
- 可以使用 `mknod` 命令创建设备节点文件,如 `mknod /sys/bus/spi/devices/spi0.0 c 153 0`。
通过以上步骤,Linux 内核就会为 SPI 设备创建相应的设备节点,用户空间程序就可以通过这些设备节点来访问和控制 SPI 设备了。