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 ...
随机推荐
- 【剑指Offer面试编程题】 题目1350:二叉树的深度--九度OJ
题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 输入: 第一行输入有n,n表示结点数,结点号从1到n.根结点为1. ...
- 第1节 Scala基础语法:5、6、7、8、基础-申明变量和常用类型,表达式,循环,定义方法和函数
4. Scala基础 4.1. 声明变量 package cn.itcast.scala object VariableDemo { def main(args: Array[Strin ...
- ORACLE varchar2类型的字段更改为clob
将varchar2类型字段改成clob类型 --增加临时新字段 alter table base_temp add temp clob; --将需要改成大字段的项内容copy到大字段中updat ...
- Eclipse中java代码注释变成乱码的问题
今天在查看曾经写过的代码时发生了一件很是让人头疼的事: 我写的所有注释全部都变成了了乱码,曾经刚入门时也是经常遇到类似的问题,解决起来很快,每天可能都会在工作空间里看到,但是随着时间的推移,写代码的规 ...
- in comment after two dashes (--) next character must be > not - (position: START_TAG seen ...
Error executing Maven. in comment after two dashes (--) next character must be > not - (position: ...
- Spring @Async之一:实现异步调用示例
什么是“异步调用”? “异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行:异步调用指程序在顺序执行时,不等待异步调用的语句返回结果 ...
- 8年经验面试官详解 Java 面试秘诀
作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三 ...
- Lesson 12 banks and their customers
Why is there no risk to the customer when a bank prints the customer's name on his cheques? When any ...
- 代码审计(1):sql注入漏洞
挖掘经验:sql注入经常出现在登录界面.获取HTTP请求头.订单处理等地方.而登录界面的注入现在来说大多是发生在HTTP头里面的client-ip和x-forward-for,一般用来记录登录的ip地 ...
- 初识PromQL
初识PromQL Prometheus通过指标名称(metrics name)以及对应的一组标签(labelset)唯一定义一条时间序列.指标名称反映了监控样本的基本标识,而label则在这个基本特征 ...