안녕하세요.
안드로이드 디바이스 드라이버 모델 및 카메라 관련 공부중인데요.
그중에서 Board file 관련해서 궁금한점이 있어서요
커널이 시작되고,Start_kernel()
쭉 따라내려가다 보면, Setup_arch()라는 곳에서 분명히 보드 파일을 불러들어와서
MACHINE_START 로 Macro 된곳에서 machine 보드 init 파일을 실행해주잖아요.
그런데, 이 파일 예를들어 board_s3c_xxxx.c 에 들어가보면,
I2C및 여러가지 Bus들을 초기화 해주는 부분이 있어요, 그리고 Platform Device로 등록을 해주던데
제가 알기론 분명히 Devices,Bus,Class 등 및 Platform Device Bus는 Start_kernel()의 Rest_init()에서
초기화 해주는 걸로 알고 있거든요.
즉, 질문을 줄여보자면, Rest_init에서 Platform Bus를 등록하기 이전에 Platform Device 등록이 가능하냐는 것이구요.
하나 더 질문하고 싶은게, Platform Bus의 경우Bus뿐만 아니라 Device로도 등록이 되던데 왜이러는지 아시는 분이 있으시다면
좀 알려주셨으면 합니다.
Linux Device Driver Model은 정말 어렵군요... Kobject 쪽은 손도 못대겠어요..;;
"모든 디바이스와 드라이버는 반드시 bus에 존재해야 한다"입니다. 이 말을 제대로 설명해 놓은 문서가 없어서 문제지요...^^