请高手指点,
     我自己仿照内核中其他 字符驱动,随便写一个虚拟字符设备。编译成功,在硬件抽象层我通过调用open(DEVICE_NAME,O_RDWR),一直返回-1,设备节点打开失败。  这种情况我以为是设备节点没有创建成功,后来我通过终端在
/DEV目录下 确实是有看到自己创建的设备节点,用cat DEVICE_NAME 也是失败提示——: Permission denied 。
     设备的详细信息——(crw------- root     root     247,   1)     看到这种情况我就 不知道改怎么办了,在网上查了下,说是说对应用程序要设置系统权限,按照其做法:
          在AndroidManifest.xml中添加 android:sharedUserId="android.uid.system"
          在Android.mk中添加 LOCAL_CERTIFICATE := platform
——结果还是打开失败 

解决方案 »

  1.   

    cat都有问题就很奇怪了
        单独再chmod设置一下设备节点权限了
      

  2.   

         我当初也侥幸用chmod在终端试过,但是设置不了权限(我是真机调试用的是打印终端) ,而且我open(“/dev/zero”,O_RDWR)这是能打开成功,对比两个节点的详细信息:
          ————
                   crw-rw-rw- root     root       1,   5 2011-01-27 05:49 zero
                 crw------- root     root     247,   1 2011-01-27 05:49 test
         好像是有些不同,我自己创建的节点有点问题,估计得看看创建节点时,分配权限那地方了
      

  3.   

    原因是用户没有对该文件的读写权限,需在init.rc增加相应的权限。即在init.rc中添加代码chmod 777 /dev/test即可
      

  4.   

       #3楼 得分:0回复于:2011-05-10 20:05:00原因是用户没有对该文件的读写权限,需在init.rc增加相应的权限。即在init.rc中添加代码chmod 777 /dev/test即可 
     
        还是不行,想死!!!
      

  5.   

         终于打开成功了;虽然知道是权限的问题 ,在init.rc中添加代码chmod 777 /dev/test这样没能改成功让我很郁闷。
          实在没办法,蒙在里面搞,一不小心发现 打印终端命令行提示符——$($ 为普通用户),在此使用chmod命令一直提示没有权限。于是我就直接su一下提示符——#(# 为root用户),就这样可以用chmod命令了 ,终于把权限改了。
          虽然这样也算是改了权限,最终能open,但是总感觉治标不治本,得想办法在代码中改号才行!
      

  6.   

    好像是在uevented.rc里面把这个节点加进去就可以了吧