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

相关推荐
世微 如初12 天前
AP5125大功率LED恒流驱动实战:地摊灯项目从原理图到调试笔记
驱动开发·芯片·led电源驱动·降压恒流ic
ScilogyHunter12 天前
Zephyr串口驱动开发及构建完全指南
驱动开发·uart·zephyr
_Emma_12 天前
【DRM&Graphic】Linux图形与显示框架
linux·驱动开发·图形渲染·显示器
董厂长12 天前
Loop Engineering:停止手动提示,开始设计自动提示的系统
大数据·人工智能·驱动开发·llm
Saniffer_SH13 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
暮云星影13 天前
全志linux开发屏幕适配(二)`HDMI`驱动适配说明
linux·arm开发·驱动开发
charlie11451419113 天前
嵌入式Linux驱动开发——从轮询到中断
linux·开发语言·驱动开发·嵌入式
暮云星影13 天前
瑞芯微rk3566开发FIT Secure Boot
linux·arm开发·驱动开发·安全
暮云星影13 天前
全志linux开发 USB接口设置
linux·arm开发·驱动开发
sukalot13 天前
windows显示驱动开发-CCD DDI的其它技术
windows·驱动开发