uname 명령으로 비글본 블랙에 설치된 리눅스 커널 버전을 확인합니다.
root@beaglebone:~# uname -a Linux beaglebone 3.8.13-bone70 #1 SMP Fri Jan 23 02:15:42 UTC 2015 armv7l GNU/Linux |
현재 설치된 커널과 일치하는 헤더파일을 설치해주었습니다.
root@beaglebone:~# apt-get update root@beaglebone:~# apt-cache search linux-headers-$(uname -r) linux-headers-3.8.13-bone70 - Linux kernel headers for 3.8.13-bone70 on armhf root@beaglebone:~# apt-get install linux-headers-$(uname -r) |
헤더파일은 다음 경로에 설치되네요..
root@beaglebone:~# cd /usr/src/linux-headers-3.8.13-bone70/ root@beaglebone:/usr/src/linux-headers-3.8.13-bone70# ls Documentation arch firmware ipc net sound Kconfig block fs kernel samples tools Makefile crypto include lib scripts usr Module.symvers drivers init mm security virt |
간단한 모듈 프로그램을 hello.c라는 이름으로 작성해주었습니다.
- #include <linux/init.h>
- #include <linux/module.h>
- #include <linux/kernel.h>
- MODULE_LICENSE("GPL");
- MODULE_AUTHOR("webnautes");
- MODULE_DESCRIPTION("helloworld module.");
- static int __init mod_init(void){
- printk( KERN_INFO "[module_helloworld] Load a module\n");
- return 0;
- }
- static void __exit mod_exit(void){
- printk(KERN_INFO "[module_helloworld] Unload a module\n");
- }
- module_init(mod_init);
- module_exit(mod_exit);
그리고 컴파일을 하기 위해서 Makefile도 작성해주었습니다.
obj-m+=hello.o
all: make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean |
Make 명령으로 컴파일을 하게 되면 hello.ko라는 파일이 생성됩니다.
insmod 명령으로 모듈을 커널에 올리면
root@beaglebone:~/hello# insmod hello.ko
dmesg 명령 실행해서 아래와 같은 메시지를 확인 할 수 있습니다.
[13059.841466] [module_helloworld] Load a module |
마찬가지로 rmmod 명령으로 커널에서 모듈을 내리면
root@beaglebone:~/hello# rmmod hello.ko
dmesg 명령으로 아래와 같은 메시지를 확인 할 수 있습니다.
[13080.492742] [module_helloworld] Unload a module |
안녕하십니까.먼저 티스토리에서 많은 정보를 얻고 있음에 감사드립니다.
다름이 아니라 저는 현재 대학교 4학년으로 캡스톤 졸업작품을 진행중에 있습니다.
다름이 아니라 저희가 현재 BeagleBone Blue를 사용하여 블루투스를 이용한 무선통신을 진행중인데, 자료가 너무없어 댓글 남겨봅니다. 혹시 참고 가능한 자료나
아시는 부분 있으신가요?
( 세세하게 말씀드리면 adc 과정을 거친 "데이터를 BeagleBone Blue에서 BeagleBone Blue로 블루투스 무선통신을 이용하여 데이터를 전송하게 되고 그 전송 받은
데이터로 서보모터를 제어하는 것"입니다. )