`
izuoyan
  • 浏览: 9221717 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Linux驱动中的platform

阅读更多

Linux2.6内核起,引入一套新的驱动管理和注册机制:platform_device platform_driver Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_device 表示;驱动用 platform_driver 进行注册。

Linux platform driver 机制和传统的device driver机制(即:通过 driver_register 函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中用使用这些资源时,通过platform device提供的标准接口进行申请并使用。

platform 是一个虚拟的地址总线,相比 PCIUSB,它主要用于描述SOC上的片上资源。platform 所描述的资源有一个共同点:在CPU 的总线上直接取址。平台设备会分到一个名称(用在驱动绑定中)以及一系列诸如地址和中断请求号(IRQ)之类的资源。

platform 总线下驱动的开发步骤是:

1、 设备

需要实现的结构体是:platform_device

1)初始化 resource 结构变量

2)初始化 platform_device 结构变量

3)向系统注册设备:platform_device_register

以上三步,必须在设备驱动加载前完成,即执行platform_driver_register()之前,原因是驱动注册时需要匹配内核中所有已注册的设备名。platform_driver_register()中添加device到内核最终还是调用的device_add函数。Platform_device_adddevice_add最主要的区别是多了一步insert_resource(p, r)即将platform资源(resource)添加进内核,由内核统一管理。

2、驱动

驱动注册中,需要实现的结构体是:platform_driver

在驱动程序的初始化函数中,调用了platform_driver_register()注册 platform_driver 。需要注意的是:platform_driver platform_device 中的 name 变量的值必须是相同的 。这样在 platform_driver_register() 注册时,会将当前注册的 platform_driver 中的 name 变量的值和已注册的所有 platform_device 中的 name 变量的值进行比较,只有找到具有相同名称的 platform_device 才能注册成功。当注册成功时,会调用 platform_driver 结构元素 probe 函数指针。

platform_driver_register()注册过程:

1 platform_driver_register(&s3c2410fb_driver)

2 driver_register(&drv->driver)

3 bus_add_driver(drv)

4 driver_attach(drv)

5 bus_for_each_dev(drv->bus, NULL, drv, __driver_attach)

6 __driver_attach(struct device * dev, void * data)

7 driver_probe_device(drv, dev)

8 really_probe(dev, drv)

really_probe()中:为设备指派管理该设备的驱动:dev->driver = drv, 调用probe()函数初始化设备:drv->probe(dev)

分享到:
评论

相关推荐

    linux下的platform驱动

    在Linux操作系统中,Platform驱动是一种特殊的设备驱动程序,主要用于与SoC(System on Chip)相关的硬件交互。平台驱动是Linux内核中一个重要的组件,它为各种非标准接口的硬件设备提供支持,如处理器、GPIO、中断...

    Linux中platform设备驱动全透析

    本文深入探讨了Linux中platform设备驱动的设计与实现,特别针对Linux 2.6版本进行了透彻的分析,强调了平台总线、平台设备和平台驱动在设备驱动模型中的作用和相互关系。 首先,Linux的设备驱动模型是围绕总线、...

    platform平台设备_railroadzts_q_linux驱动_platform驱动_

    本文将深入探讨“platform平台设备”的工作流程,解析关键函数,并结合“railroadzts”和“q”这两个概念,来进一步理解在Linux驱动开发中的应用。 首先,平台设备驱动涉及到的主要流程包括设备注册、设备探测、...

    基于嵌入式Linux的platform驱动设计与应用.pdf

    Platform驱动设计与应用是嵌入式Linux系统开发中的重要环节,它简化了非标准总线设备的驱动开发和管理。通过理解平台总线架构,可以更高效地开发和维护设备驱动,提升系统性能和稳定性。在实际项目中,开发者需要...

    Linux 驱动PlatForm平台总线详解

    Platform 驱动在 Linux 内核中,用 platform_driver 结构体表示。该结构体定义了平台设备驱动注册函数和平台设备驱动注销函数。platform_driver 结构体定义在文件 include/linux/platform_device.h 中。 Platform ...

    Linux嵌入式platform驱动模块modules_platform_dirver

    在Linux系统中,平台驱动(Platform Driver)是用于与特定硬件设备交互的一种内核模块,主要服务于嵌入式系统。平台驱动模型是Linux内核为了简化...理解并熟练掌握这一机制,对于Linux驱动程序的开发和维护至关重要。

    Linux设备驱动+platform驱动框架示例代码

    平台驱动(Platform Driver)是Linux内核中一种特殊的设备驱动,主要用于处理SoC(System on Chip)系统中的各种片上外围设备。本资源提供的"Linux设备驱动+platform驱动框架示例代码"旨在帮助开发者理解和学习如何...

    linux platform总线驱动开发实例

    Linux驱动模型包括设备模型和总线模型。设备模型负责组织和管理所有设备,而总线模型则定义了设备如何与总线通信。平台总线是其中一种总线模型,它不依赖于传统的PCI、ISA等物理总线。 3. **平台驱动结构** 平台...

    linux 驱动开发中文版(超值)

    Linux驱动开发是操作系统核心与硬件设备之间的重要桥梁,它使得硬件功能得以在Linux系统中有效利用。本资源“Linux驱动开发中文版(超值)”提供了深入浅出的讲解,帮助开发者理解并掌握Linux驱动程序的编写技巧。...

    Linux驱动修炼之道-platform

    标题和描述均提到了“Linux驱动修炼之道-platform”,这表明文章的主题聚焦于Linux平台驱动的开发,特别是关于如何理解和操作Linux内核中的platform子系统。平台(Platform)模型是Linux内核用于处理嵌入式系统中...

    at24cxx.rar_AT24Cxx linux_at24c02 linux_at24c02驱动_linux at24c02_

    在Linux内核中注册驱动程序通常需要调用`platform_driver_register()`函数,它会将驱动添加到平台设备驱动列表中。同时,为了使驱动能够找到对应的设备,需要在设备树配置文件中声明这个设备。设备树是描述硬件结构...

    Linux驱动程序开发实例2版源码.zip

    Linux驱动程序开发是嵌入式系统和服务器领域中不可或缺的一部分,它涉及到操作系统内核与硬件设备之间的交互。《Linux驱动程序开发实例2》是一本专为想要深入理解Linux驱动编程的开发者编写的书籍,提供了丰富的实践...

    Linux驱动程序中的platform总线详解[归类].pdf

    本文将详细讲解Linux驱动程序中的platform总线及其相关概念。 平台总线(platform bus)主要服务于那些不依赖于如PCI、USB、I2C或SPI等传统物理总线的设备,例如SoC系统中集成的独立外设控制器,如I2C控制器、LCD...

    Linux常见驱动源码分析(kernel hacker修炼之道全集)--李万鹏

    Linux驱动修炼之道-platform.pdf Linux驱动修炼之道-LCD背光与gpio控制.pdf Linux驱动修炼之道-INPUT子系统(下).pdf Linux驱动修炼之道-INPUT子系统(上).pdf Linux驱动修炼之道-framebuffer(中).pdf ...

    Linux驱动开发入门

    Linux驱动开发是操作系统与硬件设备之间的桥梁,对于深入理解Linux系统和进行系统级优化至关重要。本文将基于"Linux驱动开发入门"这一主题,为初学者...在实践中不断探索和积累,才能逐步深入理解Linux驱动开发的精髓。

    linux platform 驱动程序模版

    在Linux操作系统中,平台驱动程序(Platform Driver)是一种特殊的设备驱动,主要负责与系统中的片上系统(SoC,...通过理解和利用这个模版,开发者可以更好地理解Linux驱动的工作机制,提升软件和硬件的协同效率。

    linux 设备驱动模型platform driver与driver

    根据源码分析整理的linux platfom driver与device driver的关系,对初学者有较大的帮助

    platform机制的驱动模型

    平台(Platform)机制的驱动模型是Linux内核中处理设备驱动的一种方式,尤其在Linux 2.6版本之后被广泛采用。这种机制主要用于管理CPU的片上资源,如GPIO、I2C控制器、UART等,具有良好的可移植性。 1. **什么是...

    Linux驱动开发.zip

    在IT行业中,Linux驱动开发是嵌入式系统领域的一个重要组成部分。这个领域的专家们负责创建、维护和优化设备驱动程序,这些程序使得操作系统能够与硬件设备进行通信,从而发挥硬件的功能。"Linux驱动开发.zip"可能...

Global site tag (gtag.js) - Google Analytics