본문 바로가기
임베디드/KERNEL

Raspberry Pi 4에서 커널 모듈 kernel module 프로그래밍 / hello world

by sj0020 2020. 12. 17.

https://webnautes.tistory.com/555
호스트 - 우분투 설치된 피시
타겟 - 라즈베리파이

 

Raspberry Pi 3에서 커널 모듈(kernel module) 프로그래밍

커널 소스 준비 모듈을 작성하기 위해서는 라즈베리파이에서 현재 사용중인  커널 버전과 같은 버전의 커널 소스가 필요합니다. 버전을 맞추기 위해서 라즈베리파이에 커널을 최근 버전으로

webnautes.tistory.com

touch는 파일 생성하는 명령어 . 가급적 리눅스에서 파일 생성해주는것이 안전하다..  윈도우에서 파일 생성하면 파일 형식 때문에 오류 가능성 있음

 

 

KDIR 한 이유 : 

#include <linux/module.h>
#include <linux/init.h>
#include <linux/version.h> 땡겨오려고 ..

 

(가) Hello world 모듈 - 호스트(우분투)에서 작업.

#include <linux/module.h>
#include <linux/init.h>
#include <linux/version.h>
static int __init hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);

module_exit(hello_exit);
MODULE_AUTHOR ("RHO");
MODULE_DESCRIPTION ("RHO_ps.c");
MODULE_LICENSE ("GPL v2");

Makefile

#linux kernel source
KDIR = /home/sss/linux
obj-m := hello.o 

default:
	$(MAKE) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C $(KDIR) M=$$PWD modules
	
clean:
	$(MAKE) -C $(KDIR) M=$$PWD clean

 

 

%make
make[1]: Entering directory ‘/usr/src/linux-2.6.10’
CC /home/ld33/src/misc-modules/hello.mod.o
CC[M] /home/ldd3/src/misc-modules/hello.o
Building modules, stage 2
MODPOST
CC /home/ld33/src/misc-modules/hello.mod.o
LD[M] /home/ld33/src/misc-modules/hello.ko // ko 파일 생성됨
make[1]: Leaving directory ‘/usr/src/linux-2.6.10’
%su
//아래 작업은 타겟에서 함
root# insmod ./hello.ko // insert module
Hello, world
root#rmmod hello // remove module
Googbye, cruel world

 

'임베디드 > KERNEL' 카테고리의 다른 글

-fstack-protector-strong’ 오류  (0) 2020.12.18
test_app  (0) 2020.12.17
크로스 컴파일러 환경  (0) 2020.12.10
디바이스 드라이버 분석 설계 . host, target  (0) 2020.12.10
kernel  (0) 2020.12.07