Analytics

2010年5月12日 星期三

kernel module for DMA2443

code of hello2443.c



/*
 *  hello-1.c - The simplest kernel module.
 */
#include <linux/module.h>       /* Needed by all modules */
#include <linux/kernel.h>       /* Needed for KERN_INFO */

int init_module(void)
{
        printk(KERN_INFO "Hello world 1.\n");
        return 0;
}

void cleanup_module(void)
{
        printk(KERN_INFO "Goodbye world 1.\n");
}


然後將他放到 source code根目錄/driver/char

接著修改同一個資料夾下的Kconfig
仿造其他格式加入這段

config Hello_2443
tristate "Hello module for 2443"
depends on ARCH_S3C2410
help
 add by JJ, a kernel module test.


再到source code根目錄下下make menuconfig 指令
即可在Device Drivers -> Charater devices -> Hello module for 2443
將選項調成<M>

再去改/driver/char下的Makefile, 加入

#add by JJ
#kernel module test
obj-$(CONFIG_Hello_2443)        += hello2443.o

再回到source code根目錄, 下make modules
即可產生hello2443.ko


...利用minicom zmodem將編譯好的module 載入板子後..

[root@(none) modules]# insmod hello2443.ko                                    
hello2443: module license 'unspecified' taints kernel.                        
Hello world 1.                                                                
[root@(none) modules]# lsmod                                                  
hello2443 1088 0 - Live 0xbf000000 (P)                                        

但是rmmod卻出現了一些問題@@a...
[root@(none) modules]# rmmod hello2443                                          
rmmod: chdir(/lib/modules): No such file or directory                           

似乎跟載入的位置有關,再試看看巴


沒有留言:

張貼留言