강좌 & 팁
안녕하세요 판다 이우영입니다.
오늘은 저번시간에 배운 내용들을 가지고 커널에서 원하는 소스위치를 찾아 볼까 합니다.
그럼 이야기를 시작해 보겠습니다.
1. 소스코드는 어디에?
커널과 디바이스 드라이버는 서로 땔래야 땔수 없는 관계입니다.
커널을 수정하고 디바이스 드라이버를 수정하는 일이 점점 늘어 갈겁니다.
이정도 하시는 분들은 어떤 소스가 어디쯤에 위치하는지 바로 감이 옵니다.
하지만 뉴비의 입장에서는 머나먼 이야기 입니다.
그렇다면 우리는 어떤 방법으로 그넓은 커널 에서 원하는걸 찾아 낼까요?
바로 저번시간에 배웠던 커널 설정을 이용하는 방법입니다.
기억 나시나요? menuconfig 에서 help부분!!
위에 보시는거와 같이 소스파일 위치가 어디있는지 보입니다!!
하지만 위에보이는 위치에 가보면!! 이런.. 소스가 너무 많아요~~
이때 보는것이 Makefile 입니다.
아까 설정에서 디바이스 드라이버를 설정하면서 하나의 CONFIG가 만들어 졌을 겁니다.
(여기서는 CONFIG_MMC_SDHCI_S3C 입니다.)
Makefile을 열어 보겠습니다.
그러면 보시는거와 같이 어떤 파일이 컴파일 되는지 확인하실수 있습니다.
전에 ezs5pv210 에서 사용하는 SPI 드라이버 소스가 어떤건지 물어보신분이 있었습니다.
이런 방법을 이용하면 쉽게 찾을 수있겠죠?
하지만 모든일이 이렇게 쉬울리없죠!!
이런식으로 찾기 힘들경우가 꼭 있습니다.
이런경우 매우 귀찮은 작업들과 노가다가 필요할지 모릅니다 ㅎㅎ.;
보통 arch/arm 밑에 사용하시는 보드에 관련된 폴더(mach 폴더입니다)가 항상 있습니다.
(혹은 플랫폼 폴더가있습니다.)
보드안에서 사용되는 디바이스 드라이버의 플랫폼 정보를 미리 올려두는경우 여기에 있을 확율이 매우 높습니다.
우리 보드 같은경우 arch/arm/mach-s5pv210/mach-ezs5pv210.c 파일이 있습니다.
파일안에서 I2C로 검색을 해보니 위와같은 소스코드가 보입니다.
보시면 "i2c-gpio" 라는 이름으로 드라이버를 등록하고 있습니다.
그러면 이 이름을 가지고 grep 명령을 이용해 drivers/i2c/ 를 검색해보면 일치하는 파일이 나올 겁니다.
보이시죠?
이런 방법도 있다는 것입니다.
앞으로 많은 소스 코드를 뒤져보실 때 이글이 도움이 되었으면 좋겠습니다.
꼭 직접 테스트를 해보시길 바랍니다.
(눈으로만 본것은 결코 자기것이 되지 않습니다.)
그럼 오늘은 여기까지!!
다음시간에 만나요~