Linux-3.5_platform学习与理解

Posted jason-linux

tags:

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

参考手册:linux-3.5/Documentation/driver-model/platform.txt

技术图片

技术图片

 开始写简单的demo,先使用第三种匹配规则。

技术图片
 1 #include <linux/module.h>
 2 #include <linux/init.h>
 3 #include <linux/syscalls.h>
 4 #include <linux/io.h>
 5 #include <linux/uaccess.h>
 6 
 7 #include <linux/platform_device.h>
 8 
 9 static void demo_release(struct device *dev)
10 {
11     struct platform_device *pdev = to_platform_device(dev);
12 
13     printk("%s device is released....
", pdev->name);
14 }
15 
16 static struct platform_device pltdev1 = {
17     .name    =  "flower",    
18     .id    =  -1,
19     .dev    =    {
20         .release =  demo_release,    
21     },
22 };
23 
24 module_driver(pltdev1, platform_device_register, platform_device_unregister);
25 
26 MODULE_LICENSE("GPL");
27 
28 MODULE_AUTHOR("no name");
29 MODULE_VERSION("J-15");
30 MODULE_DESCRIPTION("a simple demo for driver module");
dev1.c
技术图片
 1 #include <linux/module.h>
 2 #include <linux/init.h>
 3 #include <linux/syscalls.h>
 4 #include <linux/io.h>
 5 #include <linux/uaccess.h>
 6 
 7 #include <linux/platform_device.h>
 8 
 9 #define to_platform_driver(drv)    (container_of((drv), struct platform_driver, 10                  driver))
11 static int plt_probe(struct platform_device *pdev)
12 {
13     struct platform_driver *pdrv = to_platform_driver(pdev->dev.driver);
14 
15     printk("%s driver do %s device ...
", 
16             pdrv->driver.name, pdev->name);
17 
18     return 0;
19 }
20 
21 static int plt_remove(struct platform_device *pdev)
22 {
23     struct platform_driver *pdrv = to_platform_driver(pdev->dev.driver);
24 
25     printk("%s driver remove %s device ...
", 
26             pdrv->driver.name, pdev->name);
27 
28     return 0;
29 }
30 
31 static struct platform_driver pltdrv1 = {
32     .probe    =  plt_probe,
33     .remove    =  plt_remove,
34     .driver    =  {
35         .name    =  "flower",
36     }
37 };
38 
39 module_platform_driver(pltdrv1);
40 
41 MODULE_LICENSE("GPL");
42 
43 MODULE_AUTHOR("no name");
44 MODULE_VERSION("J-15");
45 MODULE_DESCRIPTION("a simple demo for driver module");
drv1.c

就会注册成功简单的drv、dev。

 

 

现在使用第二种匹配方式。

 

以上是关于Linux-3.5_platform学习与理解的主要内容,如果未能解决你的问题,请参考以下文章

学习/linux/list.h_双链表实现

Spring IO Platform的理解与示例

BIOS MCSDK 2.0 学习笔记————使用Platform Library创建工程

python学习之platform模块

Java基础__慕课网学习(24):深入理解抽象类与接口(转)

《深入理解TensorFlow架构设计与实现原理》_彭靖田学习材料整理