设备驱动程序开发 二

 接上一篇继续学习:


上一篇,我自己在调试的时候出现过小问题:第五步时  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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值