반응형

리눅스 디바이스 드라이버 커널 모듈 예제 소스


※ 순서

1. 커널 오브젝트(.ko)를 만들기 위한 소스코드(디바이스 초기화, 등록, 제거, 읽기, 쓰기 등)

2. Make file

3. make ▶ xxx.ko 커널 오브젝트 생성

4. 디바이스 파일 생성

5. 커널에 커널 오브젝트(.ko) 적재

6. 테스트 응용 프로그램 작성 및 실행



1. 커널 오브젝트(.ko)를 만들기 위한 소스코드(디바이스 초기화, 등록, 제거, 읽기, 쓰기 등)

디바이스 초기화에서 디바이스 등록/제거 시,

주 번호와 디바이스 파일 명을 파라미터로 넣는다


2. Make file

Makefile 작성

- 컴파일 옵션, 커널오브젝트(.ko)명 등을 작성하여 많은 수의 파일을 컴파일 할 경우, 용이하게 해준다


3. make ▶ xxx.ko 커널 오브젝트 생성

컴파일하여 커널오브젝트(.ko)를 생성한다


4. 디바이스 파일 생성

- mknod  /dev/xxx(디바이스파일)  c(character device driver)  240(Major Number)  32(Minor Number)


- /dev/ 에서 생성된 디바이스 파일 확인


5. 커널에 커널 오브젝트(.ko) 적재

- insmod xxx.ko 커널 오브젝트(.ko)적재

- lsmod 명령어로 적재된 모듈 확인


6. 테스트 응용 프로그램 작성 및 실행

- 응용 어플리케이션에서 디바이스파일 open


- 실행


- 커널 메시지 버퍼 출력(display message)

  : 정상적으로 커널 적재 및 디바이스 드라이버가 동작한다


※ 참고 : 디바이스 파일 제거 및 모듈 제거

- 디바이스 파일 제거 : rm /dev/xxx.ko

- 모듈 제거 : rmmod xxx


누군가에겐 도움이 되었길...

반응형

'Raspberry Pi 3 > Linux Device Driver' 카테고리의 다른 글

/lib/modules//build no such file or directory  (0) 2018.07.03
블로그 이미지

yesnomark

이것저것 개발하며 애매하게 경력쌓고 있는 중니어 개발자

,