본문 바로가기
한국으로/임베디드 리눅스

7.1 디바이스 드라이버

by 영킴. 2018. 7. 1.

7.1 디바이스 드라이버

7.1.1 디바이스 드라이버 종류

문자 디바이스 드라이버

GPIO, 시리얼 등 문자 디바이스를 제어한다.
open, close, read, write 등의 시스템콜을 이용해 액세스하고, 커널 상위 계층은 바이트 단위로 액세스한다.

블록 디바이스 드라이버

HDD, SD 카드 등의 블록 디바이스를 제어한다. (파일시스템 포함)
open, close, read, write 등의 시스템콜을 이용해 액세스하고, 커널 상위 계층은 블록 단위로 액세스한다.

네트워크 인터페이스 드라이버

이더넷, 무선랜 등 네트워크 디바이스를 제어한다.
read, write, recvfrom, sendto 등의 시스템콜을 이용해 액세스하고, 커널 상위 계층은 패킨 단위로 액세스한다.



7.1.2 디바이스 파일 만들기

# mknod {/dev/...} c 241 0

mknod 명령: 디바이스 파일을 생성하는 명령어이다.
디바이스 파일은 /dev 디렉토리에 모아져있다.
문자 디바이스 파일은 c 옵션으로 만들고, 블록 디바이스 파일은 b 옵션을 사용한다.

Major 번호: 위의 명령에서 241에 해당하는 옵션. 디바이스 드라이버의 고유 번호를 뜻한다.
Minor 번호: 위의 명령에서 0에 해당하는 옵션. 디바이스 드라이버가 제어하는 장치 번호를 뜻한다.

Major 번호와 Minor 번호는 이미 결정되어 있기 때문에, 자유롭게 쓸 수 있는 Major 번호 240~254를 이용하자.


'한국으로 > 임베디드 리눅스' 카테고리의 다른 글

9.1 시간처리  (0) 2018.07.06
8.1 인터럽트  (0) 2018.07.06
7.3 문자 드라이버  (0) 2018.07.01
7.2 모듈  (0) 2018.07.01
5.4 파일시스템  (0) 2018.07.01
5.3 메모리 관리  (0) 2018.06.29
5.2 시스템 콜  (0) 2018.06.28
5.1 프로세스 관리  (0) 2018.06.28