pltaform_device[Linux嵌入式开发-Linux设备驱动开发]

`platform_device`是 Linux 设备驱动模型中的一个重要结构体,用于描述平台设备。它"继承"于`device`结构体,主要用来存储硬件使用的资源信息和一些容易变化的信息。

`platform_device`结构体的定义通常包含以下成员:

    • `const char *name`:设备的名字,用于和驱动进行匹配。
    • `struct device dev`:内核中维护的设备结构。
    • `u32 num_resources`:资源的个数。
    • `struct resource *resource`:描述资源的结构体指针。

其中,`struct resource`结构体用于描述具体的资源,包含资源的起始值`start`、结束地址`end`、资源类型`flags`等成员。常见的资源类型有表示内存的`ioresource_mem`(物理地址资源)和表示中断的`ioresource_irq`(中断号资源)。

要使用`platform_device`,通常需要进行以下步骤:

  1. 填充`struct platform_device`的各个成员,包括赋值设备名、填充`resource`结构变量以及设置`struct device dev`等。

  2. 使用相关函数进行注册,例如通过`platform_device_register(struct platform_device *)`函数注册设备。

通过使用`platform_device`,可以将那些没有挂在具体物理总线上的硬件,虚拟地认为挂在`platform`总线上,以达到统一管理和驱动的目的,方便了设备驱动的开发和管理。这样,内核中的驱动程序就可以通过匹配设备名等信息,来找到对应的`platform_device`,并进行相应的操作,例如资源的注册和初始化等。

在实际的驱动开发中,开发者需要根据具体的硬件特性,正确地设置`platform_device`的各个成员,并实现对应的`platform_driver`(平台设备驱动)中的相关函数(如`probe`、`remove`等),以完成对设备的驱动操作。

注册`platform_device`的具体过程可能会涉及到一些底层细节和相关的内核机制。如果你需要更详细的了解,可能需要深入研究 Linux 内核源码和相关的设备驱动开发文档。同时,不同的 Linux 系统版本和架构可能会有一些细微的差别,具体的实现也可能会有所不同。

Reference:

platform_device设备-CSDN博客

https://www.cnblogs.com/embInn/p/13034307.html

platform_device与platform_driver-CSDN博客

相关推荐
TangDuoduo00056 天前
【Linux SPI驱动开发】
驱动开发
The️6 天前
Linux驱动开发之Read_Write函数
linux·运维·服务器·驱动开发·ubuntu·交互
FserSuN6 天前
AI编程 - 规范驱动开发(SDD)学习
驱动开发·学习·ai编程
TangDuoduo00056 天前
【Linux I2C设备驱动】
linux·驱动开发
The️6 天前
Linux驱动开发之Open_Close函数
linux·运维·驱动开发·mcu·ubuntu
LCG元7 天前
嵌入式GUI设计:STM32F429+LVGL,智能仪表盘界面开发指南
驱动开发·stm32·嵌入式硬件
小龙报7 天前
【51单片机】 给单片机加 “安全锁”!看门狗 WDT:原理 + 配置 + 复位验证全拆解,让程序稳定不跑飞
驱动开发·stm32·单片机·嵌入式硬件·物联网·51单片机·硬件工程
码农编程录7 天前
【notes12】kbuild,内核模块化,字符设备驱动,设备树,platform总线,设备驱动模型
驱动开发
乔碧萝成都分萝7 天前
二十六、IIO子系统 + SPI子系统 + ICM20608
linux·驱动开发·嵌入式
A星空1238 天前
二、交叉编译工具链(arm-linux-gnueabihf-gcc)安装与验证,搭建 TFTP+NFS 服务,调试开发板网络连通性;
linux·c++·驱动开发·单片机·嵌入式硬件