Linux驱动-platform总线详解

dev 驱动 注册 总线 structdevice
发布于 2025-06-12
541

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

扫码阅读
手机扫码阅读

文章主旨:

本文详细讲解了 Linux 平台总线(platform bus)的概念、相关结构体、注册流程及开发步骤。

关键要点:

  • Platform 总线是一种虚拟总线,用于管理 SoC 上的片上资源,与 CPU 总线直接取址。
  • Platform 总线的设备通过 platform_device 表示,驱动通过 platform_driver 注册。
  • 开发步骤包括设备注册(platform_device_register)和驱动注册(platform_driver_register),两者的名称需一致以便匹配。
  • 通过实例展示了 Platform 总线如何匹配设备与驱动,并读取设备资源信息。
  • 详细列举了与 Platform 总线相关的结构体及其成员的用途,如 struct resourcestruct bus_type

内容结构:

一、概念

介绍 Platform 总线的定义、功能及与物理总线的区别。Platform 总线主要用于描述 SoC 上的片上资源,通过虚拟总线进行统一管理,提升代码安全性和可移植性。

二、Platform 总线核心结构体

  • Platform_driver:用于注册驱动到 Platform 总线,包含 proberemove 等关键函数指针和驱动匹配信息。
  • Platform_device:用于描述设备硬件信息,包括资源描述(如内存、中断、DMA等)。

三、开发步骤与实例

详细阐述驱动和设备的开发步骤,并通过两个实例展示 Platform 总线匹配和资源读取的过程。

  1. 实例 1:测试 Platform_driver 和 Platform_device 的匹配成功。
  2. 实例 2:在设备结构体中增加硬件信息,并成功读取基址寄存器地址和中断号。

四、Platform_device 的管理

  • 在没有设备树的情况下,硬件信息存储在指定架构文件中。
  • 在有设备树的情况下,通过解析设备树初始化硬件信息。

五、总线相关知识点

介绍内核总线相关结构体 struct bus_type 及其关键成员,并详细解释 Platform 总线的匹配机制(通过名称匹配)。

六、注册代码流程详解

捋清代码调用流程,说明匹配函数与 probe 函数的调用时机。

文章总结:

本文系统性地讲解了 Platform 总线的核心概念和开发流程,适合嵌入式开发者深入理解 Linux 驱动开发机制。

一口Linux