看板 LinuxDev 關於我們 聯絡資訊
其實我上層是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)
cobrasgo:你要不要分開測,讀和寫分開 06/29 01:41
onlywig:目前只測讀而已 就失敗了..API回傳錯誤碼:無效的指令.. 06/29 14:28
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)
onlywig:我這幾天測試後發現是.so的問題... 07/03 11:02
謎底揭曉 是我用安卓的"bionic" (C的函式庫)去build出來的執行檔 就會有問題了 查了一下安卓的C函式庫並不是標準規範 但卻又build的過 不知道該怎辦..我現在懷疑只是UART沒有通而已 ※ 編輯: onlywig 來自: 122.146.76.147 (07/03 18:02)