Android 기술 Q&A 
Q&A 게시판에 질문을 남기신 글에 대한 답변/덧글/쪽글에 대한 Push 메일 서비스를 받고자 하시는 분들은
☞ Push 메일 서비스 공지를 필독하시기 바랍니다.
포팅시 binder 문제에 대하여..
작성자
작성일 2008-05-30 (금) 18:21
ㆍ추천: 0  ㆍ조회: 12842      
IP: 203.xxx.51
안녕하세요.
pxa270 bulverde환경에서 invain님의 자료를 참고하여 포팅을 했구요.
커널은 2.6.23-m5-rc14버젼을 포팅하였습니다.
 
m3버젼의 커널과 달리 m5에서는 driver/binder와 driver/android/binder.c 즉, binder가 두곳에 있더군요.
driver/binder 모듈 적재시 major 251~254로 모듈이 잡히구요.
android/binder.c 적재시에 major 10와 minor는 /proc/misc의 minor로 잡히더군요.
 
binder를 적재하지 않고 init을 실행하면 레드아이 및 안드로이드 메인화면까지 구동이 됩니다.
하지만 binder를 적재시 문제가 생기는데요.
 
android/binder.c 모듈을 적재시 문제 내용입니다.
init을 구동하게되면 다음과 같은 메시지가 출력되는데요.
binder는 runtime과 system_server process를 close와 open을 무한히 반복하고 있는 상황입니다.
 
binder_open: 640:640   -> run_time process open
binder_mmap: 640 40008000-40408000 (4096 K) vma 71 pagep 5f
binder_open: 656:656   -> system_server process open
binder_mmap: 656 42641000-42a41000 (4096 K) vma 71 pagep 5f
binder_flush: 656 woke 3 threads
binder_open: 697:697  -> com.google.process.content process open
binder_mmap: 697 42641000-42a41000 (4096 K) vma 71 pagep 5f
binder: 656 close vm area 42641000-42a41000 (4096 K) vma 2020071 pagep 5f
binder_flush: 656 woke 0 threads
binder: release 656:656 transaction 107 in, still active
binder: send failed reply for transaction 107 to 697:697
binder_release: 656 threads 5, nodes 19 (ref 22), refs 2, active transactions 1, buffers 4, pages 1
binder: 640 close vm area 40008000-40408000 (4096 K) vma 2020071 pagep 5f
binder_flush: 640 woke 0 threads
binder_release: 640 threads 4, nodes 2 (ref 1), refs 16, active transactions 0, buffers 1, pages 1
-> runtime process close
binder: 697 close vm area 42641000-42a41000 (4096 K) vma 2020071 pagep 5f
binder_flush: 697 woke 0 threads
binder_release: 697 threads 3, nodes 0 (ref 0), refs 7, active transactions 0, buffers 0, pages 1
-> com.google.proce.... close
 
다시 runtime과 system_server process가 구동되며 위의 메시지를 출력하는 과정이 무한히 반복되고 있습니다.
strace를 이용하여 디버깅을 해보았지만 원인을 찾기가 힘드네요.
어디서 문제가 있는걸까요?
 
아.. 한가지 질문 더 보탠다면 종종 red eye나 메인화면이 blank로 되는경우가 있는데요.
이것은 역시 frambuffer의 pagefliping작업이 적절히 되지 않아서인가요?


조언좀 부탁드리겠습니다. 수고하세요~
 
 

p.s  binder모듈 미적재시 ps 상황입니다.
       그리고 system과 data는 sd카드에 저장하여 /와 symbolic link를 하였습니다.

