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

相关推荐
lisw052 小时前
当生物阻抗遇上生物力学:EIM技术实现肌肉状态精准感知
驱动开发·信号处理
泡海椒14 小时前
JQuick-Excel 自定义 SPI Provider:用 fullName 扩展 TRANSFORM 函数
驱动开发·excel
一 铭17 小时前
Pi实战 12:TDD 测试驱动篇——用 Pi 做测试驱动开发
驱动开发·tdd
kmomo..1 天前
Linux 驱动开发学习笔记:UART、触摸屏与 ADC 驱动实战
linux·驱动开发·学习
catino1 天前
SDD:规范驱动开发(Spec-Driven Development)
驱动开发·ai
ABB自动化2 天前
带二期控制的PowerFlex 700S驱动器
驱动开发·制造·信息与通信·模块测试·plc 控制器
额额额对了2 天前
Linux 驱动开发:基于 platform 总线 + misc 设备的 DS18B20 单总线温度驱动
linux·c语言·开发语言·驱动开发·嵌入式硬件
lhh_qrsly2 天前
三、三相霍尔传感器(BLDC / 带霍尔 PMSM)
驱动开发
幼儿园蛋小黄2 天前
嵌入式学习总结:从 I2C 到 SPI 的驱动开发实战
驱动开发·学习
老当益壮梁奶奶2 天前
驱动学习(二):从零开始:驱动工程搭建与字符设备驱动框架详解(基于IMX6ULL)
c语言·arm开发·驱动开发·嵌入式硬件·学习