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

안녕하세요. 안드로이드의 모든것 NDK라는 책을 정말 감사히 읽고 있습니다.

 

5장의 자바 애플리케이션에서 GPIO 컨트롤하기 부분을 참조하여 타겟보드의

 

LED를 control 해보고자 노력중입니다만 난독증이 있는지.. 책과 같은 결과물이

 

나타나질 않아 문의를 드리고자 합니다.

 

source code는 이솝 게시판의 예제 자료가 책과 동일함을 깨닫고(감격..) 그대로

 

사용중에 있습니다만, 첫번째 문제는 컴파일에서 만나볼 수 있었습니다.

 

책의 내용에는

 

android$ source ./build/envsetup.sh

android/external/gled$ mm

으로 컴파일 시 세개의 파일이 새로 생성된다고 나와 있습니다만...

 

제가 컴파일해보면 다음과 같은 message만 나타납니다.

 

jhkim@jhkim-desktop:~/dev/V210/gingerbread/external/gled$ mm
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GINGERBREAD
============================================
make: Entering directory `/home/jhkim/dev/V210/gingerbread'
target Non-prelinked: libled (out/target/product/generic/symbols/system/lib/libled.so)
make: *** No rule to make target `out/target/product/generic/system/lib/liblog.so', needed by `out/target/product/generic/system/lib/libled.so'.  Stop.
make: Leaving directory `/home/jhkim/dev/V210/gingerbread'
jhkim@jhkim-desktop:~/dev/V210/gingerbread/external/gled$

 

liblog.so를 참조할 수 없다는식으로 이해됩니다만, libled, ledservice, libledclientjni의 폴더에서 각각 컴파일을

 

하면 어떻게든 세개의 파일을 확보 할 수 있었기에(정상적인 파일인지 의문입니다만..) 다음 단계를 진행해보고자

 

하였습니다만... 여기서 두번째 난관에 부딪혔습니다.

 

"이제 코드를 모두 작성했으니 다음과 같이 컴파일해서 모두 타겟에 설치하자." 라는 책의 설명 부분입니다...

 

난독증이 꽤 심한지라... 한참을 아래 box의 out/target/product/에 origen 폴더는 없는데... 하며 삽질하다가,

 

Target Board의 system/ 밑에 lib와 bin 디렉토리가 있음을 찾아내고... 이곳에 넣으라는 설명이셨구나;; 하고

 

깨달았습니다만... 어떤 방법으로 타겟보드에 집어넣는지를 모르는지라 또 한번 막혀버렸습니다 하하;;

 

아무쪼록... 초보의 무한 삽질에 조그마한 도움을 좀 부탁드립니다.

 

읽어주셔서 감사합니다 (_ _)


전호철

2013.02.05 20:49:07
*.162.60.10

에러 로그를 보시면 libled.so를 build 하기 위해서 liblog.so 가 필요한데 없다는 말입니다.

liblog.so 는 log를 뿌려주는 로그인데. 저게 없다는 것은 안드로이드 Full build가 한번도 되어 있지 않아서 liblog.so가 생성되지 않았거나. 혹은 libled.so를 만들기 위한 Android.mk 가 잘못되어서 참조하지 못하는경우의 두가지 경우로 볼 수 있습니다. 하지만 후자는 가능성이 적고요.


한번도 Full build를 안하신게 아닌가... 합니다.


아무튼 두번쨰 케이스일 경우 대충 뚜드려 맞추시거나 log를 사용하는 부분을 다 뺴시던가 하는 방법이 있습니다.


그리고 타겟에 올릴때는 adb remount로 system 파티션의 read only 를 read write로 바꿔주신 다음에 


adb push 명령어로 올리시면 됩니다.

미누유희

2013.02.06 00:34:25
*.115.113.222

댓글 감사드립니다. Full build에 대한 조언을 주셔서 잽싸게 make를 하여보았습니다.

이후 예제 source를 컴파일하여 보니 이전과는 다른 모습을 보였습니다.

 

make: Entering directory `/home/jhkim/dev/V210/gingerbread'
target Non-prelinked: libled (out/target/product/generic/symbols/system/lib/libled.so)
Install: out/target/product/generic/system/lib/libled.so
target Non-prelinked: ledservice (out/target/product/generic/symbols/system/bin/ledservice)
Install: out/target/product/generic/system/bin/ledservice
target Non-prelinked: libledclientjni (out/target/product/generic/symbols/system/lib/libledclientjni.so)
Install: out/target/product/generic/system/lib/libledclientjni.so
make: Leaving directory `/home/jhkim/dev/V210/gingerbread'

 

위와 같았습니다만.. Non-prelinked 도 보이고.. 여전히 정상적인 컴파일은 안되었습니다.

log의 libled.so, ledservice, libledclientjni.so는 모두 생성되어 해당 링크에 있음을 확인은 하였습니다만..

무엇이 부족했던걸까요?

전호철

2013.02.06 19:24:34
*.162.60.10

Non-prelinked 메세지는 왜 나오는지 잘 모르겠네요...??


어쨌던 Install 메세지가 떴으니 컴파일된거 올리면 돌아가지 않나요???


지금 올라가있는 상태 그대로 컴파일 하면 잘 되는데 이상하네요...

미누유희

2013.02.07 01:29:12
*.115.113.222

NDK 책관련 문의 게시판에 올렸어야 하는 글을... 이곳에 올린게 계속 밟히네요 ㅠㅠ 죄송합니다...

새로 문의글을 작성할까 하다가... 오히려 혼잡스러울것 같아서 문의를 이어갑니다.

Non-prelinked는 여전합니다만, 말씀하신데로 컴파일되어 생성된 File들은 설치가 되었습니다.

이에 드라이버 코드의 내용(이 부분은 책과 업로드된 예제가 많이 상이했습니다) 중 GPIO를 타겟에

맞추어 수정하고 컴파일하여 gmod.ko까지 설치를 완료하고, 테스트를 진행해 보았습니다.

그런데... 다시 막히고 말았습니다.

타겟보드에 실행된 테스트 애플리케이션에서 제어를 해보고자 On, Off 를 터치하면 아래와 같은

로그가 나타나며 잠시 뒤 애플리케이션이 자동적으로 종료되어버립니다.

 

ServiceManager(457): Waiting for service hybridego.LED...
ServiceManager(457): Waiting for service hybridego.LED...
ServiceManager(457): Waiting for service hybridego.LED...
ServiceManager(457): Waiting for service hybridego.LED...
ServiceManager(457): Waiting for service hybridego.LED...
LED::getLEDService 0x112700
LEDService not published, waiting...

 

살펴보면... getLEDService( )에서 Binder가 체결되지 못했다는 내용 같습니다만... 원인을 모르겠습니다.

조언 좀 부탁드리겠습니다.

전호철

2013.02.07 03:16:37
*.162.60.12

컴파일한 ledservice 를 실행하셔야 service가 등록이 되겠지요.

client 가 서비스를 찾는데 ledservice가 실행되어 있지 않아서 servicemanager에 등록되어 있지 않기 때문에 나타나는 현상입니다.


ledservice를 실행하시고 다시 해보세요 (백그라운드로 돌려도 됩니다.)

미누유희

2013.02.07 03:35:26
*.115.113.222

감사합니다. ledservice를 실행해주니 GPIO 컨트롤이 정상적으로 이루어졌습니다.

초짜의 무대포식 질문에 많은 가르침 주셔서 정말 감사합니다 (_ _)

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
5428 7인치 LCD (800x480)에서 안드로이드 일본어 IME [1] minong 2010-05-26 1549
5427 로비/인터폰 구현시 적절한 레퍼런스류 및 구조 조언 부탁합니다 [2] 마은빈 2011-07-05 1549
5426 Android Volume Control 문의 [5] 새희망 2011-11-15 1549
5425 native 서비스 layer에서 자바 layer로 noti? [5] wizard14 2013-05-30 1549
5424 6450 비디오 성능이 궁금합니다. [5] 김장균 2011-11-30 1548
5423 V310 uboot build error [2] 훌러덩 2011-08-05 1547
5422 sleep mode진입후 wakeup시 간혹 app가 안살아나는경우가 있는데요 [2] 문철민 2014-07-15 1547
5421 회사의 다른컴에서 aesop-embedded.org 접속이 안됩니다. [5] 조준동 2007-11-28 1546
5420 irq 처리 루틴 [4] 마대렐라 2014-02-04 1546
5419 터치 캘리브레이션 화면 안나오게하기 [1] 하하호호하하 2014-03-19 1546
5418 ioctl 콜 관련 질문입니다. [2] 문철민 2007-11-03 1545
5417 dm900b vs LAN9220 차이에 대해서 [2] gudrl 2013-05-02 1545
5416 전자부품 불용자재 및 잉여자재 고가에 매입합니다. 반도체센터 2012-07-10 1544
5415 Aesop 툴체인은 어디서 받아야 하나요 ? [1] 이성윤 2010-05-04 1542
5414 s3c6410 tvp5150 관련질문 [3] 한태창 2011-02-14 1542
5413 안드로이드 파일 시스템 특정 폴더 빌드 않되게 하는 명령 [1] 김민욱 2012-08-26 1542
» 애플리케이션에서 GPIO 컨트롤하기 에 대해 문의드립니다. [6] 미누유희 2013-02-05 1542
5411 리눅스 커널 2.6.27.에 안드로이드 2.1 올리기 [2] 그린맨 2010-03-29 1541
5410 이더넷포트와 스위칭허브IC간의 MII연결 질문 [1] Happycpu 2011-08-09 1541
5409 디바이스 드라이버에서 메모리를 잡으니 다른 스택메모리에 영향을 주... [1] bwparc 2012-05-23 1541

사용자 로그인