USER     PID   PPID  VSIZE RSS   WCHAN    PC         NAME
root     1     0     2564  312   c003cde0 000c98d8 S init
root     2     0     0     0     c004d9b4 00000000 S kthreadd
root     3     2     0     0     c003f4b4 00000000 S ksoftirqd/0
root     4     2     0     0     c0058cec 00000000 S watchdog/0
root     5     2     0     0     c015e1e0 00000000 D events/0
root     6     2     0     0     c004a92c 00000000 S khelper
root     59    2     0     0     c004a92c 00000000 S kblockd/0
root     67    2     0     0     c004a92c 00000000 S ksuspend_usbd
root     73    2     0     0     c01a4774 00000000 S khubd
root     97    2     0     0     c0061dc0 00000000 S pdflush
root     98    2     0     0     c0061dc0 00000000 S pdflush
root     99    2     0     0     c00656fc 00000000 S kswapd0
root     100   2     0     0     c004a92c 00000000 S aio/0
root     194   2     0     0     c019d050 00000000 S mtdblockd
root     210   2     0     0     c004a92c 00000000 S kmmcd
root     222   2     0     0     c01bfcb8 00000000 D mmcqd
root     233   2     0     0     c0278300 00000000 S krfcommd
root     234   2     0     0     c004a92c 00000000 S rpciod/0
root     235   2     0     0     c01143e4 00000000 S jffs2_gcd_mtd2
root     278   1     2556  264   c008878c 000e167c S syslogd
root     313   1     2564  248   c003b0dc 000e4154 S klogd
1        364   1     1752  608   c008823c 401255a4 S portmap
root     448   1     4152  848   c003cde0 000c9a04 S -sh
root     457   2     0     0     c028a9fc 00000000 S lockd
root     459   2     0     0     c00cf7f4 00000000 S kjournald
root     463   448   2568  384   c003cde0 000c9a04 S /bin/sh
root     467   463   252   164   c008823c 0000ab0c S /init_binary_patch
root     649   467   732   308   c003cde0 afe0ceac S /system/bin/sh
root     651   467   644   228   c020b674 afe0ca9c S /system/bin/debuggerd
root     652   467   3340  572   ffffffff afe0c79c S /system/bin/rild
9999     653   467   51648 12752 00000000 afb06418 R zygote
root     654   467   85280 16524 ffffffff afe0d204 S /system/bin/runtime
bluetooth 656   467   1224  636   c008823c afe0d07c S /system/bin/dbus-daemon
root     694   649   844   320   00000000 afe0bfbc R ps

이름아이콘 invain
2008-05-30 23:16

m5-rc14 커널 버젼을 사용하고 계시다면, 안드로이드의 IPC는  2개가 있습니다.
1) ./driver/binder/(251-253)에 위치한 palsource에 의해 제출된 2005년도의 디바이스 드라이버
2) ./android/binder.c (10-11)에 위치한 google에 의해 작업된 2007년도의 디바이스 드라이버

구글은 최종적으로 palm source에 의해 제출된 openbinder를 android ipc로 나름대로 개선작업을 하여
기존의 ./driver/binder/를 제거(추후 커널 버젼에서 이 디렉토리를 못보게 되실겁니다.)
하고 android features를 ./driver/android/에 통합 일관화 하기위해
작업을 하고 있습니다. 따라서, m5-rc14을 사용하는 경우에 make menuconfig를 통해 2개 ipc모두
enable하는 경우에 기본적으로 안드로이드 구동이 ./android/ 디렉토리의 binder 모듈을 사용하게되어
있습니다.

결론적으로 먼저 binder 모듈이 적재 되지 않았는데 레드아이 및 안드로이드 메인화면까지 구동이된다는
것이 신기합니다.^^ 그건 아닐겁니다. 확인을 위해서....
위의 ./driver/binder --> ./driver/binder.disable and ./android/binder.c --> ./android/binder.c.disable
하시고 커널을 재빌드후에 안드로이드를 구동해보세요.. 정말  binder 없이 안드로이드 메인화면까지
나오는지 댓글로 결과를 알려주세요. 정말 그런지 제가 더 궁금해집니다요...
만약 위처럼 했는데 정말 안드로이드 메인화면이 구동되면 제가 연락 드릴겁니다. ^^


