歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> ARM平台的內核模塊編寫與安裝

ARM平台的內核模塊編寫與安裝

日期:2017/3/1 9:29:53   编辑:Linux編程

最近在學習arm平台下的內核模塊開發,現將內核模塊建立過程記錄一下。  

  從編寫代碼的角度來看,創建一個簡單的的內核模塊可以分3步走:

   1. 添加頭文件(linux/init.h 和linux/module.h);

2. 加載內核(函數module_init);

  3. 卸載內核(函數module_exit)

如一個簡單的內核模塊如下:

#include <linux/init.h>
#include <linux/module.h>
static int hello_init()
{
printk(KERN_WARNING"hello my module!\n");
return 0;
}

static void hello_exit()
{
printk(KERN_WARNING"module exit!\n");
}

module_init(hello_init);
module_exit(hello_exit);

事實上,關鍵部分是兩個宏 module_init() 和module_exit(),這兩個宏分別完成了內核模塊安裝和內核模塊卸載,他們的代碼都是內核實現的,用戶程序只要調用即可。當然,一個內核模塊的組成部分還有其他可選的選項,但是這裡的是必須的,也是最簡單的一個部分。

  寫完代碼部分,接著完成Makefile的編寫如下:

obj-m := hello.o
KDIR :=/home/win/myfiles/linux-mini2440
all:
   make -C $(KDIR) M=$(PWD) modules CROSS_COMPILE=arm-linux- ARCH=arm
clean:
  rm -f *.o *.ko *.order

這是內核模塊只有一個源文件的Makefile,如果源文件有多個,則采用如下版本:

obj-m := modulename.o

modulename-objs := file1.o file2.o file3.o ......
KDIR :=/home/win/myfiles/linux-mini2440
all:
   make -C $(KDIR) M=$(PWD) modules CROSS_COMPILE=arm-linux- ARCH=arm
clean:
  rm -f *.o *.ko *.order

然後回到代碼所在目錄執行make 命令,即可產生 .ko 文件。

Copyright © Linux教程網 All Rights Reserved