platform_device 框架 学习总结

Posted device

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了platform_device 框架 学习总结相关的知识,希望对你有一定的参考价值。

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 *);

5,驱动端获取设备信息的函数

  struct resource *platform_get_resource(struct platform_device *dev,unsigned int type, unsigned int num)

参数1:pdev;参数2:资源类型;参数3:第几个资源。

返回值:成功返回设备信息结构体,失败返回NULL

以上是关于platform_device 框架 学习总结的主要内容,如果未能解决你的问题,请参考以下文章

深入解析Linux Platform_device 及驱动

框架学习系列 之Spring框架学习总结

框架学习系列 之Struts2框架学习总结

框架学习系列 之Struts2框架学习总结

集合框架— —学习总结

学期学习情况总结