platform设备驱动框架
驱动框架
通过使用platform设备驱动框架,实现led驱动与设备操作的分离。
 
 
我们关注led_drv里面的 struct platform_driver led_drv里面的.probe函数,当有同名的device注册到内核,将运行这个driver的probe函数(同名的:led_dev里面的struct platform_device led_dev里面的.name与 struct platform_driver led_drv里面的.name一一对应)。
 
 
led_dev.c
1
			
 5
			
20
			
21          []                  .start                          .end                          .flags                 },
27
			
28         []                  .start                          .end                          .flags                 }
33 };
34
			
35  {
37
			
38 }
39
			
40          .name                                  .id                                  .num_resources                  .resource                         .dev                  .release          }
48 };
49
			
50
			
51  {
53         platform_device_register(         ;
55 }
56
			
57
			
58  {
60         platform_device_unregister(          }
63
			
64 module_init(led_dev_init);
65 module_exit(led_dev_exit);
66 MODULE_LICENSE("GPL");
 
 
 
 
led_drv.c
1
			
  5
			
 20
			
 21
			
 22
			
 24
			
 27
			
 30
			
 32
			
 33  {
 35                                    ;
 39 }
 40
			
 41
			 {
 44         
			
 46         copy_from_user(                  {
 49                          }
 51                                   }
 54         ;
 55 }
 56
			
 57          .owner                  .open                  .write         };
 62
			
 63  {
 65         
			
 67         printk(         
 69                  res );
 71         gpioctl          gpiodat
			
 74         res );
 75         led_pin
			
 77                  major ,
			
 80         led_class
			
 82                  led_class_dev ),
			
 85         ;
 86 }
 87
			
 88  {
 90         printk(         
			
 93                  unregister_chrdev(major,          class_device_unregister(led_class_dev);
 96         class_destroy(led_class);
 97
			
 98                  iounmap(gpioctl);
100
			
101         ;
102 }
103
			
104          .probe                  .remove          .driver                  .name                  }
110 };
111
			
112  {
114         platform_driver_register(         ;
116 }
117
			
118  {
120         platform_driver_unregister(          }
123
			
124 module_init(led_drv_init);
125 module_exit(led_drv_exit);
126 MODULE_LICENSE("GPL");
 
 
app.c
1
			
 6  {
 8                                    
12         printf(                  {
15                 printf(                          }
18         
19         filename ];
20         
21         printf(         
23         fd                   {
26                 printf(                          }
29         
30                  ]))
32         {
33                 val                  write(fd, );
35         }
36                  ]))
38         {        
39                 val                  write(fd, );
41         }
42         ;        
43 }
 
 
Makefile
1
			
 3          make -C
				
 6          make -C          rm -rf modules.order
 9
			
10 obj-m += led_drv.o
11 obj-m +=
			led_dev.o
platform设备驱动框架的更多相关文章
- Linux设备驱动框架设计
		
引子 Linux操作系统的一大优势就是支持数以万计的芯片设备,大大小小的芯片厂商工程师都在积极地向Linux kernel提交设备驱动代码.能让这个目标得以实现,这背后隐藏着一个看不见的技术优势:Li ...
 - Linux内核驱动学习(四)Platform设备驱动模型
		
Linux platform设备驱动模型 文章目录 Linux platform设备驱动模型 前言 框架 设备与驱动的分离 设备(device) 驱动(driver) 匹配(match) 参考 前言 ...
 - Linux 设备驱动开发 —— platform设备驱动应用实例解析
		
前面我们已经学习了platform设备的理论知识Linux 设备驱动开发 —— platform 设备驱动 ,下面将通过一个实例来深入我们的学习. 一.platform 驱动的工作过程 platfor ...
 - 一步步理解linux字符设备驱动框架(转)
		
/* *本文版权归于凌阳教育.如转载请注明 *原作者和原文链接 http://blog.csdn.net/edudriver/article/details/18354313* *特此说明并保留对其追 ...
 - 宋宝华:Linux设备驱动框架里的设计模式之——模板方法(Template Method)
		
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前言 <设计模式>这本经典 ...
 - Linux内核的LED设备驱动框架【转】
		
/************************************************************************************ *本文为个人学习记录,如有错 ...
 - RT Thread的SPI设备驱动框架的使用以及内部机制分析
		
注释:这是19年初的博客,写得很一般,理解不到位也不全面.19年末得空时又重新看了RTThread的SPI和GPIO,这次理解得比较深刻.有时间时再整理上传. -------------------- ...
 - platform设备驱动全透析
		
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://21cnbao.blog.51cto.com/109393/337609 1.1 ...
 - 【linux设备模型】之platform设备驱动
		
一.platform总线.设备和驱动 platform是一种虚拟总线,对应的设备称为platform_device,对应的驱动称为platform_driver. platform_devic ...
 
随机推荐
- 【PAT甲级】1027 Colors in Mars (20 分)
			
题意: 输入三个范围为0~168的整数,将它们从十三进制转化为十进制然后前缀#输出. AAAAAccepted code: #define HAVE_STRUCT_TIMESPEC #include& ...
 - redhat 7.6 VI编辑操作
			
模式一: 浏览模式 0 : 光标到行首 $ : 光标到行尾 gg:光标到首行 G:光标到尾行 yy:复制光标所在行 dd:剪切光标所在行,删除行 y11y:复制光标所在行,往下数,一共10行 p:粘贴 ...
 - Hive的存储和MapReduce处理——数据清洗(Part2)
			
日期:2019.11.14 博客期:116 星期四 基本的处理类 import java.sql.Connection; import java.sql.DriverManager; import j ...
 - Shenandoah 与 ZGC
			
简介 Shenandoah GC 与 ZGC 同为新一代的低延迟收集器, 分别由RedHat和Oracle开发, 目前还在实验阶段, 尚未使用于生产环境. GC的三项指标: Footprint(内存占 ...
 - nginx 安装部署前篇
			
官网:https://nginx.org/ 特性:既可以作为HTTP服务器,也可以作为反向代理服务器或者邮件服务器或者邮件服务器:能够快递响应静态页面的请求:支持 Fast CGI.SSL.Virtu ...
 - Windows驱动开发-IoCompleteRequest
			
IoCompleteRequest 例程表示调用者的已经完成了对指定I/O请求的所有处理操作,并且向I/O管理器返回指定的IRP报文. //函数原型 VOID IoCompleteRequest( I ...
 - 移动互联网APP测试流程及测试点
			
1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先向主管确认项目排期. 1.3测试资源 测 ...
 - Redis详解(二)——AOF
			
Redis详解(二)--AOF 前言 RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失).对于数据完整性要求很严格的需求 ...
 - 103、Java中String类之compareTo()方法
			
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
 - Unity内置shader 下载
			
Unity内置shader 4.3.1 版本的 其他版本可以自己修改名称 下载地址 http://download.unity3d.com/download_unity/builtin_shade ...