1

皆さん、i2c デバイス用の char ドライバーを書きました。Linux カーネル 3.0.8 を使用して Android 4.0.3 で動作しています。

ioctl()ネイティブの Android アプリを使用してドライバーにアクセスしようとすると。許可が拒否されたというエラーが表示されます。

次のコマンドを使用してデバイス ファイルを作成すると、アクセス許可エラーは発生しません。

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);    
}
4

1 に答える 1

1

独自の Android イメージを作成しているとします。

その場合、次init.rcのような行を編集して追加し、起動時にデバイス ノードが自動的に作成されるようにする必要があります。

mknod /dev/barcodescan c 100 0
chown system system /dev/barcodescan

system:を他のアカウントに変更しsystemたり、chmod を使用してパーミッションを追加したりすることもできますchmod 666が、これはお勧めできません。

于 2013-09-22T08:34:30.997 に答える