기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요. /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를 어렵게 해놓은 것 같은데..
어떻게 해야할지 모르겠습니다.

고수님의 조언을 부탁드립니다.

신현호

2013.04.20 00:19:11
*.214.41.74

결국은 해당 device node를 open할 권한이 없다는건데, CTS 인증이 필요한게 아니라면

uevent.xxxx.rc 파일 안에 해당 디바이스의 권한을 변경하는 방법이 있습니다.

예를 들면

/dev/mem  0666 system  system

이런식으로 추가하면 해당 디바이스 노드를 uevent daemon이 생성할때 666권한으로 생성해 줍니다.

그럼 아무 어플에서나 해당 장치를 오픈할수 있죠.

고도리

2013.04.20 02:25:06
*.200.239.210

예전 기억으로는 root 권한이 아니면 열리지 않았던 것으로 기억이 납니다....

아마도 내부에서인가 root uid를 체킹할겁니다.


워낙 오래되어서 가물합니다....쩝

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인