종종 red eye나 메인화면이 blank로 되는경우가 있다면, frambuffer의 double buffer 및
pagefliping작업이 Perfect하지 않아서일 확률이 상당히 높습니다. 이건 For your self....


ps 정보에 dalvikvm  프로세스 정보가 안보이네요.. 신기하다...@@
   
이름아이콘 invain
2008-05-30 23:19
음.. 그리고 간지가 생명님.. 위에 쓰신 내용중에 binder open/close에 대한 디버그 정보를 보여주셨는데 ./driver/android/의 binder.c 파일에서  if(binder_debug_mask & BINDER_DEBUG_OPEN_CLOSE) 의 상수값 처리를 어떻게 처리하여 콘솔에 출력시켜 버리셨는지도 댓글로 알려주세요.. 중복의 처리로 인해 자칫  binder가 없는데 안드로이드가 구동된것처럼 보신게 아닌지 파악할려고 합니다.  정말 binder 없이 안드로이드 구동되는지 /dev/binder 디바이스 노드파일도 제거하여 /init 실행시켜보시구요....
   
이름아이콘 간지가생명
2008-05-31 02:46
일단 invain님 답변 감사드립니다^^ driver/binder와 ./android/binder.c 모두 확실히 disable했으며 binder 장치파일까지 제거해도 안드로이드는 구동이 됩니다. 저도 참 의아합니다... ㅠ 또한 dalvikvm 프로세스는 init 구동후 run 됬다가 (ps로 확인하였습니다..) com.google.process.content process가 올라오는시점에 사라지더군요. emulator상에서나 invain님의 ps 정보를 봐도 dalvik 프로세스가 없길래 의심을 가지지 않았었는데 문제가 되는걸까요?
   
이름아이콘 간지가생명
2008-05-31 02:56
아.. 그리고 기존 binder.c파일을 수정한건 없구요~ 위의 debug메시지는 init을 foreground로 실행하니 system/sh로 넘어가더군요. 그때 콘솔에 올라온 debug메시지를 캡쳐해온거구요. 메시지중 진하게 쓰여진 부분은 게시판에 글쓰는 과정중 제가 임의로 작성한것입니다.^^ 그런데 invain님께서 언급하신 내용중에 "중복의 처리로 인해 자칫 binder가 없는데 안드로이드가 구동된것처럼 보인...." 이 말씀이 잘 이해가 않가는데요.. 좀더 디테일하게 설명부탁드려도 될까요?
   
이름아이콘 간지가생명
2008-05-31 03:06
에궁.. 그리고 종종 init구동시 red eye가 blank 로 화면이 뜨는데요. 이상하게 red eye가 blank로 뜨더라도 꼭 메인화면은 뜨네요. (물론 이때는 binder 모듈 미적재시입니다. binder모듈을 적재하게 되면 red eye에서 runtime,system_server무한루프상태..ㅠ;;) 하지만 이때 뜨게되는 메인화면은 우측 상단에 시계부분이 제대로 않나오는데요. 만약 double buffer와 pagefliping작업이 완벽히 되지 않았다면 red eye도 blank상태, android 메인화면도 blank상태로 되야 되는게 아닌가 의구심이 듭니다.. red eye가 blank일시 뜨는 메인화면은 혹시나 참고가 될까하여 윗글에 올려놓았습니다.
   
 
덧글 쓰기 0
3500
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.
    N     분류     제목    글쓴이 작성일 조회
