Linux/Linux Device Driver
-
디바이스 드라이버 / 헤더 파일별 함수 정의Linux/Linux Device Driver 2020. 8. 30. 00:00
유저 #include int open(const char *__file, int __oflag, ...) #include : /usr/include/unistd.h __off_t lseek(int __fd, __off_t __offset, int __whence) int close(int __fd) ssize_t read(int __fd, void *buf, size_t __nbytes) ssize_t write(int __fd, const void *__buf, size_t __n) unsigned int sleep(unsigned int __seconds) int usleep(__useconds_t __useconds) #include : /usr/include/arm-linux-gnueabihf/s..
-
디바이스 드라이버 / 알게 된 것들Linux/Linux Device Driver 2020. 8. 28. 23:59
register_chrdev() 함수의 주번호를 0으로 설정하면 알아서 남는 주 번호로 설정해 준다. 1. 파일 오퍼레이션 open 함수의 리턴값은 무조건 0으로 해줘야 된다. 그렇지 않으면 응용프로그램에서 파일이 열리지 않는다. 파일 오퍼레이션 함수에서 하드웨어 존재하지 않거나 커널 메모리가 부족하거나 디바이스가 이미 사용 중인지를 확인하는 코드를 두어 유저영역에서 open함수의 반환값으로 무슨 문제로 디바이스 파일이 열리지 않았는지 확인 할 수 있다. 2. 파일 디스크립터의 close 함수는 어떤 리턴 값을 사용해도 0으로 리턴된다. 응용 프로그램은 close() 함수의 반환값을 참고하지 않기 때문에 실제 사용에는 의미가 없다. 3. 커널에서 문자열 데이터를 읽을 때 응용 프로그램에서 read 함수의..
-
디바이스 드라이버 / 드라이버를 잘 만드려면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 커널 소스를 찾으려면 이 사이트를 참조하는 것이 좋다. 리눅스 커널 버전 별로 모든 소스가 다 있다. 내가 찾고 싶은 함수를 검색하면 어디서 정의되었는지 어디서 참조되었는지 다 나온다. 내 버전에 맞는 커널 소스를 뒤져보자..
-
MakefileLinux/Linux Device Driver 2020. 8. 24. 12:55
밑의 사이트에 들어가서 궁금한 키워드를 control + F로 검색해서 작성하자. 영문판 http://www.gnu.org/software/make/manual/ GNU Make Manual - GNU Project - Free Software Foundation GNU Make Manual Free Software Foundation last updated January 19, 2020 This manual (make) is available in the following formats: You can buy printed copies of some manuals (among other items) from the Free Software Foundation; this helps support FSF ..