基於fl2440內核linux-3.0移植----加載含參數模塊示例

一、開發環境
    內核版本:linux-3.0
    開發板:FL2440(nandflash:K9F1G08 128m)
    編譯器:arm-linux-gcc 4.3.2

二、模塊分析:
    在裝載內核模塊時,用戶可以向模塊傳遞參數,用module_param(參數名  ,參數類型  , 參數讀/寫權限)爲模塊定義一個參數,傳遞參數形式爲“insmod   模塊名  參數名=參數值”,如果不傳遞,參數將使用模塊內定義的缺省值。參數類型可以是:byte 、short、ushort、int、long,ulong、charp、bool、invbool(布爾的反)。

三、帶參數的內核模塊示例:
/********************book.c***********************/
#include <linux/init.h>
#include <linux/module.h>

static char *book_name="dissecting linux device driver";
static int                                      num=400;

static int book_init(void)
{
    printk(KERN_INFO " book module installed ");
    printk(KERN_INFO " book name :%s\n",book_name);
    printk(KERN_INFO " book num :%d\n",num);

return 0;
}

static void book_exit(void)
{
    printk(KERN_INFO " book module exit \n");

    return ;
}

module_init(book_init);
module_exit(book_exit);
module_param(num ,int ,S_IRUGO);
module_param(book_name,charp,S_IRUGO);

MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("liu chengdeng <[email protected]>");
MODULE_DESCRIPTION("a simple module for testing module params");
MODULE_VERSION("v1.0");

四、模塊的編譯:

/**********************Makfile***********************/
ARCH=s3c2440
KERNEL_VER = linux-3.0
LINUX_SRC ?=../linuxrom/$(KERNEL_VER)

PWD := $(shell pwd)

#Kernel module
obj-m +=book.o

#Specify flags for the module compilation
#EXTRA_CFLAGS=-g -O0

mohule:
    make -C $(LINUX_SRC)  M=$(PWD) modules
    make clear
clear:
    @rm -rf *.o *.cmd *.mod.c  .*ko.cmd .*.o.cmd .*.o.d
    @rm -rf  *~ core .depend  .tmp_versions Module.symvers modules.order -f
clean: clear
    @rm -f  *.ko

五、模塊的加載:
將生成的book.ko文件下載到開發板上:
[root@root /]# ls
apps          dev           init          mnt           sys           var
bin           dev_adc       jbs.mp3       proc          tmp           vim_conf.bin
book.ko       etc           lib           root          tslib         yw.mp3
data          info          linuxrc       sbin          usr
[root@root /]# insmod book.ko 
 book module installed 
 book name :dissecting linux device driver
 book num :400
[root@root /]# rmmod book
 book module exit 
[root@root /]# insmod book.ko book_name='goodbook' num=5000
 book module installed 
 book name :goodbook
 book num :5000


可以看到參數傳遞成功了,整個過程到此就結束了.

















發佈了39 篇原創文章 · 獲贊 16 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章