기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안녕하세요
이제 시작하는 초보입니다
misc 밑에 driver 코드를 추가하고 그런 작업들을 하는중에 두가지 경우가 있어서 질문 드립니다
1) 첫번째 경우
aaa_drv.c 를 linux-2.6\drivers\misc 에 넣고
이 c 파일엔 아래 함수들로 구성이 되 있구요
register_chrdev
class_create
device_create
Makefile 에서 모듈로 만들고
obj-m += aaa_drv.o
init.rc 에서 insmod 하는게 전부입니다
insmod /lib/modules/aaa_drv.ko
2)두번째 경우
bbb_drv.c 를 linux-2.6\drivers\misc 에 넣고
이 c 파일엔 아래 함수들로 구성이 되 있구요
misc_register
platform_driver_register
platform_device_register
Makefile 에서 커널에 포함 시키고
obj-y += bbb_drv.o
ueventd.rc 에서 이런식으로 권한설정을 해야 한다고 되 있습니다
/dev/bbb_drv 0666 xxx yyy
질문)
ueventd.rc 에 권한설정을 첫번째 경우에 안하는것은 모듈로 만들면 필요없기 때문인가요?
아니면 쓰이는 함수들이 틀려서 그런건가요?
첫번째 경우는 권한설정하는곳이 없습니다
권한설정시 0666 까진 알겠는데 뒤에 UID GID 는 어떻게 설정해야 할지 모르겠습니다
검색을 해보니 android_filesystem_config.h 에 모든 UID/GID 가 있다는데 이 파일을 봐도 어케 해야하는지 쩝
새로운 기능을 하는 칩셋을 등록하는경우 misc 밑에 있으니까 그냥 system misc 이렇게 해주면 되는건가요?
UID는 User ID, GID는 Group ID입니다. 근본적으로는 Linux의 user 개념을 공부하셔야 하는건데,
원칙상으로는 잘 지켜져야 하지만, 실제 안드로이드에서 구현을 할때는 잘 안지켜지는게 사실입니다.
위에서도 "/dev/bbb_drv 0666 xxx yyy"라고 설정하면 UID/GID인 xxx,yyy를 아무렇게나 설정해도
어차피 permission이 666이므로 아무나 R/W가 가능합니다.