驱动-平台总线-platform设备注册platform驱动注册篇

先了解一下从整体角度了解 平台总线


前言

平台总线(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 {
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野火少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值