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

안녕하세요, 

다름이 아니라, 리눅스에서 Kernel Module을 로드하는 순서에 대하여 자료를 찾고 있으나 별다른 내용을 찾지 못하여 이렇게 질문을 올리게 되었습니다. 


우선 Kernel에 내장된 Module과 추가적으로 빌드한 External Module에대해서 장치가 연결되면 장치에 해당하는 어떤 드라이버가 먼저 로드 되느냐?

  * ex) Modem 장치 연결 시, cdc-acm Module과 Externel Modem Module이 설치 된 경우 어떤것이 먼저 로드될 것인가?


일단 확인해본 내용으로는 내장된 Module이던 Externel Module이던 둘중에 미리 로드(insmod or modprobe)되어 있다면 로드 된 Module로 장치가 연결된다는 확인되었습니다. 


하지만 둘다 로드되어있지 않는 상태에서 장치를 연결한다면 과연 어떤 기준으로 가지고 Module이 매칭되어 먼저 올라올 것인가에 대하여 궁금합니다. 


생각해보면, 드라이버 매칭 및 로드 우선 순위의 결정사항으로

1. 내장 우선 검색 후 외장 검색

2. Module의 MODULE_DEVICE_TALBE에 등록된 VID/PID 매칭 기준 확인

  * VID/PID 매칭보다 VID/PID/INTERFACE_CSP로 매칭되는 것이 먼저 로드 되는지?


무언가 정리 없이 주저리 적어보았는데요, 

혹시라도 알고 계신분이 있다면 답변 부탁 드리겠습니다. 


profile

JhoonKim

2012.08.15 08:01:26
*.162.5.194

1. 내장 우선으로 로드 합니다. (mach-board 파일에 등록되어 있는 순서대로 하고요..)

2. 외장 모듈의 경우 root file system에서 수행을 결정 합니다.

3. 어떤 모듈이 매칭되어 먼저 올라올 것인지에 대한 문제..

    제 경험으로는 Kernel이 우선이며, 그 이후 udev에서 디텍션 합니다. udev.rule을 따르겠네요.


저 같은 경우 디버깅의 편리성을 위해, kernel 내장 module 처리를 안하고.. 외부 .ko 파일로 가지고 있다가...

udev action으로 처리하는 방법을 많이 썼습니다.

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

사용자 로그인