平台设备驱动程序
在linux驱动中,平台设备是用于描述那些不挂载在物理总线上(如USB,PCI 等)上的设备。平台设备是指没有物理总线,直接集成在soc或者主板上的设备如:
- 串口(UART)
- GPIO 控制器
- I2C 控制器
- SPI 控制器
- 定时器
- 看门狗
- DMA 控制器
这些设备不会出现在 PCI 或 USB 总线上,因此内核无法用传统的总线枚举机制来发现它们。
(“总线枚举”指的是内核发现总线上“现在到底插了哪些设备”的全过程。主要分为:
- 冷枚举:开机上电或
insmod host-controller驱动时,由主机控制器一次性扫描整条总线。- 热枚举:运行期用户插拔(USB、PCIe、Thunderbolt 等)产生中断,内核再“补扫”。
主机控制器按总线协议把‘线上有谁’读出来 → 内核实例化 device → 与已注册的 driver 配对 → probe 生效。
伪平台总线并不是一个真正的物理总线,而是内核为了统一管理这些“平台设备”而虚拟出的一条总线。所有的平台设备都会挂在这个总线上,平台驱动(platform_driver)和设备(platform_device)通过这条总线匹配。