ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Raspberry Pi 2에서 Linux Kernel Module 작성하기
    Raspberry Pi/Linux Device Driver Programming 2015. 10. 17. 22:20

     

    먼저 라즈베리파이2에 설치되어 있는 커널의 버전을 확인해보고

     

    아래 명령으로 같은 버전의 커널 헤더가 있는지 확인해봤습니다.

    sudo apt-cache search linux-headers-$(uname -r)

     

    하지만 버전에 맞는 커널 헤더가 저장소에 없어서 따로 다운로드 받아서 설치했습니다.

    sudo apt-get update

    sudo apt-get install gcc-4.7 cpp-4.7 dkms

    wget http://www.niksula.hut.fi/~mhiienka/Rpi/linux-headers-rpi/linux-headers-3.18.11-v7%2B_3.18.11-v7%2B-2_armhf.deb

    sudo dpkg -i linux-headers-3.18.11-v7+_3.18.11-v7+-2_armhf.deb

     

     

     

    설치 후.. 간단한 모듈 프로그램을 작성해서 테스트해봅니다.

     

    작성한 모듈 프로그램 소스코드입니다.

    1. #include <linux/init.h>  
    2. #include <linux/module.h>  
    3. #include <linux/kernel.h>  
    4.     
    5.     
    6. static int __init hello_init(void)  
    7. {  
    8.    printk(KERN_INFO "Hello world\n");  
    9.     
    10.    return 0;  
    11. }  
    12.     
    13.     
    14. static void __exit hello_exit(void)  
    15. {  
    16.    printk(KERN_INFO "Goodbye world");  
    17. }  
    18.     
    19. module_init(hello_init);  
    20. module_exit(hello_exit);  

     

    컴파일시 필요한 Makefile입니다.

    1. obj-m+=hello.o  
    2.     
    3. ARCH :=arm  
    4. PWD := $(shell pwd)  
    5.     
    6. all:  
    7.         make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) ARCH=$(ARCH) modules  
    8.     
    9. clean:  
    10.         make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) ARCH=$(ARCH) clean  

     

    이제 컴파일을 해봅니다.

     

    실행 결과입니다.

     

     

    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구독하기


    댓글 0

Designed by Tistory.