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");

驱动中添加参数进行调试和控制设备驱动相关推荐

  1. Django从理论到实战(part8)--URL中添加参数

    学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...

  2. matlab 将图形另存时,在文件名字符串中添加参数,总是保存出错,无效文件名

    将图形另存时,在文件名字符串中添加参数,总是保存出错,解决方式如下: 注意:我尝试过 string(1) char(1) 等都不可以,提示无效文件名. filename = ['Point cloud ...

  3. linux驱动开发篇(四)—— platform平台设备驱动

    linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...

  4. linux mmc分区_【经验记录】如何给嵌入式Linux的SD/MMC卡驱动中添加多个分区

    How to add multi partition for SD/MMC card in Linux Driver 之所以写这个,是因为,在这个过程中,自己明显感觉到了,做事情一定要有一定的方法,方 ...

  5. Pycharm中带参数程序调试

    Pycharm中依次点击 Run -> Configuration ->Parameters 在相应的Parameters栏中输入参数

  6. Linux内核驱动调试,Linux内核设备驱动之内核的调试技术笔记整理

    /****************** * 内核的调试技术 ******************/ (1)内核源代码中的一些与调试相关的配置选项 内核的配置选项中包含了一些与内核调试相关的选项,都集中 ...

  7. linux中uart设备名是什么,linux uart设备驱动结构分析

    http://blog.chinaunix.net/u3/118615/showart_2320858.html 1概述 这里的uart设备是指物理设备,例如MPC8xx中CPM中的SMC,这个设备可 ...

  8. linux 两个驱动 竞态,第7章 Linux设备驱动中的并发控制之一(并发与竞态)

    本章导读 Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态(竞争状态). Linux提供了多种解决竞态问题的方式,这些方式适合不同的应用场景. 7.1讲解了并 ...

  9. linux内核创建字符节点,Tiny6410学习ing—(四)、嵌入式Linux内核驱动进阶—(7)、高级字符设备驱动(自动创建节点)—#931...

    按照国嵌的视频教程上来说的,最后就是-自动创建设备文件! 其实我感觉以前完全可以直接是手动创建了设备文件,然后就可以直接讲述自动创建设备文件,为啥非要拖到最后来讲述,我也就不清楚了!! 不管了,写完收 ...

最新文章

  1. BZOJ 2139 road(构造,最小生成树)【BZOJ 修复工程】
  2. linux与shell编程指南,LINUX与UNIX SHELL编程指南
  3. CH-Round-#63-OrzCC杯#2省选热身赛
  4. TIOBE 10月编程语言排行榜 : GO 问鼎本年度语言 ?
  5. 单元格内容分列多行_姓名太多,放在一列打印时浪费纸张,可以分成多行多列打印...
  6. java图形接口_java基础七 [图形用户接口](阅读Head First Java记录)
  7. java小数丢失精度_Java中的小数运算与精度损失
  8. Android点击效果
  9. 三层架构之初识庐山真面目
  10. 《数值分析》学习笔记 ·003——数值计算中应该注意的几个问题
  11. ACL2021中的25个Transformers模型
  12. springboot MVC拓展配置
  13. Python爬虫_宅男福利?妹纸勿点__一蓑烟雨任平生
  14. 云控微信开发SDK使用教程--手机微信群二维码上传给服务端
  15. 内网/外网介绍以及两者比较
  16. Apache网站根目录
  17. 【信息学奥赛】2070:【例2.13】数字对调C++)
  18. 阿里云云计算助理工程师认证(ACA)
  19. 前端入门之——html day2
  20. python人工智能课程设计_中小学课程设计:以计算思维培养为核心的人工智能课程设计与实践...

热门文章

  1. IDL学习:语法基础-运算
  2. TL431并联电容器
  3. 佛说:有人伤害你,是来渡你的
  4. HTML5一段空白怎么打,空白空格怎么打?
  5. 这四款实用的在线工具,关键时刻能帮你大忙!请低调收藏
  6. 4个口碑贼好的微信小程序,低调收藏,免费使用!
  7. 【Django】开发日报_3_Day:员工管理系统-创建项目
  8. Windows搜索文件技巧:Listary和Everything各有千秋(比较、对比)
  9. Fortran笔记,指针-Part1
  10. 练习C++简单的代码