作者onlywig (环岛旅行ing)
看板LinuxDev
标题[问题]不知道是不是dlsym的问题...
时间Fri Jun 28 15:40:38 2013
其实我上层是Android系统 要打通rfid
但我感觉我是卡在linux的部分 所以想说在这发问一下
在framework的最底层(Native) 我build了一包.so
在JNI层会利用dlopen dlsym去呼叫.so里面的API~
但有的可以用有的不能用....
我归纳一下:
例如查询.so版本号的API就可以用
开启UART /dev/ttyO3 port的API 要先执行chmod 777 才可以开启成功
对硬体做读写的API就会回传失败~
但这包code我有build成执行档在console环境下 (root权限) 是可以执行的(读写OK)
而安卓framework我记得他们的权限都是system 有怀疑是不是owner的问题..
所以想请教前辈 有没有遇过console 执行bin档OK 但上层call .so里的API却失败的情形
该朝哪个方向解决比较好?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.21.170.157
※ 编辑: onlywig 来自: 211.21.170.157 (06/28 15:41)
※ 编辑: onlywig 来自: 211.21.170.157 (06/28 15:42)
1F:推 cobrasgo:你要不要分开测,读和写分开 06/29 01:41
2F:→ onlywig:目前只测读而已 就失败了..API回传错误码:无效的指令.. 06/29 14:28
3F:推 cobrasgo:"但有的可以用有的不能用",哪些是可以用的列出来看一下/ 06/30 16:10
例如
char* get_lib_version();
int open_rfid_port(char *path);
这种的就可以用
int rfid_find_tags(
found_tag_callback found_tag_cb,
int count,
int timeout_ms,
access_report_callback access_report_cb);
这种就不行...我带的参数跟我在bin的执行档是一样的
不知道为啥放在HAL就不行
※ 编辑: onlywig 来自: 61.220.220.235 (07/01 09:16)
4F:→ onlywig:我这几天测试後发现是.so的问题... 07/03 11:02
谜底揭晓 是我用安卓的"bionic" (C的函式库)去build出来的执行档
就会有问题了 查了一下安卓的C函式库并不是标准规范
但却又build的过 不知道该怎办..我现在怀疑只是UART没有通而已
※ 编辑: onlywig 来自: 122.146.76.147 (07/03 18:02)