-
[Linux Kernel] Device Driver : 묘듈 분할프로그래밍/리눅스 시스템 2024. 4. 29. 05:39
[Makefile]KERNEL_HEADERS=/lib/modules/$(shell uname -r)/buildobj-m += common.o devicedriver.oPWD := $(CURDIR)all: make -C $(KERNEL_HEADERS) M=$(PWD) modulesclean: make -C $(KERNEL_HEADERS) M=$(PWD) cleancopy ■ 두개 모듈 생성device driver 코드를 2개의 모듈로 분할해서 작성해줌=> 모든 소스코드를 obj-m으로 추가해주어야 한다!! [common.h]#ifndef COMMON_H#define COMMON_Hint common_function(int value);#endif함수 정의변수 정의매크로 변수 정..
-
[Linux Kernel] Device Driver : Timer프로그래밍/리눅스 시스템 2024. 4. 29. 05:33
동작 확인모듈을 insmod 한 뒤, 로그를 확인한다.HZ 값이 출력되고 있다.HZ 값은 커널 소스에 정의된 값이다.=> 커널 컴파일 시 설정파일 .config 에 CONFIG_HZ 로 설정되어 있다. [Makefile]KERNEL_HEADERS=/lib/modules/$(shell uname -r)/buildobj-m += devicedriver.oPWD := $(CURDIR)driver: make -C $(KERNEL_HEADERS) M=$(PWD) modulesclean: make -C $(KERNEL_HEADERS) M=$(PWD) cleancopy [ devicedriver.c ]#include #include #include #include #include #include #include ..
-
[Linux Kernel] Device Driver : proc file system프로그래밍/리눅스 시스템 2024. 4. 29. 05:32
proc file system 생성- $ make 명령어를 통해 build하고, insmod 한다. => 커널 로그에 [init] HI 출력됨. - $ ls –al /proc/ | grep pc 명령어를 통해 생성된 pc (proc fiile system)를 확인한다. [Makefile]KERNEL_HEADERS=/lib/modules/$(shell uname -r)/buildobj-m := pc.ototal : driverdriver: make -C $(KERNEL_HEADERS) M=$(PWD) modulesclean: make -C $(KERNEL_HEADERS) M=$(PWD) cleancopy [pc.c]#include #include #include #include #include MODU..
-
[Linux Kernel] Device File : Read, write (with ioctl)프로그래밍/리눅스 시스템 2024. 4. 29. 03:36
Intro https://ballbigdiary.tistory.com/11 Device Driver 적재, Device File 생성커널모듈 형태(.ko)의 Device Driver 제작 module_init(함수); // 커널모듈 적재시 호출되는 함수 지정 매크로module_init (함수)기능 : 현재 커널 모듈을 등록(insmod)할 때 호출되는 함수를 지정하는 매ballbigdiary.tistory.com ▲ 커널모듈 형태의 device driver를 kernel에 적재하고,device dirver와 연결되는 device file을 생성하는 방법에 대해 다루었다. 이번에는 app에서 device file에 syscall 요청을 통해device 장치를 read, write하는 방법에 대해 알아보자!..
-
[Linux Kernel] Device Driver 적재, Device File 생성프로그래밍/리눅스 시스템 2024. 4. 29. 00:35
커널모듈 형태(.ko)의 Device Driver 제작 module_init(함수); // 커널모듈 적재시 호출되는 함수 지정 매크로module_init (함수)기능 : 현재 커널 모듈을 등록(insmod)할 때 호출되는 함수를 지정하는 매크로입력값 : 커널 모듈을 등록할 때 호출할 함수 필요 라이브러리 : module_exit(함수);// 커널모듈 제거시 호출되는 함수 지정 매크로module_exit (함수)기능 : 현재 커널 모듈을 제거(rmmod)할 때 호출되는 함수를 지정하는 매크로입력값 : 커널 모듈을 제거할 때 호출할 함수 필요 라이브러리 : 커널 모듈 빌드를 위한 Makefile#디바이스 드라이버를 KERNEL 빌드한 헤더의 경로로 가서 build 한 뒤에, build 결과물만 현재 ..
-
[Network] OSI 7 layer프로그래밍/리눅스 네트워크 2024. 4. 15. 03:19
OSI (Open Systems Interconnection) Data 관점에서의 OSI 7 layer HW 관점에서의 OSI 7 layer L7 스위치로드 밸런싱 기능스위칭 기능보안 기능L5, L6기능도 함께 가짐 L4 스위치로드 밸런싱 기능L3에서 받은 패킷의 헤더 정보를 분석해서 처리 L3 스위치 = 라우터라우터 (SW기반)IP를 확인하여 네트워크 상에서 데이터를 알맞은 host에게 전달 L2 스위치 물리 계층 바로위 => LAN 영역의 Data 정보전달 (Ethernet / MAC 연관) L1 스위치전기적 신호를 처리허브 (신호 복사 역할)NIC : Network Interface Controller => 물리적 주소가 부여된다 = MAC 주소
-
[Linux] 멀티 Process, Signal, WDT프로그래밍/리눅스 시스템 2024. 4. 15. 01:30
process 관련 리눅스 명령어 프로세스 확인 명령어 (list 형태) $ ps -efe : 모든 사용자들이 구동 시킨 모든 프로세스를 보여준다.f : 상세 정보를 출력한다. (full format) grep과 함께 사용하여 특정 프로세스에 대한 정보만 확인 가능 $ ps –ef | grep [검색 프로그램명] 프로세스 확인 명령어 (tree 형태) $ pstree htop (프로세스 뷰어이자 프로세스 관리자) 실행하기 설치 $ sudo apt install htop –y 실행 $ htop 현재 쉘에서 실행 시킨 background 작업의 목록 출력 $ jobs background 프로세스를 포어 그라운드로 실행 $ fg %숫자 Multi process fork() : 자식 프..
-
[Linux] 파일 입출력 함수프로그래밍/리눅스 시스템 2024. 4. 14. 22:18
$ man 명령어 : 명령어, 함수들에 대한 설명 확인: Shell command, system call, Linux library의 interface, header file, descriptioin을 확인할 수 있는 명령어 $ man [옵션] [검색할 매뉴얼 페이지 이름] ex) open() Syscall에 대한 interface, header file을 보고 싶다면, $ man 2 open[옵션]-k : 키워드로 매뉴얼을 검색1 : Linux Shell Command2 : System Call3 : Linux Library open() : 파일 오픈 int open(const char* path, int flag, mode_t mode)기능 : 파일 시스템에서 파일을 열어서 해당 파일에 대한 파일..