zz Linux上Platform device and driver介绍

转载 2011年01月24日 16:19:00

计算机上的设备都是连接到bus上的而我们知道一颗CPU它的端口数目是有限,各种各样的设备直接连接CPU的bus上是无法想象的,这直接导致计算机总 线的发展。对于解决 这个瓶颈的办法是让一个中间人负责对CPU总线时分复用,其余的设备大都不是直接连接到CPU bus上的而是连在中间人那里。列举个最著名的“中间人”:PCI总线。理由很简单通用PC几乎清一色PCI总线,置于PCI总线我不做介绍。我要介绍的 是Linux 下描述直接连接CPU bus的机制以及它与driver 之间的关系。

    Platform . device 是linux上一种具有自我管理 功能的一个subsystem。它包含了一些基于port的legacy device以及一些host bridge 连接外部总线的设备再者就是embedded system中的许多设备也是platform. device。不管是什么设备,只要它属于platform. device都有一个共同的特点:
       CPU bus直接寻址!
还有一种很少的情况:platform. device连接在其他bus的某个segment上但是它的registers是直接寻址的!

    Plarform  device会有一个名字用于driver binding(在注册driver的时候会查找driver的目标设备的bus位置,这个过程称为driver binding),另外IRQ以及地址空间 等资源也要给出 。下面给出platform  device的相关数据 结构:
struct platform_device {
        const char      *name;
        u32             id;
        struct device   dev;
        u32             num_resources;
        struct resource *resource;
};
     Platform. device是一种device自己是不会做事情的,要有人为它做事情,那就是platform. driver。下面介绍platform. driver。

    platform. driver遵循linux系统的driver model(这个内容是很大的内容有兴趣的可以自己学习 )。对于device的discovery/enumerate都不是driver自己完成的而是 有由系统 的driver注册机制完成。driver编写人员只要将注册必须的数据结构初始化并调用注册driver的kernel API就可以了。以下是driver的数据结构:
struct platform_driver {
        int (*probe)(struct platform_device *);
        int (*remove)(struct platform_device *);
        void (*shutdown)(struct platform_device *);
        int (*suspend)(struct platform_device *, pm_message_t state);
        int (*suspend_late)(struct platform_device *, pm_message_t state);
        int (*resume_early)(struct platform_device *);
        int (*resume)(struct platform_device *);
        struct device_driver driver;
};

API:
int platform_device_register(struct platform_device *pdev);
int platform_add_devices(struct platform_device **pdevs, int ndev);
int platform_driver_register(struct platform_driver *drv);

更为详尽的信息可以查看Linuxkernel以及driver方面的书籍。

Linux Platform Device and Driver .

作者 : YiLi Xie    yili.xie@gmail.com 日期 : 2010-1-13 欢迎转载,请注明出处     从 Linux 2.6 起引入了一套新的驱动管理和注册机制...
  • ayangke
  • ayangke
  • 2011年09月23日 19:27
  • 1127

30、Linux Platform Device and Driver

作者: Dongas 日期: 08-06-27   从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Platform_device 和 Platform_driver 。 ...
  • mianyy
  • mianyy
  • 2011年08月23日 17:54
  • 417

Linux Platform Device and Driver

Linux Platform Device and Driver 来源: ChinaUnix博客  日期: 2008.06.27 19:54 (共有0条评论) 我要评论 Linux Platform ...
  • batoom
  • batoom
  • 2011年03月06日 23:02
  • 541

操作系统_再识(Linux Platform Device and Driver)

Linux Platform Device and Driver     Linux Platform Device and ...

linux平台设备驱动架构详解 Linux Platform Device and Driver

从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platfor...

linux平台设备驱动架构详解 Linux Platform Device and Driver——神文,非常详细

https://www.cnblogs.com/lifan3a/articles/5045447.html https://www.cnblogs.com/lifan3a/articles/5045...
  • STN_LCD
  • STN_LCD
  • 2017年12月07日 17:02
  • 16

LINUX平台设备(linux platform_device and platform_driver)

LINUX平台设备(linux platform_device and platform_driver)   2011-10-08 09:05:33|  分类: Android测试 |  标签:...

platform driver and device学习笔记

-v0.1 2014.3.4 *** 以gpio驱动为中心,整理设备模型和设备树, 只是整理了gpio                      驱动的注册过程, gpio的驱动见driver/gpi...

linux下的platform模型【device & driver】

linux platform设备驱动【driver& device】  一、platform模型      在PC设备中,对于USB和PCI(Peripheral Component Interco...

Platform device and platform driver

Platform device是专门给嵌入式系统设计的设备类型,一般在移植内核到自己的开发板时,基本上注册的所有的设备的类型全是platform device。实际上,platform在Linux内核...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zz Linux上Platform device and driver介绍
举报原因:
原因补充:

(最多只允许输入30个字)