设备驱动程序开发 二

来源:互联网 发布:mac pc 区别 编辑:程序博客网 时间:2024/05/02 00:41

 接上一篇继续学习:


上一篇,我自己在调试的时候出现过小问题:第五步时  mknod  随便指定个主设备号,比如55,而不是系统给分配的250。这样当运行测试程序时就出问题了。

程序中: result = register_chrdev(0, "test", &test_fops);/*注册。对设备操作的整个接口*/,当主设备号默认为0时,表示由系统给分配。现在如果想在程序中自己这时就定义好设备号,可以将 0 改成你想要的数字即可,不过要先查一下这个设备号是不是已经存在了:cat  /proc/devices。但这时还需要mknod 指定设备号。


当然还有更简单的 方法:不必mknod,让系统自动生成这些东西:

   在test.c文件中声明两个类,class类的  *testdrv_class,class_device类的tesdrvt_class_dev:

static struct class *testdrv_class;
static struct class_device *
testdrv_class_dev;

然后在init_modulet函数中创建这两个类:

testdrv_class = class_create(THIS_MODULE, "testdrv");

testdrv_class_dev = device_create(test_class, NULL, MKDEV(major, 0), NULL, "test");//(注意这个地方,内核之前的版本这里为:class_device_creat)

  还要加个头文件:<linux/device.h>



原创粉丝点击