[디바이스 드라이버] 5.GPIO 디바이스 드라이버
·
리눅스/디바이스 드라이버
목표gpio 디바이스 드라이버를 이용해 어플리케이션 레벨에서 장치파일을 통해 LED를 키고 끈다.    디바이스 드라이버 모듈 라즈베리파이 4B의 핀맵은 위와 같으며 나는 단순히 LED를 이용해 GPIO를 제어할 것이므로, 14번 GND와 16번 GPIO23을 이용해 제어해볼 것이다. 그리고 18번 핀을 이용해 INPUT으로 해당값을 읽어보기도 해보자.16번 : GPIO 23 OUTPUT18번 : GPIO 24 INPUT 그리고 GPIO 번호를 확인해야되는데 sudo cat /sys/kernel/debug/gpio 해당 명령어를 통해 핀에 해당되는 번호를 확인할 수 있다. 원래 이전엔 핀번호나 해당 번호나 똑같았는데 라즈베리파이 상위버전으로 가면서 확인해야된다더라... 이것때메 많이 헤멨었다. 체크하면 ..
[디바이스 드라이버] 4. 장치파일과 디바이스 드라이버 연결하기
·
리눅스/디바이스 드라이버
목표이번엔 장치파일과 디바이스 드라이버를 만들어서 연결해볼 것이다.그렇게해서 애플리케이션(User Level)에서는 디바이스 드라이버로(Kernel Level)에 장치파일을 이용해 접근해본다. 디바이스 드라이버 모듈#include #include #include MODULE_LICENSE("GPL");MODULE_AUTHOR("IH02");MODULE_DESCRIPTION("user_to_driver");static int driver_open(struct inode *device_file, struct file *instance){ printk("open was called!\n"); return 0;}static int driver_close(struct inode *device_file, stru..
[디바이스 드라이버] 3. 디바이스 드라이버, 장치 파일의 종류
·
리눅스/디바이스 드라이버
맨첫 포스트에서 말했듯이, 애플리케이션(User Level)에서는 디바이스 드라이버로(Kernel Level)에 직접 접근할 수 없기 때문에 이둘을 연결해주는 역할인 장치파일이 필요하다.  mknod로 만들 수 있으며, 장치 파일과 디바이스 드라이버는 장치번호로 연결된다. mknod [옵션] 파일이름 종류 주번호 보조번호 사용방법은 위와같으며, 하나하나 알아보자....먼저 종류에는 c를주어 문자 장치 파일 혹은 b는 블록 장치 파일로 만들 수 있다.이건 뭘까?그리고 주번호 보조번호는 뭘까?   디바이스 드라이버의 종류1.문자 디바이스 (Char Device)앞서 보았듯 /dev파일에서 맨앞에 c가 있으면 char device 파일이다.블록디바이스와 비교하면서 보는게 좀 더나은데 몇가지 특징을 정리하면 아..
[디바이스 드라이버] 2. 모듈 프로그래밍
·
리눅스/디바이스 드라이버
이전 챕터에서 디바이스 드라이버는 모듈로 만들어서 커널에 적재하고, 해제할 수 있다고했다.일단 환경은 라즈베리파이 4B / 64비트 커널 기반으로 진행하였다.가장 간단한, 모듈을 만들어보자면 아래와 같이 만들 수 있을 것이다.   모듈 소스 파일나는 day1_module.c로 이름 붙였다.#include #include MODULE_LICENSE("GPL");MODULE_AUTHOR("IH02");MODULE_DESCRIPTION("Day1");static int __init driver_init(void) { printk("Hello, World!\n"); return 0;}static void __exit driver_exit(void) { printk("Bye, World!\n");}module_i..
[디바이스 드라이버] 1. 디바이스 드라이버란?
·
리눅스/디바이스 드라이버
커널 공간과 사용자 공간  사용자 공간: 우리가 프로그래밍하고, 사용하는 공간응용 프로그램: 사용자가 실행하는 소프트웨어입니다.저수준 파일 입출력 함수: 응용 프로그램에서 파일 입출력 작업을 수행하기 위해 사용하는 함수.장치 파일: 장치 드라이버와 상호작용하기 위해 운영체제에서 제공하는 특수 파일.커널 공간:디바이스 드라이버: 하드웨어 장치를 제어하고 응용 프로그램의 요청을 하드웨어 명령으로 변환하는 소프트웨어하드웨어 제어 함수: 디바이스 드라이버가 하드웨어를 직접 제어하기 위해 사용하는 함수.하드웨어: 컴퓨터 시스템의 물리적 장치.   장치파일하드웨어를 사용하기 위한 디바이스 드라이버와 디바이스 드라이버와 연결하여, 장치를 제어할 장치파일이 존재한다./dev 디렉토리 내부에 장치파일이 존재한다.  리눅..
다락공방
'리눅스' 카테고리의 글 목록