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一般来说是不一样的。

  • 相关阅读:
    Java 集合类
    Java 中的四种引用及垃圾回收策略
    Java 类的加载过程(阿里面试题)
    JMeter进行一次简单的压力测试
    python使用 HTMLTestRunner.py生成测试报告
    python读取配置文件
    python的IDE工具-- Pycharm
    selenium webdriver+python基本操作
    SQL开发测试使用基础
    python学习笔记
  • 原文地址:https://www.cnblogs.com/byeyear/p/3314449.html
Copyright © 2011-2022 走看看