首页 > 其他 > 详细

platform框架 学习总结

时间:2019-08-24 18:44:36      阅读:155      评论:0      收藏:0      [点我收藏+]

1,内核以实现总线,只需写驱动和设备的信息;

2,设备链表、驱动链表;总线完成链表匹配(name);驱动执行probe函数,向上层提供open、read、write接口需要在probe函数中注册字符设备驱动;在probe函数中根据设备信息操作硬件;ioremap物理地址映射成虚拟地址操作硬件;总线编译再内核中;设备提供信息(中断号/地址);

总线完成设备和驱动的匹配;

3,platform是一个虚拟的总线,platform中采用分离思想。将设备信息和设备驱动分离,在内核中所有的设备信息被放到一条链表中,设备驱动放到一条链表中。链表中的成员通过总线进行匹配,匹配成功后执行驱动中的probe函数。设备信息和设备驱动分离后会执行驱动中的remove函数。

4,设备端: 1.分配对象struct platform_device pdev;

      2.对象初始化struct platform_device {

              const  char   *name;//用于匹配的名字

              int       id; //总线号  -1

              struct  device  dev;//所有设备的父类

              u32     num_resources;//资源数

                   struct resource * resource;//资源结构体

            }

            struct device {

               void (*release)(struct device *dev);           

            }

            struct resource {

              resource_size_t start; //物理起始地址 0x0001a00

              resource_size_t end;  //物理结束地址 0x0001a00+20

              const char *name; //名字,一般不填

              unsigned long flags; //资源类型 IORESOURCE_IO/MEM

              

            }

      3.对象的注册 int platform_device_register(struct platform_device *pdev)

         对象的注销 void platform_device_unregister(struct platform_device *pdev)

      platform总线:它是有内核提供,提供设备和驱动端的注册和注销的方法,以及匹配过程。

    驱动端:1.分配对象 struct platform_driver pdrv;

      2.对象初始化 struct platform_driver {

              int (*probe)(struct platform_device *);//匹配成功执行的函数

              int (*remove)(struct platform_device *);//卸载一方执行的函数

 

              struct device_driver driver;

              const struct platform_device_id *id_table;//id_table 匹配方式

            };

            struct device_driver {

              const char  *name;//nema匹配方式

              struct module  *owner;

            };

      3.注册 int platform_driver_register(struct platform driver *);

         注销 void platform_driver_unregister(struct platform driver *);

platform框架 学习总结

原文:https://www.cnblogs.com/device/p/11405529.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!