我的内核版本linux2.6.17,想在内核中添加一个驱动,模块加载初始化代码如下:
#define DEVICE_NAME "mydev"
static struct class *my_class;
static dev_t mydev = 0;
static struct cdev mycdev;
static int __init FM24CL64_init(void)
{
int ret,err;
ret = alloc_chrdev_region(&mydev,0,1,DEVICE_NAME);
if(ret)
{
unregister_chrdev_region(mydev,1);
return ret;
}
cdev_init(&mycdev,&FM24CL64_fops);
err = cdev_add(&mycdev,mydev,1);
if(err)
{
unregister_chrdev_region(mydev,1);
return ret;
}
my_class = class_create(THIS_MODULE,DEVICE_NAME);
if(IS_ERR(my_class))
{
unregister_chrdev_region(mydev,1);
return ret;
}
class_device_create(my_class,NULL,mydev,NULL,DEVICE_NAME);
printk("\n\nFM24CL64 Init End\n\n");
return 0;
}
编译能通过,内核启动结束后,输入:cat /proc/devices命令能查询到设备名称和设备号:253 medev,但是在/dev目录下根本就没有“mydev”这个设备节点,不知该如何解决,网上有说用mknod命令可以手动创建设备节点,但是我使用该命令时显示“sh:can‘t execute ’mknod‘:No such file.........”,是不是我的内核配置得不对?还是我的根文件系统缺少某些东西?还是其他别的原因。求大神指点或指引方向,不胜感激!!!谢谢!!