zoukankan      html  css  js  c++  java
  • platform device和platform driver简述

    首先我们在module_init中使用platform_driver_register来注册我们的驱动。一般来说platform_driver_register放在module_init的最后调用,因为platform_driver_register如果检测到有归属于该驱动的device就会去调用你驱动里的probe,probe完结后platform_driver_register才会返回,所以在注册驱动前要先把device number, class这些东西先注册上,probe里要用的。

    module_init的基本工作(假定是char dev):

    int mymodule_init()
    {
        alloc_chrdev_region(...);
        class_create(...);
        platform_driver_register(...);
    }

    如果有ID match上的话platform_driver_register就会调用probe:

    platform device基本上就是用来描述你写在device tree里的那些东西。

    以下两个函数用于设置/获取设备相关的数据(可以理解为类似WDM中的DEVICE_EXTENSION):

    platform_set_drvdata(struct platform_device *pdev, void *data);
    
    void *platform_get_drvdata(struct platform_device *pdev);

    如果你的设备使用中断:

    int irq = platform_get_irq(pdev, 0);
    request_irq(irq, ...);

    如果设备使用两个或以上中断,那么platform_get_irq的第二参数分别是0, 1, ...。

    当然对应的中断向量ID要事先写在device tree里面。device tree中的中断向量ID和platform_get_irq返回的irq一般来说是不一样的。

  • 相关阅读:
    doT js模板入门
    @SuppressWarnings忽略警告
    SQL注入
    【转】Oracle 执行动态语句
    连接数据库——模拟ATM机查、存、取、开户功能
    Oracle 函数中动态执行语句
    PowerDesigner建表
    数据库表设计—水电费缴费系统
    GUID全局唯一标识符相关知识了解
    Oracle数据库建表+添加数据练习
  • 原文地址:https://www.cnblogs.com/byeyear/p/3314449.html
Copyright © 2011-2022 走看看