在Android系统中,我们通常在编写好驱动设备文件之后,如果直接编写JNI程序,通过上层Android应用程序调用驱动的设备文件的话,会显示无法打开设备错误,出现这样一个错误的主要原因是因为应用程序没有权限打开驱动设备。我们可以通过adb工具进入/dev目录输入:ls –al命令,可以显示当前设备文件的权限信息。
修改驱动程序的读写权限有两种方法:
第一种
直接使用adb工具,进入dev的目录下,通过输入:chmod 777 **(其中*表示设备文件名),虽然这一种方式非常简单,但是也存在非常大的不足,例如,每次重新启动开发板之后,都要进行一次权限修改,特别的麻烦。
第二种
通过修改android的配置文件的方式修改设备权限。这种方式能够永久性的修改设备文件的权限,再也不用担心设备文件权限不够的问题。修改方式主要如下:
第一步:进入Android/iTop4412_ICS/device/samsung/smdk4x12/conf#目录,改目录下有一个init.smdk4x12.rc文件,该文件的主要作用就是在开机启动进入android系统之后,修改相应设备文件的读写权限。(因为android系统在开机时会去执行这个脚本文件)。
第二步:打开这个脚本文件,打开之后我们可以看到,里面都放的是修改某一设备文件的命令。我们在这些相应的命令之中也加入我们自己的命令,命令为:
chmod 0777 /dev/cc1100
第三步:保存之后,我们再重新编译android系统就行了。
其实进入android系统之后,系统会读取两个关于修改相应文件权限的脚本,我们刚刚只介绍了一种,就是在Android/iTop4412_ICS/device/samsung/smdk4x12/conf目录下的init.smdk4x12.rc文件,这个文件通常存放的是用户自己写的驱动设备文件,或者一些与用户相关的设备文件。而另外一个关于修改相应文件权限的脚本在/Android/iTop4412_ICS/system/core/rootdir目录下的ueventd.rc文件,这个脚本文件是通用的android官方提供的脚本文件,是每一个android系统都有的,里面存放了一些android固有的设备驱动修改权限命令。当然我们也可以在这个脚本文件下加入我们上面讲到的文件权限修改命令。