서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.

안드로이드 아이스크림 버전에서 테스트를 하고 있습니다


빌드 후에 생성되는  libled.so, ledservice, libledclientjni.so  세개의 파일을 빌드후에 타겟보드에서 테스트를 하였는데요


먼저 디바이스드라이버를 insmod하고 간단한 테스트 프로그램을 만들어서 커맨드명령으로 led on/off 를 테스트 하였습니다.


디바이스드라이버를 lsmod 한후에 ls /dev/gpio가 생성되있는것을 확인한 상태입니다.


다음으로 빌드한 ledservice를 실행하려 는데 아래와 같이 ledservice프로그램이 바로 죽어 버리더라구요

-----------------------------

root@android:/system/bin # ./ledservice &                                      
[1] 2086                                                                       
root@android:/system/bin #                                                     
[1] + Done (1)             ./ledservice

-----------------------------


libled/ledService.cpp 파일 내용중에

LEDService::LEDService()
    {
        LOGE("LEDService created.");
        mNextConnId = 1;
        pthread_key_create(&sigbuskey, NULL);
        //fd = open("/dev/gmod", O_RDWR);
        fd = open("/dev/gpio", O_RDWR);
        LOGE("fd : %d\n",fd);

        if (fd < 0)
        {
                LOGE("open gmod driver failed 2\n");
                exit(1);
        }
    }

이렇게 수정하였습니다

드라이버를 misc_register 이용하여 등록하였는데  insmod 했을 경우 /dev/misc 폴더가 없더라구요

그래서 open에서 misc 관련 부분은 주석처리하고 하였는데요


프로그램이 바로 죽어 버리는게 BBinder::onTransact()에서 안걸리는것 같은데요 제가 어디부분을 확인해봐야 하나요?

바인더 등록할때 addService(String16("hybridego.LED") 명칭은 확인하였습니다.


고도리

2015.01.20 14:56:21
*.200.239.210

device driver가 제대로 안되어서 그런 듯 합니다.

gpio관련 driver는 개발보드에 따라 달라집니다.


해당 드라이버가 우선적인데, 개발보드에 맞춰서 수정해야 합니다.


driver open에 문제가 생겨서 exit(1) 함수가 호출된 듯 합니다.

전호철

2015.01.21 11:39:15
*.172.200.192

ledservice 의 어느 부분에서 죽는지 정확히 파악해보세요. 몇번째 라인까지 실행이 되는지 알아보세요.

원래 잘 돌아가는 예제인데. 드라이버를 수정하셨다면 드라이버 오픈하는데서 죽었을 가능성이 높을것 같네요

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

android binder 의 onTransact(uint32_t code, ...)의 code값은 ... [1]

  • ice179
  • 2015-01-29
  • 조회 수 290

ndk onTransact 함수에 대한 질문인데요 [1]

  • ice179
  • 2015-02-07
  • 조회 수 247

gpio 컨트롤관련하여 ledservice 가 바로 죽어 버리는현상이 나오는... [2]

  • biokk
  • 2015-01-17
  • 조회 수 224

사용자 로그인