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博客

相关推荐
TeYiToKu15 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
学习嵌入式的小羊~1 天前
linux驱动-i2c子系统框架学习(1)
linux·驱动开发
挨踢小明2 天前
DPDK eth 网卡驱动开发
驱动开发
TeYiToKu3 天前
笔记整理—linux驱动开发部分(6)platform平台总线
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件
学习嵌入式的小羊~4 天前
linux驱动-认识输入子系统源码以及裁剪
linux·驱动开发
学习嵌入式的小羊~6 天前
linux驱动—input输入子系统
驱动开发
深度学习渣6 天前
SCSI驱动与 UFS 驱动交互概况
驱动开发·交互
郁大锤6 天前
linux alsa-lib snd_pcm_open函数源码分析(一)
linux·驱动开发·嵌入式硬件·音频·pcm·视频编解码
郁大锤6 天前
linux alsa-lib snd_pcm_open函数源码分析(二)
linux·驱动开发·嵌入式硬件·音视频
weixin_750335527 天前
OpenHarmony驱动开发--UART(串口)驱动
驱动开发