-
디바이스 드라이버 / 드라이버를 잘 만드려면Linux/Linux Device Driver 2020. 8. 24. 13:40
커널 소스 탐색
디바이스 드라이버를 작성하거나 이미 작성된 디바이스 드라이버를 연구할 경우, 사용중인 함수가 어떻게 구현되는지를 검토하거나 관련 데이터를 찾으려면 반드시 커널 소스를 탐색해야 한다. 처음 리눅스 커널 소스를 접하는 사람은 방대한 크기의 소스 트리 때문에 원하는 대로 검색하기가 쉽지 않다.
https://elixir.bootlin.com/linux/latest/source
Linux source code (v5.8.3) - Bootlin
elixir.bootlin.com
커널 소스를 찾으려면 이 사이트를 참조하는 것이 좋다. 리눅스 커널 버전 별로 모든 소스가 다 있다. 내가 찾고 싶은 함수를 검색하면 어디서 정의되었는지 어디서 참조되었는지 다 나온다. 내 버전에 맞는 커널 소스를 뒤져보자.
grep 명령의 조합
리눅서 커널에서 grep의 명령은 매우 강력하다. 커널 소스를 탐색할 때 이 명령만큼 유용한 명령은 없을 것이다.
include/linux 디렉터리 탐색 습관
디바이스 드라이버를 개발하는 과정에서 주로 커널 소스에 사용된 함수를 찾을 때, 의외로 매크로 함수로 만들어진 함수가 많다. 매크로 함수나 인라인 함수는 헤더파일에 정의되므로 include/linux 디렉터리나 include/asm부터 찾아보는 습관이 중요하다.
리눅스 커널 동작 원리
디바이스 드라이버를 개발은 누구나 할 수 있지만 신뢰성과 안정성을 가진 디바이스 드라이버는 아무나 개발할 수 없다.
이러한 신뢰성과 안정성을 가진 디바이스 드라이버를 개발하려면 리눅스 커널 동작 원리를 알아야 한다.
즉 디바이스 드라이버는 커널에 적재되어 동작하기 때문에 디바이스 드라이버가 문제가 발생했을때 커널 동작 원리를 알면 어디서 오류가 났는지, 왜 오류가 났는지 알 수있다.
https://blog.naver.com/crushhh/221662764150
[SW] 리눅스 커널은 왜 알아야 할까? 코드 몽키가 되어야 하나?
많은 사람들이 다음과 같이 말한다. * 리눅스 커널은 중요하다. 리눅스 커널을 잘 알아야 한다.그렇다...
blog.naver.com
책 추천
디버깅을 통해 배우는 리눅스 커널의 구조와 원리 / 김동현(Austin Kim) / 위키북스
난이도가 적당하다. Debug 중심이라서 이해하기 쉽게 설명되어있다. 리눅스 버전이 최신꺼다.
코드로 알아보는 ARM 리눅스 커널 / 문영일 / 제이펍
그림이 많아서 이해하기 쉽다. 근데 난이도가 높다. 리눅스 버전이 최신꺼다.
리눅스 커널 심층 분석 / 로버트 러브 / 에이콘출판
빠르게 읽을 수 있다. 전반적인 흐름을 알 수 있다. x86이다. 리눅스 버전이 낮다.(옛날꺼)
커널 메세지
커널 메세지는 /var/log/messages 파일에 모두 기록된다.
또는 dmesg 명령을 통해 가장 최근에 커널에서 발생한 커널 메세지를 출력한다.
'Linux > Linux Device Driver' 카테고리의 다른 글
디바이스 드라이버 / 실습 환경 설정 및 준비 (1) 2020.09.01 디바이스 드라이버 / 개발 방법 (0) 2020.09.01 디바이스 드라이버 / 헤더 파일별 함수 정의 (0) 2020.08.30 디바이스 드라이버 / 알게 된 것들 (0) 2020.08.28 Makefile (0) 2020.08.24