USB串口转换器ttyUSB0权限问题

时间:2011-05-31 11:43:14

标签: android android-ndk beagleboard

我们正在开发一个从串行设备读取数据的应用程序。现有的C ++代码被重用为共享库(使用NDK构建libProtocol.so)来读取和解码来自设备的数据并将其传递给应用程序。但是,当连接设备时,由于权限问题,共享库代码无法访问设备。在adb shell命令中,ls -l / dev / ttyUSB0显示“crw ------- root root”。如果我从adb手动使用chmod 777 ttyUSB0,然后运行该应用程序,则可以打开该端口。 (如果我创建一个C ++ exe来访问USB串口并在android环境中运行,它可以访问端口但是从共享库访问失败)

  1. 是否可以永久更改权限?
  2. android是以root还是其他任何用户身份运行?
  3. 一般来说ttyUSB0属于拨出组,为什么它显示为root和crw -------而不是crw-rw ----?
  4. 为什么从exe工作中访问并从共享库中访问?
  5. 硬件平台:Beagle Board - XM 操作系统:Android Froyo 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您需要弄清楚设备文件的创建位置,并适当设置权限。这可能是/init.rc或类似的,或者可能是在USB设备插入时触发的某些内容。部分设备名称的文件系统的递归grep(由主要用户提供)可以通过帮助您查找出现该字符串的所有内容,在几分钟内得到答案,至少提供它是在本机代码而不是dalvik classfile(我认为不太可能)

Android应用程序通常不以root身份运行;让它们这样做是相当复杂的,因为它们通常不是在正常意义上启动的,而是从受精过程中分离出来(因此可以共享常见的库映射)。但是一个选择是android应用程序可以 - 非正式地 - 启动setuid二进制文件,并使用它们作为代理来做事情,也就是说,你可以有一些东西只是将其stdin上收到的任何内容写入端口并打印从端口接收到的任何东西。标准输出。