我创建了一个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]
我作为超级用户运行。有什么建议吗?
答案 0 :(得分:0)
您的模块未链接到您提到的特殊文件,因此出错。
如果您的模块已成功插入,请使用cat命令在/ proc / devices中验证
cat /proc/devices
。
文件只是对你的驱动程序的一种参考
主要和次要号码应与您插入的设备匹配。
答案 1 :(得分:0)
我已经解决了这个问题。
如文档中所述,我现在不是动态创建主设备号,而是将其明确设置为61.现在一切正常。
我可以在工作版本和非工作版本之间看到的唯一区别是主要编号(是的,我更改了使用设备编号的任何内容,因此我总是使用相应的编号)。
这为我不断增长的清单增加了系统的另一个奇特功能。