Linux驱动-platform总线详解
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
一口Linux
扫码关注公众号
扫码阅读
手机扫码阅读
文章主旨:
本文详细讲解了 Linux 平台总线(platform bus)的概念、相关结构体、注册流程及开发步骤。
关键要点:
- Platform 总线是一种虚拟总线,用于管理 SoC 上的片上资源,与 CPU 总线直接取址。
- Platform 总线的设备通过
platform_device表示,驱动通过platform_driver注册。 - 开发步骤包括设备注册(
platform_device_register)和驱动注册(platform_driver_register),两者的名称需一致以便匹配。 - 通过实例展示了 Platform 总线如何匹配设备与驱动,并读取设备资源信息。
- 详细列举了与 Platform 总线相关的结构体及其成员的用途,如
struct resource和struct bus_type。
内容结构:
一、概念
介绍 Platform 总线的定义、功能及与物理总线的区别。Platform 总线主要用于描述 SoC 上的片上资源,通过虚拟总线进行统一管理,提升代码安全性和可移植性。
二、Platform 总线核心结构体
- Platform_driver:用于注册驱动到 Platform 总线,包含
probe、remove等关键函数指针和驱动匹配信息。 - Platform_device:用于描述设备硬件信息,包括资源描述(如内存、中断、DMA等)。
三、开发步骤与实例
详细阐述驱动和设备的开发步骤,并通过两个实例展示 Platform 总线匹配和资源读取的过程。
- 实例 1:测试 Platform_driver 和 Platform_device 的匹配成功。
- 实例 2:在设备结构体中增加硬件信息,并成功读取基址寄存器地址和中断号。
四、Platform_device 的管理
- 在没有设备树的情况下,硬件信息存储在指定架构文件中。
- 在有设备树的情况下,通过解析设备树初始化硬件信息。
五、总线相关知识点
介绍内核总线相关结构体 struct bus_type 及其关键成员,并详细解释 Platform 总线的匹配机制(通过名称匹配)。
六、注册代码流程详解
捋清代码调用流程,说明匹配函数与 probe 函数的调用时机。
文章总结:
本文系统性地讲解了 Platform 总线的核心概念和开发流程,适合嵌入式开发者深入理解 Linux 驱动开发机制。
一口Linux
一口Linux
扫码关注公众号