民间, 我为我的i2c设备写了一个char驱动程序。它使用Linux内核3.0.8在Android 4.0.3上运行。
当我尝试使用我的原生Android应用程序使用ioctl()
访问驱动程序时。我收到了一个拒绝许可的错误。
如果我使用以下命令创建设备文件,则不会收到权限错误。
mknod /dev/barcodescan c 100 0
我不想一直手动发出此命令,而是模块在启动时执行此操作。我写了下面的代码但是我得到了一个权限被拒绝的错误。 如何在此代码中设置权限?
ret= register_chrdev(MAJOR_NUMBER,"barcode",&fops );
if(ret) {
pr_info(KERN_ERR "%s:register chrdev failed\n",__FILE__);
return ret;
}
i2c_dev_class = class_create(THIS_MODULE,"barcode");
if (IS_ERR(i2c_dev_class)) {
ret = PTR_ERR(i2c_dev_class);
class_destroy(i2c_dev_class);
}
答案 0 :(得分:1)
我假设您正在构建自己的Android图像。
在这种情况下,您需要编辑init.rc
以添加这样的行,以确保您的设备节点在启动时自动创建:
mknod /dev/barcodescan c 100 0
chown system system /dev/barcodescan
您可能希望将system
:system
更改为其他帐户和/或使用chmod添加更多权限,例如使用chmod 666
,但不建议这样做。