안녕하세요. /dev/mem access관련해서 궁금한 점이 있습니다.
요즘 프로젝트로 FPGA에서 생성한 데이타를 받아서 안드로이드에 뿌려주는 작업을 하고 있습니다.
(안드로이드 모듈 CPU : S5PV210 , 안드로이드 커널 froyo)
FPGA와 CPU 간에 데이타를 주고 받기 위해 dual port ram을 이용하고 있구요
CPU(S5pv210)의 SROM 영역에 dual port ram을 연결하였습니다.
일반 linux application(c language)을 /dev/mem을 open하고 mmap으로 설정해서
dual port ram을 읽는데 성공하였습니다.
하지만 안드로이드에서 /dev/mem이 access가 되지 않아 문의드립니다.
/dev/mem을 읽고 데이타를 처리하는 부분은 JNI로 구현하였습니다.
하지만 Operation not permitted란 erro code를 뜨면서 open이 되지 않습니다.
device에 z4root어플을 깔고 제가 만든 어플에서 root 권한을 받아오는데
성공하였지만 /dev/mem은 그대로 open failed됩니다.
참고로 JNI code에서 getuid를 해서 보니 root로 되어 있진 않았습니다.
구글 자료에 보면 보안상 access를 어렵게 해놓은 것 같은데..
어떻게 해야할지 모르겠습니다.
고수님의 조언을 부탁드립니다.
결국은 해당 device node를 open할 권한이 없다는건데, CTS 인증이 필요한게 아니라면
uevent.xxxx.rc 파일 안에 해당 디바이스의 권한을 변경하는 방법이 있습니다.
예를 들면
/dev/mem 0666 system system
이런식으로 추가하면 해당 디바이스 노드를 uevent daemon이 생성할때 666권한으로 생성해 줍니다.
그럼 아무 어플에서나 해당 장치를 오픈할수 있죠.