임베디드 개발/리눅스 디바이스 드라이버5 LDD ] printk를 활용한 디버깅 1. printk커널 공간에서는 C 표준 라이브러리를 사용할 수 없으므로 printf와 유사한 printk를 사용한다. 2. printk 사용법사용법은 printf와 거의 동일하며 단순히 printf를 printk로 대체하면 된다.단, %f, %e 등 부동소수점 형식의 포맷지정자는 지원하지 않으며, linux/Documentation/printk-formats.txt에서 사용 가능한 포맷지정자를 확인할 수 있다. ex.printk("num: %d, hex: %x\n", num, hex_num); Typeprintk format specifierint%d / %xunsigned int%u / %xlong%ld / %lxunsigned long%lu / %lxlong long%lld / %llxunsig.. 2024. 10. 6. LDD ] 리눅스 커널 모듈 In-tree building In-tree 빌드란? In-tree 빌드는 커널 모듈을 리눅스 커널 소스 트리 안에 추가하여 커널 빌드 시스템이 커널과 함께 해당 모듈을 빌드하도록 하는 방법이다. 이 방법을 사용하면 사용자는 menuconfig 명령어를 통해 메뉴 형태로 구성된 커널 설정 화면에서 모듈을 선택하거나 선택해제할 수 있다. In-tree building 과정 요약리눅스 커널 소스 트리 내에 모듈 추가로컬 Kconfig 파일 작성로컬 Makefile 작성상위 레벨 Kconfig 파일에 로컬 Koconfig 파일 추가상위 레벨 Makefile에 로컬 Makefile 추가커널 소스 루트 디렉토리로 이동해서 make menuconfig를 이용해 설정 (Optional)커널 소스 루트 디렉토리로 이동해서 모듈 빌드 1. 리눅.. 2024. 10. 4. LDD ] Hello World 커널 모듈 + Makefile 작성법 가장 단순한 예시인 Hello World 모듈로 커널 모듈을 빌드하고 실행해보면서 커널 모듈 작성법을 익혀보자. hello.c /* HEADER SECTION BEGIN */#include/* HEADER SECTION END *//* CODE SECTION BEGIN */static int __init hello_init(void){ pr_info("Hello world\n"); return 0;}static void __exit hello_exit(void){ pr_info("Goodbye world\n");}/* CODE SECTION END *//* REGISTRATION SECTION BEGIN */module_init(hello_init);module_exit(hello_e.. 2024. 10. 2. modprobe와 insmod의 차이 1. modprobe커널 모듈을 로드하는데 사용하는 명령어로 모듈의 이름만 지정하면 /lib/modules/$(uname -r) 경로에서 해당 모듈과 모듈의 의존성을 자동으로 처리해 로드한다.(ex. modprobe e1000e) 2. insmod커널 모듈 파일을 직접 로드하는 명령어로 모듈 파일(.ko)의 경로를 지정하여 로드해야 하며 모듈의 의존성을 자동으로 처리하지 않는다.(ex. insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/e1000e.ko) 2024. 9. 30. 리눅스 커널 모듈 (Linux Kernel Module) 1. Linux Kernel Module리눅스 커널 모듈은 리눅스 커널에 동적으로 로드하거나 언로드할 수 있는 코드 조각으로 커널의 기능을 확장하거나 특정 기능을 추가할 때 사용된다. 커널 모듈은 실행 중인 커널에 동적으로 추가될 수 있어 커널을 재부팅하지 않고도 기능을 추가하거나 제거할 수 있는 장점이 있다. 2. Linux Device Driver디바이스 드라이버는 특정 하드웨어 장치를 제어하기 위해 커널에서 실행되는 소프트웨어이다. 하드웨어 장치와 커널 간의 인터페이스를 제공하여 응용 프로그램이 하드웨어를 제어할 수 있게 하는 용도로 사용되며, 대부분의 디바이스 드라이버는 커널 모듈로 구현된다. 이를 통해 사용자가 원하는 하드웨어를 커널에 동적으로 추가하거나 제거할 수 있다. 즉, 커널 모듈은 .. 2024. 9. 28. 이전 1 다음