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

안녕하세요 ? 한가지 여쭈보려고 합니다.

 

Device driver를 보면, 모두 probe()함수가 있습니다.

이 함수가 언제 호출되는지 ? (시점), 또는 어떤 경우가 만족될 때 호출되는지 ? (조건)”을 알고 싶습니다.

먼저, 제가 알고 있는 두 가지의 경우를 말씀 드리고, 세 번째 경우에 대해서 문의를 드리고자 합니다.

 

#.첫째 경우: platform driver의 경우

struct platform_device AAA = {

   . name = “ BBB “

}

struct platform_driver CCC = {

   .driver = {

      .name = “BBB”

   }

}

platform_device_register()함수를 이용하여 AAA(device)구조체를 등록하고,

platform_driver_register()함수를 이용하여 BBB(driver)구조체를 등록한 다음에

두 구조체의 .name (여기서는 BBB)이 동일하면, platform_driver 구조체 멤버인 probe()함수가 호출됩니다.

 

#.둘째 경우: I2C, SPI와 같은 BUS 로 통신하는 device driver 경우

struct i2c_board_info DDD= {

I2C_BOARD_INFO("EEE", ),

};

static struct i2c_driver FFF = {

             .driver = {

                           .name = "EEE",

             },

};

i2c_register_board_info()함수를 이용하여 DDD구조체를 등록하고,

i2c_add_driver()함수를 이용하여 FFF 구조체를 등록한 다음에 두 구조체의 .name (여기서는 EEE)이 동일하면,

i2c_driver 구조체 멤버인 probe()함수가 호출됩니다.

 

# 셋째 경우: USB, PCI, SDIO, 기타 등등의 BUS로 통신하는 device driver의 경우

이 경우(유형)의 driver의 구조()는 위의 둘째 경우와 유사하며,

BUS마다 정형화된 포멧(driver 구조체와 그 등록함수)이 있더군요

그러나, 이 경우의 device의 구조(체) 유형은 제 판단으로는 정형화된 포멧이 없는 것 같습니다.

BUS유형의 driver이면서도 위의 둘째 경우와는 다른 것 같습니다.

, 위의 첫째 경우와 둘째 경우에는

device driver 구조체 각각에 존재하는 .name 멤버가 같아야 probe()함수가 호출이 되는데,

셋째 경우처럼 ‘device 구조체가 등록이 안 되는 구조라면, .name멤버를 이용하여, device<->driver 상호간의 쌍()을 검색하지는 못할 것으로 추측됩니다.

그렇게 되면, 첫째, 둘째의 방법(메커니즘)으로는 probe()함수의 호출이 불가능할 것 같습니다.

그렇다면, 어떤 메커니즘, 어떤 방법에 의해서(또는 어떤 시점에서) probe()함수가 호출이 되는지요 ?

그리고, I2C,SPI BUS경우는, device를 표현하는 정형화된 포멧(=struct i2c_board_info & i2c_register_board_info()함수) 있는데, USB,PCI,SDIO 등의 대부분 BUSdevice를 표현하는 정형화된 포멧이 왜 없는지요 ?

(만약, 제가 잘못 알고 있고, 실제로 있다면 그것을 알려 주시면 감사하겠습니다.)

 


고도리

2013.05.19 21:09:52
*.111.12.170

lxr 사이트 들어갔더니....오늘 접속 안되네요...ㅠ.ㅠ


일단, 대부분의 bus관련은 각 버스마다 고유의 device 형태를 가지거나, 아니면 그대로 링크드 리스트에 붙이는 함수가 있습니다(e.g. i2c).


제 기억으로는 각 bus 고유의 device는 항상 struct device를 가지게 되며, 이 녀석을 이용하는 것으로 기억이 납니다(지금 검색할 상황이 아니라서 추정과 기억에 의존합니다).


정형화된 format은 struct device 만 보시면 될 듯 하며, 나머지 부분은 구현하기 편한대로 했다라고 밖엔 생각이 안드네요...^^, 커널 메인테이너들 주관이 들어가 있을테니깐요....ㅎ

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
6108 [완료] LCD 맨 위에 하얀색 1줄은 정상인지요. [4] 오주열 2007-05-11 2604
6107 6410에 SDIO Wi-fi 질문 입니다. [7] 여정휘 2009-02-14 2602
6106 S3C6410 MFC Encode 문제 [10] Masashi Miyakawa 2009-07-24 2601
6105 라즈베리파이나 cubox의 1080p 동영상 재생 [3] eou4 2013-10-29 2592
6104 [질문 혹은 참고] 혹시 BSD계열 올려 보신분 ? [1] 김희만 2007-05-14 2592
6103 partition size 저정과 booting 오류 문제 [4] 전문가가되자 2013-08-28 2591
6102 MODULE_DEVICE_TABLE로 선언 했을때 probe 함수 호출 [5] 훌러덩 2011-12-08 2589
6101 kernel 2.6.28.2 포팅 [1] 김광준 2009-01-31 2589
6100 android에서 키맵핑 할때 android 에서 "HOME" 키가 안먹네요.. [1] 신종현 2009-07-03 2588
6099 No private recovery resources for TARGET_DEVICE passion choboja 2010-12-30 2579
6098 [완료] CPU 클럭 스피드 [3] 강덕하 2007-05-15 2578
6097 [완료] LCD에 잔상이 생기네요. [3] 양민철 2007-06-26 2572
6096 [질문]스피커에 대해서요.. [3] 이태간 2007-05-26 2571
6095 Android의 PDK와 SDK의 차이점이 무엇인가요? [1] 아침미소 2010-04-15 2570
6094 [질문][S3C6410]SPI/SDIO/USB 전송속도 [2] 김정희 2011-09-28 2568
6093 [질문] 패널(모니터) 끄기 관련 [2] 김희만 2007-05-12 2546
6092 Exynos4(S5PV310) toolchain관련 문의 [5] 준성아빠 2012-01-04 2545
» driver에서 probe()함수가 호출되는 시점은요 ? [1] 열심히 2013-05-17 2543
6090 [질문] 입력 장치는 어떤 것을 이용하는가요? [완료] [7] 성진호 2007-06-19 2543
6089 USB Hub를 이용한 USB-to-Serial(FTDI) 동작 에러 제일파프2 2013-05-07 2536

사용자 로그인