platform device、platform driver 与板级设备

这页讲的是:很多片上设备并不像 PCI 那样有一套非常显眼的自描述枚举流程,它们更常通过板级信息、固件描述和平台总线视角进入内核。学这页的重点,是理解 platform 世界不是“特殊例外”,而是 Linux 在 SoC 和板级设备场景下组织驱动接入的一种常态方式。

这块是什么

platform device、platform driver 与板级设备,讲的是那些没有复杂自枚举能力、却又必须被系统纳入统一驱动框架的设备,怎样以平台设备的方式被描述、实例化、匹配并交给相应驱动接手。它常见于 SoC 片上外设、板级控制器和一些依赖 Device Tree/ACPI 提供资源信息的设备。

可以把它理解成:有些设备不是“自己带身份证走进大厅登记”,而是系统先拿着楼层平面图和住户名单,把这些固定安装在楼里的设备一个个登记出来,再通知对应管理员去接手。

它负责什么

承接板级和片上设备

  • 把很多 SoC 内建设备纳入统一对象模型
  • 让没有强自描述能力的设备也能进入驱动匹配路径
  • 承接串口、控制器、GPIO、定时器等常见平台设备
  • 让板级世界不必靠零散私有代码硬接

衔接硬件描述与驱动

  • 把 Device Tree、ACPI 或平台信息里的资源转成设备对象
  • 让驱动在 probe 时能有统一入口拿寄存器、中断等资源
  • 把板级差异尽量留在描述层而不是驱动主逻辑里
  • 让平台描述和驱动接手真正接上

纳入统一生命周期

  • 平台设备也要经历匹配、probe、remove、电源管理等过程
  • 同样要接受引用关系、资源清理和用户可见接口约束
  • 让“板子上焊死的设备”也服从系统规则
  • 把特殊硬件场景放进统一内核秩序里

为什么它不是“没有总线时的凑合方案”

如果想得太简单会怎样真正关键在哪
觉得 platform 只是没有别的办法时临时用的会低估它在 SoC 和嵌入式系统里的普遍性。很多平台设备本来就天然属于这类组织方式。
觉得它没有匹配和生命周期可言容易忽略 probe、remove、电源管理和资源获取仍然完整存在。它只是枚举与描述方式不同,不代表运行规则不同。
把所有板级差异都塞进驱动驱动会越来越依赖具体板子,复用性变差。平台描述层存在的重要原因之一就是隔离板级差异。
觉得片上设备不需要系统对象模型会让后续资源管理、sysfs 暴露和生命周期处理变得混乱。固定焊在板上的设备,同样需要被统一管理。

关键概念

概念现在怎么理解
platform device一类基于平台描述被实例化出来的设备对象,常代表片上或板级设备。
platform driver接手这类平台设备的驱动入口,与普通驱动一样也要匹配、probe 和清理。
板级设备更贴近具体 SoC/开发板布局和资源关系的一类设备世界。
资源获取驱动在 probe 时根据平台描述取寄存器、中断、时钟、电源等条件。
平台总线视角用统一框架接住那些不靠典型热插拔枚举出现的设备。

为什么重要

常见误解

它不负责什么

和其他模块的关系

相关模块关系
Device Tree、ACPI 与硬件描述那页讲设备先怎么被描述,这页讲描述好的设备如何以平台对象形式进入驱动接手。
总线、设备发现与驱动匹配platform 世界是设备发现与匹配的一种重要具体落地方式。
probe、remove 与资源清理平台驱动在真正接手和撤场时,仍然完整经历这些生命周期阶段。
sysfs / 电源管理平台设备进入系统后,同样会参与对象暴露、属性管理和功耗状态切换。

读完这页后,你应该能回答

后面适合继续问:platform device 和普通总线设备最容易混在哪?为什么很多驱动代码第一步就是从平台资源里拿寄存器和中断?板级差异如果没被描述层隔开,驱动通常会烂在哪?