先了解一下从整体角度了解 平台总线
文章目录
前言
平台总线(Platform Bus)是 Linux 内核中用于管理那些不直接连接到标准物理总线(如 PCI、USB 等)的设备的一种虚拟总线机制。它主要用于片上系统(SoC)中的外设和伪设备。
一、概念-什么是平台总线
-
平台总线(Platform Bus)是 Linux 内核中用于管理那些不直接连接到标准物理总线(如 PCI、USB 等)的设备的一种虚拟总线机制。它主要用于片上系统(SoC)中的外设和伪设备。
-
当系统注册一个平台设备时, 平台总线会寻找与之匹配的平台驱动。 它会遍历已注册的平
台驱动列表, 尝试与每个平台驱动进行匹配, 直到找到与平台设备匹配的驱动为止。 一旦找到
匹配的驱动, 平台总线会将平台设备与平台驱动进行绑定, 使得设备可以被正确地初始化和操
作。 -
当系统注册一个平台驱动时, 平台总线会寻找与之匹配的平台设备。 它会遍历已
注册的平台设备列表, 尝试与每个平台设备进行匹配, 直到找到与平台驱动匹配的设备为止。
一旦找到匹配的设备, 平台总线会将平台设备与平台驱动进行绑定, 使得驱动可以管理和控制
与该设备相关的操作。
设备、 平台总线、 驱动的关系如下图 所示

平台总线的组成
- 平台设备(Platform Device):表示系统中实际存在的设备或虚拟设备。
- 平台驱动(Platform Driver):与平台设备对应的驱动程序。
- 平台总线(Platform Bus):一个虚拟总线,负责匹配平台设备和平台驱动。
二、参考资料
平台总线模型介绍
注册platform设备实验
注册platform驱动实验
Linux platform子系统-总线详解
Linux —— 驱动——platform平台总线
platform平台总线
Linux设备驱动模型之platform(平台)总线详解
三、Platform Driver/Device API 和结构体
Platform Device 相关
struct platform_device
- 表示一个平台设备
- 主要成员
const char *name; // 设备名称
int id; // 设备ID
struct device dev; // 内嵌的设备结构
struct resource *resource; // 设备资源(如内存、IRQ等)
unsigned int num_resources;// 资源数量
struct resource
- 描述设备资源(内存区域、中断号等)
- 主要成员
resource_size_t start; // 起始地址/中断号
resource_size_t end; // 结束地址
const char *name; //资源的名称
unsigned long flags; // 资源类型标志
资源类型相关标志位
- IORESOURCE_IO: 表示资源是 I/O 端口资源。
- IORESOURCE_MEM: 表示资源是内存资源。
- IORESOURCE_REG: 表示资源是寄存器偏移量。
- IORESOURCE_IRQ: 表示资源是中断资源。
- IORESOURCE_DMA: 表示资源是 DMA( 直接内存访问) 资源。
Platform Driver 相关
struct platform_driver
- 表示一个平台驱动
- 主要成员
int (*probe)(struct platform_device *); // 设备探测函数
int (*remove)(struct platform_device *); // 设备移除函数
void (*shutdown)(struct platform_device *); // 设备关闭函数
int (*suspend)(struct platform_device *, pm_message_t state); // 挂起
int (*resume)(struct platform_device *); // 恢复
struct device_driver driver; // 内嵌的驱动结构
platform_driver
struct platform_driver {

最低0.47元/天 解锁文章
355

被折叠的 条评论
为什么被折叠?



