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");
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");
就会注册成功简单的drv、dev。
现在使用第二种匹配方式。
以上是关于Linux-3.5_platform学习与理解的主要内容,如果未能解决你的问题,请参考以下文章
BIOS MCSDK 2.0 学习笔记————使用Platform Library创建工程