Linux:设备出现在/ dev中但无法访问

时间:2015-02-04 11:06:49

标签: linux driver device

我创建了一个Linux设备驱动程序,可以将其添加到system (insmod, mknod)。当我查看/dev时,我将其列为camerax

ls -l /dev/camerax
crw-r--r--    1 root     root      245,   0 Jun 27 17:19

即便如此,我也无法访问它。无论我做什么,我都会收到错误。

例如:

int fd = open("/dev/camerax", O_RDONLY);

printf("%d [%s]\n", fd, strerror(errno));

生成:

-1 [No such device or address]

我作为超级用户运行。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您的模块未链接到您提到的特殊文件,因此出错。

如果您的模块已成功插入,请使用cat命令在/ proc / devices中验证

cat /proc/devices

在路径/ dev / ____中使用mknod创建的

文件只是对你的驱动程序的一种参考

主要和次要号码应与您插入的设备匹配。

答案 1 :(得分:0)

我已经解决了这个问题。

如文档中所述,我现在不是动态创建主设备号,而是将其明确设置为61.现在一切正常。

我可以在工作版本和非工作版本之间看到的唯一区别是主要编号(是的,我更改了使用设备编号的任何内容,因此我总是使用相应的编号)。

这为我不断增长的清单增加了系统的另一个奇特功能。