반응형

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


※ 순서

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

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

,
반응형

개발 진행중에 있는 프로젝트로 차후 변경될 수 있습니다


1. 프로젝트

- 3차원 지중관로 측량시스템


2. 용도

- 맨홀과 맨홀 사이 관로의 형상을 추정하여, 지하매설물의 위치 좌표 및 심도에 대한 잘못된 정보로 발생할 수 있는 각족 안전사고를 사전에 예방




3. 역할

- F/W, Embedded

- 방대한 센서(각도, 지자계) 데이터 제어처리


4. 사용언어, 개발환경 및 기술

- Raspberry-pi3 / C / C++ / Linux Device Driver / Kernel Module / Qt Creator / SQLite / RS-485통신




측량 방법




[30M Prototype]


개발 예정인 프로토타입 도식화

- Node 1개당 필요한 데이터 9개(각도 센서 3개 + 자이로 센서 3축 2개) x 50개(Node갯수) x 2개(중계기 갯수)를 관리

- 중계기 / Node 의 전원 상태 및 On/Off 정보 통합관리

- Kernel module 


반응형
블로그 이미지

yesnomark

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

,
반응형

이 글은 현재 진행하고 있는 프로젝트에 대한 개인적인 자료정리 차원에서 올려보았다


커널 모듈 적재/제거에 대한 자세한 내용은

Raspberry pi3 카테고리의 Linux Device Driver 에 조만간 업데이트 할 예정이다

업데이트 ▶  http://dragonchan.tistory.com/category/Raspberry%20Pi%203/Linux%20Device%20Driver


라즈베리파이3 Specification

라즈베리파이3 Model B

kernel ver.4.14.34-v7+

ARMv7 Processor rev 4

hardware : BCM2835

revision : a32082

Serial : 00000000a5f739b9


디바이스 파일 생성

mknod /dev/xxx(디바이스 파일 위치) c(Character Device Driver) 240(Major Number) 32(Minor Number)


커널 Object(.ko) 생성

make


커널에 적재

insmod xxx.ko


응용프로그램 컴파일

gcc -o test test.c -lwiringPi


실행

./test


메시지 확인

dmesg

반응형
블로그 이미지

yesnomark

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

,