驱动中添加参数进行调试和控制设备驱动
1.在加载驱动的时候向驱动传入参数:
1.1传入字符型参数
static char *name;
module_param(name, charp, 0);
MODULE_PARM_DESC(name, "param description");
1.2传入无符号整型参数
static unsigned rotate;
module_param(rotate, uint, 0);
MODULE_PARM_DESC(rotate,"param description");
1.3使用方法
insmod xxx.ko name = "abc"
2.在驱动加载后去向驱动传参数控制设备
驱动中添加CLASS属性步骤:
2.1 定义一个类:
static struct class *example_class = NULL;
2.2 在入口函数中创建设备类,并且在类下创建属性文件
example_class = class_create(THIS_MODULE, "example_class");
if (IS_ERR(example_class))
{
printk("Create class example_class failed.\n");
return -ENOMEM;
}
ret = class_create_file(example_class, &class_attr_example);
2.3 定义属性文件的读写函数及权限 example是属性文件名字 后面两个参数是操作属性文件的读写方法
static CLASS_ATTR(example, 0660, arr_class_read, arr_class_write);
2.4 在出口函数中销毁类
class_remove_file(example_class, &class_attr_example);
class_destroy(example_class);
example1:#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/platform_device.h>#include <linux/device.h>#include <linux/fs.h>#include <linux/gpio.h>#include <linux/slab.h>#include <linux/uaccess.h>#include <linux/syscalls.h>static unsigned int value;//写文件函数static ssize_t arr_class_write(struct class *cls, struct class_attribute *attr, const char *_buf, size_t _count){value = simple_strtol(_buf, NULL, 10);printk("value = %d\n",value);return _count;}//读文件函数static ssize_t arr_class_read(struct class *cls, struct class_attribute *attr, char *_buf){return sprintf(_buf,"%d\n",value);}static struct class *example_class = NULL;/*CLASS_ATTR(在/sys/class/example_class/操作的文件,读文件函数,写文件函数)*/static CLASS_ATTR(example, 0660, arr_class_read, arr_class_write);static int __init class_file_init(void){int ret;printk(KERN_INFO" class_file_init \n");example_class = class_create(THIS_MODULE, "example_class");if (IS_ERR(example_class)){printk("Create class example_class failed.\n");return -ENOMEM;}ret = class_create_file(example_class, &class_attr_example);return 0;}static void __exit class_file_exit(void){printk(KERN_INFO"class_file_exit \n");class_remove_file(example_class, &class_attr_example);class_destroy(example_class);example_class = NULL;return ;}module_init(class_file_init);module_exit(class_file_exit);MODULE_AUTHOR("Dave/nova_wangwenbo@126.com");MODULE_LICENSE("GPL");
驱动中添加参数进行调试和控制设备驱动相关推荐
- Django从理论到实战(part8)--URL中添加参数
学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...
- matlab 将图形另存时,在文件名字符串中添加参数,总是保存出错,无效文件名
将图形另存时,在文件名字符串中添加参数,总是保存出错,解决方式如下: 注意:我尝试过 string(1) char(1) 等都不可以,提示无效文件名. filename = ['Point cloud ...
- linux驱动开发篇(四)—— platform平台设备驱动
linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...
- linux mmc分区_【经验记录】如何给嵌入式Linux的SD/MMC卡驱动中添加多个分区
How to add multi partition for SD/MMC card in Linux Driver 之所以写这个,是因为,在这个过程中,自己明显感觉到了,做事情一定要有一定的方法,方 ...
- Pycharm中带参数程序调试
Pycharm中依次点击 Run -> Configuration ->Parameters 在相应的Parameters栏中输入参数
- Linux内核驱动调试,Linux内核设备驱动之内核的调试技术笔记整理
/****************** * 内核的调试技术 ******************/ (1)内核源代码中的一些与调试相关的配置选项 内核的配置选项中包含了一些与内核调试相关的选项,都集中 ...
- linux中uart设备名是什么,linux uart设备驱动结构分析
http://blog.chinaunix.net/u3/118615/showart_2320858.html 1概述 这里的uart设备是指物理设备,例如MPC8xx中CPM中的SMC,这个设备可 ...
- linux 两个驱动 竞态,第7章 Linux设备驱动中的并发控制之一(并发与竞态)
本章导读 Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态(竞争状态). Linux提供了多种解决竞态问题的方式,这些方式适合不同的应用场景. 7.1讲解了并 ...
- linux内核创建字符节点,Tiny6410学习ing—(四)、嵌入式Linux内核驱动进阶—(7)、高级字符设备驱动(自动创建节点)—#931...
按照国嵌的视频教程上来说的,最后就是-自动创建设备文件! 其实我感觉以前完全可以直接是手动创建了设备文件,然后就可以直接讲述自动创建设备文件,为啥非要拖到最后来讲述,我也就不清楚了!! 不管了,写完收 ...
最新文章
- BZOJ 2139 road(构造,最小生成树)【BZOJ 修复工程】
- linux与shell编程指南,LINUX与UNIX SHELL编程指南
- CH-Round-#63-OrzCC杯#2省选热身赛
- TIOBE 10月编程语言排行榜 : GO 问鼎本年度语言 ?
- 单元格内容分列多行_姓名太多,放在一列打印时浪费纸张,可以分成多行多列打印...
- java图形接口_java基础七 [图形用户接口](阅读Head First Java记录)
- java小数丢失精度_Java中的小数运算与精度损失
- Android点击效果
- 三层架构之初识庐山真面目
- 《数值分析》学习笔记 ·003——数值计算中应该注意的几个问题
- ACL2021中的25个Transformers模型
- springboot MVC拓展配置
- Python爬虫_宅男福利?妹纸勿点__一蓑烟雨任平生
- 云控微信开发SDK使用教程--手机微信群二维码上传给服务端
- 内网/外网介绍以及两者比较
- Apache网站根目录
- 【信息学奥赛】2070:【例2.13】数字对调C++)
- 阿里云云计算助理工程师认证(ACA)
- 前端入门之——html day2
- python人工智能课程设计_中小学课程设计:以计算思维培养为核心的人工智能课程设计与实践...