相关疑难解决方法(0)

如何在为设备驱动程序加载内核模块时自动在/ dev中创建设备?

我正在尝试开发Linux设备驱动程序,并且作为我的第一次尝试,我正在尝试开发具有以下文件选项的char设备驱动程序,

struct file_operations fops{  
.open=open_fun,  
.release=release_fun,  
.write=write_fun,  
.read=read_fun,  
};  
Run Code Online (Sandbox Code Playgroud)

当我使用加载驱动程序时insmod,我看到/proc/devices列出了char设备下的驱动程序,但我找不到它/dev.谷歌搜索建议使用mknod创建一个deivce /dev并将其与驱动程序的主要和次要关联.但是,尝试这样做会导致"权限被拒绝"错误,即使以超级用户身份完成也是如此.

/dev加载内核模块时,我该怎么做才能使设备出现?我尝试了注册设备的旧(register_chrdev)和更新版本(cdev_init & cdev_add),但没有一个工作.

谢谢,
米尔

linux-device-driver linux-kernel

12
推荐指数
2
解决办法
3万
查看次数

cdev_add()在主要117上成功注册后,char设备出现在何处.

我写了基本的char驱动程序.

使用cdev_alloc,cdev_init,cdev_add完成了使用内核注册char设备.Major = 117,Minor = 1.

cdev_add函数retrun成功.我正在尝试检查是否创建了char设备.我没有在/ dev /或/ dev/char下找到任何设备,主要没有117.

register_chrdev不会在我们提供NAME的最新内核中使用.但是cdev_add仅使用主号执行内核的char设备注册.

我对最新的内核行为感到困惑.

我是否需要将register_chrdev与cdev_add一起使用?或者我需要使用mknod commad在/ dev /中显示设备吗?

谢谢.

linux kernel linux-device-driver linux-kernel

3
推荐指数
1
解决办法
647
查看次数

标签 统计

linux-device-driver ×2

linux-kernel ×2

kernel ×1

linux ×1