本帖最后由 ycd37850105 于 2017-1-21 17:41 编辑
当系统在运行过程中,插上一个USB转串口设备,系统能识别到节点ttyUSB0。但是在一般情况下,系统没有获取root权限,没办法对节点进行操作。对于这种情况,需要设置该节点的权限,有下面几种设置节点权限的方法。
方法一: 在终端直接输入命令改变权限: Chmod 0777 ttyUSB0 这种方法只合适短暂性操作,一旦重新拔插设备或重启系统,节点即会恢复到最初的权限,前面的命令就会失效。
方法二: 在Android系统中,ueventd进程可以对“热插拔”设备进行监测,在系统运行中,当有USB设备插入时,ueventd会接收到这一事件,并为插入的设备动态创建设备节点文件。我们可以在文件ueventd.rc中添加:
/dev/ttyUSB0 0777 radio radio
这种方法可以让我们对ttyUSB0有永久操作权限。
方法三: 这一方法要改动代码了,相对复杂。 在kerne/driver/u***/serial/bus.c文件里的u***_device_probe函数中添加如下代码:
msleep(50); do { switch(minor) { case 0: re = sys_chmod("/dev/ttyUSB0", 0666); break; case 1: re = sys_chmod("/dev/ttyUSB1", 0666); break; case 2: re = sys_chmod("/dev/ttyUSB2", 0666); break; default: break; } }while(re < 0 && ++retry < 5); if(re < 0) printk("change permission ttyUSB%d faild!n", minor); else printk("change permission ttyUSB%d succeed!n", minor);
为了避免权限设置失败,最好多retry几次。要记得在文件头加入#include 使包含sys_chmod函数。这一方法也可以使ttyUSB0有永久操作权限。
|