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

안녕하세요. 완전 초보 주제에 무엇인가를 해보려고 하니 막히는 부분이 너무 많네요.


커널 이미지에 제가 만든 드라이버를 추가하여 zImage 생성하였습니다.


안드로이드 어플리케이션으로 "dev/" 폴더에 있는 파일(드라이버)의 핸들을 얻어오게 구현하였습니다.


문제는 제가 생각하기엔 커널 이미지에 드라이버가 포함되어 부팅시 모듈이 로딩되면 안드로이드의 dev 폴더로 


노출이 될것이라고 생각했었는데 틀린것 같습니다.


자바로 (jni - ndk 포함) 만든 안드로이드 어플리케이션이 커널 단에 드라이버에 접근하여 핸들을 얻고, 


Read / Write 하는 방법을 알고 싶습니다. 


정낙주

2011.01.15 03:29:59
*.203.239.47

ndk 로 만든 jni 라이브러리를 통해서 접근하면 됩니다.

dev 의 permission이 문제가 있을 수 있습니다.

안드로이드는 root permission을 갖지 않습니다.  other 라고 생각하시면 될 듯...

jni로 드라이버를 접근하기 전에 dev의 permission을 chmod 666  /dev/<dev name> 으로 변경하고 해보시기 바랍니다.

이제현

2011.01.15 04:30:47
*.90.137.102

보통은 드라이버가 내장되면 부팅하면서 /dev/ 아래에 device node가 생성됩니다.

udev나 hot-plug같은 경우가 아니라면 말이죠...

보통 input 장치의 경우는 /dev/input/ 아래에 event#n 형식으로도 생기고요...

어떤 디바이스 드라이버인지 몰라 정확한 답변이 어렵습니다.

고도리

2011.01.15 06:04:16
*.237.243.143

1. 현재 gadget driver는 android gadget이 올라가 있다면 file storage gadget을 모듈로 올려도 동작하지 않을 듯 하고요

2. android gadget 대신 file storage gadget이 올라가 있다면...

3. /dev로의 node 생성은 init관련 부분에서 gadget 처리를 하지 않기 때문일 가능성이 높습니다.

이 경우는 mknod(busybox를 포팅한 후)를 이용해서 강제로 작성하는 수 밖에는 없습니다.

4. Android app에는 root나 system권한이 주어지지 않습니다. 해서 socket을 이용해서 통신으로 처리하시던지

Android의 기본인 binder를 이용하셔야 할겁니다.

5. 통신개념으로 하기 싫다고 하신다면 permission을 666으로 바꿔 놓으신담에 사용하시면 되는데, 이렇게 하면

UI가 먹통이 되거나 system에 문제가 생길때 에러처리를 하지 못합니다.

kieslv

2011.01.15 08:33:22
*.38.202.229

gadget 처리가 안되어 있다면 mknod로 강제 등록하라고 하셨는데, 이는 커널에서 작업하라는 말씀이시지요?
이미 드라이버 init에서 register gadget 처리는 해주고 있습니다. 
(부팅하면 안드로이드까지 올라가버리기 때문에, 리눅스 계층에서의 노드 생성 확인은 하지 못하고 있는 상태 입니다. 확인할 방법이 있을까요?)
이 상태에서도 mknod를 실행 해야 하나요?


현재 상태를 조금 상세히 설명드립니다.
- jni를 통해서 open()함수로 드라이버 접근을 시도하고 있고, 
- 커널 단에서는 드라이버가 정상 빌드 되었습니다. (init에서 register gadget 은 처리 했습니다.)
- pdk에서의 무엇인가 연결 매체가 필요한지 궁금합니다.

안드로이드의 /dev에 드라이버명이 보여야 open()에서 핸들을 얻을수 있을 것이라 생각하는데,
안드로이드의 /dev에서 확인해 보면 해당 드라이버명이 보이지 않습니다.
혹시, dev 폴더에 드라이버가 보이지 않더라도 접근 가능한 방법이 있는 것인지,
아니면 pdk계층과 커널계층 사이에서 무엇인가 특별한 작업을 해주어야 하는지 조언을 부탁드리겠습니다.

고도리

2011.01.15 11:26:08
*.237.243.143

음.......제가 file storage gadget을 써본지 넘 오래되어서 기억이 가물하다는 것을 전제로 해서 말씀드리면

 

1. file storage gadget의 경우 /dev 밑의 node를 쓰지 않았던 것으로 기억합니다.

2. file system과 scsi disk 관련이기 때문에 일반적으로는 open()등의 함수를 사용하지 않았던 것으로 기억하고 있습니다.

 

반드시 file storage gadget이라면 좀 더 자료를 봐야 답을 확실히 드릴 수 있을 듯 하고요(자료가 회사에 있어서)

 

jni를 이용한 pdk쪽 제어를 원하신다면 binder관련 부분을 공부하시는게 가장 도움이 될 듯 합니다.

제가 Android 강의할때나 혹은 다른 강사분이 NDK강의할때 반드시 들어가는 내용이거든요.

 

여기서 설명하기에는 너무 제약사항이 많습니다. 글로서는 한계가 있어서요....

 

여하튼 binder 혹은 socket을 이용해서 제어를 해야 여러가지 측면에서 Android는 좋다는 것을 생각하시는게

나을 듯 합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
5488 usb 디스플레이 장치는 여러 디바이스 드라이버를 종합하여 만들어야... [4] Ad_벤처 2012-01-18 1583
5487 노드 생성 관련 초보 질문입니다 [5] khyukj 2012-02-24 1583
5486 gcc, g++ 컴파일관련 질문인데요. [1] ice179 2014-06-05 1583
5485 android File 속성 변경 질문 [3] stshyoung 2011-03-29 1582
5484 [질문]2차 보드에서 부팅문제...[완료] [3] 조준동 2007-06-29 1581
5483 kernel panic VFS: Unable to mount root fs on unknown-bloc... [2] 이학남 2009-03-24 1581
5482 S5PV310 suspend/resume에 문제가 생겼습니다. [2] 노쑤 2011-12-19 1581
5481 [질문] 보드에서... USB Device 한영민 2007-06-21 1580
5480 6410에서 busybox로 만든 파일시스템이 포팅이 안됩니다. [2] 월광하백설 2011-12-20 1580
5479 S5PV210 보드 앱 배포 및 디버깅 문의 [2] Mr.PK 2011-11-16 1579
5478 [android] power management [10] wizard14 2013-01-23 1579
5477 리눅스 파일 시스템을 만들려고 합니다. [3] 혜민아빠 2012-09-27 1578
» 안드로이드 어플리케이션(java) 에서 커널에 포함된 드라이버 모듈 접... [5] kieslv 2011-01-15 1577
5475 uboot 관련 질문입니다 tftp 가 잡혔는데 안넘어가는이유. file [2] 사마사마 2013-05-06 1576
5474 안드로이드 폰 시간 & 설정이 되지 않는데 SIM이 있는 경우에 그... 나론 2011-12-21 1575
5473 블랙박스 설정기능 문의입니다. [1] 강용근 2012-10-13 1574
5472 [질문] directFB 포팅중 tslib 문제;; [3] 최원선 2008-02-28 1573
5471 우분투 리눅스 개발 환경 설정중... [4] 두현택 2009-03-27 1573
5470 커널 디버깅을 하기 위해 printascii()함수를 사용하려면 무슨 head... [1] 혜민아빠 2012-04-10 1573
5469 [문의]android.mk eng에서만 동작하도록 하는 방법 [2] 핸폰개발자 2013-06-17 1572

사용자 로그인