4953 안드로이드에 탑재된 프로그램 지우는 방법 좀 알려주세요... 2008-04-25 9050
4952 도와주세요~ 2008-05-05 8624
4951 에뮬의 system과 data를 추출할때.... 2008-05-06 8513
4950 커널 사이즈가 얼마정도 나오시나요? 2008-05-07 8555
4949 sd카드에서 데이터 가져오기에 대한 질문 2008-05-07 8747
4948 UI와 디자인에 대해서 궁금한 점이 있습니다. 2008-05-07 8299
4947 2.6.23을 zImage빌드를 하였습니다 2008-05-07 8413
4946 안드로이드에서 파일 다운로드에 관해 여쭤봅니다... 2008-05-13 9544
4945 UI이벤트 처리 질문. 2008-05-13 8425
4944 다이얼로그 허접하게 만들었습니다 참조하세요~.. 2008-05-14 8494
4943 혹시m5버전 멥에 오버레이 띄우는 방법 아시는분~.. 2008-05-15 8601
4942 Bitmap 사용하는 방법 아시는분 계신가요??? 2008-05-16 8714
4941 loop back 마운트에 대해서 2008-05-16 8465
4940 문자를 이용하려 하는데... 2008-05-19 8522
4939 안드로이드에서의 한글 지원은? 2008-05-19 10577
4938 안드로이드를 띠울때 2008-05-19 8533
4937 포팅 관련 질문입니다. 2008-05-19 8493
4936 포팅관련 framebuffer에 관하여.. 2008-05-19 11403
4935 service를 이용한 네트워크 접속, 어떤가요? 2008-05-20 8811
4934 Spinner관련해서요.ㅠ 2008-05-20 9486
4933 질문이 있습니다. 2008-05-20 8466
4932 Re.. 수정해서 다시 올려욤 2008-05-21 14294
4931 메시지박스띄우기 2008-05-21 10887
4930 multicast programming 2008-05-21 10496
4929 가장 먼저 실행되는 Activity 2008-05-23 9075
4928 Dialog View 에서 activity 로 Dialog의 종료된 상태를 넘겨주.. 2008-05-23 10608
4927 Bitmap형식의 이미지사이즈를 바꾸고 싶습니다... 2008-05-26 11629
4926 안드로이드 App. 메뉴에서 32번 글 VideoPlayer 2008-05-28 17852
4925 포팅시 binder 문제에 대하여.. 2008-05-30 12842
4924 파일첨부가 않되어 밑의글에 이어 추가해요~ 2008-05-31 8438
4923 localhost로도 접속이 안되는데 왜 그럴까요?? 2008-06-01 8572
4922 invain님께.. (리플에 대한 내용입니다) 2008-06-02 9229
4921 안드로이드에서 DataBase접근하는 방법에 대해서.... 2008-06-02 15325
4920 안드로이드 플랫폼상의 문자입력기 관련 질문.. 2008-06-03 8456
4919 안드로이드 플랫폼상의 문자입력기 관련 질문.. 2008-06-03 11379
4918 간만에 또 막히는 곳이 있어서 질문올립니다. 2008-06-03 8469
4917 "Hit" testing on a View(MapView) 2008-06-04 14019
4916 들풀님의 Safari 분석 자료에서 질문 있어요... 2008-06-04 8779
4915 invain님~ 두가지 질문이 있습니다` 2008-06-05 10203
4914 에뮬레이터 내장 폰북의 DB에 연동한 폰북에 사진등록 방법 질.. 2008-06-05 11373
4913 안드로이드 소스 상에서의 폰트 변경 2008-06-05 11320
4912 contact database에 photo 추가 관련 2008-06-06 11362
4911 Google IO: Android 50 Q&A 2008-06-06 8678
4910 다시 외부 DB 접근하는 것에 대해 여쭤봅니다. 2008-06-09 9752
4909 오류가 나는데 이유를 잘 몰르겠네요.-_-;; 2008-06-09 14208
4908 다이얼로그 질문이 있습니다. 2008-06-10 8514
4907 들풀님께 여쭈어봅니다 ^^ 2008-06-12 8458
4906 invain님께 의견을 듣고 싶습니다. 2008-06-14 8707
4905 폰에 그림이나 문자 표시하는법. 2008-06-16 8384
4904 맵 소스는 어디서 볼 수 있나요? 2008-06-17 8493
12345678910,,,101