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

相关推荐
木木_王4 小时前
嵌入式学习 | STM32裸板驱动开发(Day01)入门学习笔记(超详细完整版|点灯实验 + 库函数代码 + 原理全解)
linux·驱动开发·笔记·stm32·学习
小+不通文墨7 小时前
树莓派4b-wiringpi库的安装和使用
驱动开发·经验分享·笔记·嵌入式硬件·学习
披着假发的程序唐9 小时前
STM32 H743 MPU的配置使用方法
linux·c语言·c++·驱动开发·stm32·单片机·mcu
枳实-叶9 小时前
【Linux驱动开发】第7天:总线-设备-驱动三大核心模型:通俗讲解+完整流程图
linux·驱动开发·流程图
枳实-叶1 天前
【Linux驱动开发】第6天:互斥锁mutex/自旋锁spinlock+驱动全流程+应用测试程序
linux·驱动开发
nuoxin1141 天前
SSD201-富利威
arm开发·驱动开发·fpga开发·ffmpeg·射频工程
2601_949695591 天前
电脑鼠标一卡一卡的原因是什么?附详细排查步骤
驱动开发·计算机外设·电脑
颖火虫盟主2 天前
规范驱动开发(Spec-Driven Development)
驱动开发
charlie1145141913 天前
嵌入式Linux驱动开发——新 API 字符设备驱动完整教程 - 从设备结构体到应用测试
linux·运维·驱动开发
长安第一美人3 天前
RT-Thread 工业屏驱动开发实战:UART 串口屏协议解析 + 数据实时刷新 + 设备驱动框架完整实现
驱动开发·嵌入式硬件·rt-thread·工业控制·uart通信·串口屏驱动