设为首页 加入收藏

TOP

基于Linux 3.10.49内核添加字符驱动(三)
2017-10-18 09:07:45 】 浏览:1802
Tags:基于 Linux 3.10.49 内核 添加 字符 驱动
sp;         // 1-2  --|这一步写上, 高级操作.
 // .unlocked_ioctl = i2cdev_ioctl,
    .open  = mydemodev_open,                    // 1-1  --|
    .release = mydemodev_release,                  // 1-1  --| 这一步写上, 基本上就可以看到效果了.
};


static struct class *mydemo_dev_class;



static int __init mydemo_dev_init(void)
{
 int res;


 printk(KERN_INFO "my char dev demo entries driver\n");


 res = register_chrdev(MYDEMO_MAJOR, "mydemo", &mydemodev_fops);            //1. 注册字符设备
 if (res)
  goto out;


 mydemo_dev_class = class_create(THIS_MODULE, "mydemo-class");              //2. 生成class, 在 /sys/class/ 下生成mydemo-class文件夹
 if (IS_ERR(mydemo_dev_class)) {
  res = PTR_ERR(mydemo_dev_class);
  goto out_unreg_chrdev;
 }
    device_create(mydemo_dev_class,NULL,MKDEV(MYDEMO_MAJOR, MYDEMO_MINNOR),NULL,"mydemo-dev" "%d", MYDEMO_MINNOR); //3. 生成class, 在 /dev/ 下生成mydemo-dev9节点.


 return 0;


 class_destroy(mydemo_dev_class);
out_unreg_chrdev:
 unregister_chrdev(MYDEMO_MAJOR, "mydemo");
out:
 printk(KERN_ERR "%s: Driver Initialisation failed\n", __FILE__);
 return res;
}


static void __exit mydemo_dev_exit(void)
{
 printk(KERN_INFO "my char dev demo out driver\n");
 class_destroy(mydemo_dev_class);
 unregister_chrdev(MYDEMO_MAJOR, "mydemo");
}


MODULE_AUTHOR("EastonWoo <31417071@qq.com>");
MODULE_DESCRIPTION("my char dev demo entries driver");
MODULE_LICENSE("GPL");


module_init(mydemo_dev_init);
module_exit(mydemo_dev_exit);


6. 修改drivers/Makefile:


添加obj-$(CONFIG_MY_DEMO)        += MyDemo/


7. 修改drivers/char/Kconfig:


添加source "drivers/MyDemo/Kconfig"


这样就完成了.可以编译测试了.


首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#的单例模式实现 下一篇基于Linux 3.10.49内核的pinctrl..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目