編寫 Hello world 模塊驅動

(1) 模塊動態加載驅動方式linux

在內核源碼的「drivers/char/」目錄下新建一個名爲「hello .c」的文件,網絡營銷培訓內容以下:網絡

#include <linux/module.h>函數

#include <linux/kernel.h>spa

#include <linux/init.h>命令行

MODULE_LICENSE ("GPL");ci

static int __init hello_init (void)開發

{get

printk (KERN_INFO "Hello world/n");源碼

return 0;it

}

static void __exit hello_exit (void)

{

printk (KERN_INFO "Goodbye world/n");

}

module_init (hello_init);

module_exit (hello_exit);

修改Makefile裏面的內核源碼包的路徑,這裏咱們必須用到一個已經編譯好的內核的源碼

這裏咱們用了

KERNELDIR ?= /mnt/mengyang/source/kernel/linux-2.6.33

根據本身的實際狀況修改,必定確保你的內核能夠編譯經過,內核能夠正常運行!

在命令行裏運行make命令,順利的會生成*.ko文件。將*.ko文件複製到nfs目錄,或是其餘的存儲設備。

在命令行裏運行插入模塊的命令

ismod *.ko

順利的能夠看到init函數將會被調用。

一樣,運行

rmmod *.ko

順利的能夠看到clean函數被執行了。

執行上面命令時,可能報錯誤rmmod: chdir(2.6.33.2-TE2440): No such file or directory

這是因爲busybox 1.13.1致使的,,原來是如今的內核模塊在插入卸載時都會要轉到/lib/modules/內核版本號/ 這個目錄裏。 因此只要創建這個目錄而且把要使用的模塊*.ko文件複製到這個目錄就好了。

2)靜態的加載驅動

在內核源碼中添加對hello 驅動的支持

修改drivers/char/目錄下的「Kconfig」文件,在7 行添加以下內容:(紅色部分所示)

#

# Character device configuration

#

menu "Character devices"

config CCTE_HELLO

tristate "CCTE2440 Hello Driver"

depends on ARCH_S3C2440

help

CCTE2440 Hello.

修改同目錄下的「Makefile」文件,在合適的行添加以下內容:

#

# Makefile for the kernel character device drivers.

#

#

# This file contains the font map for the default (hardware) font

#

obj-$(CONFIG_ CCTE_HELLO) += hello.o

配置內核

而後輸入:#make menuconfig,而後配置以下:

Device Drivers --->

Character devices --->

<*> CCTE2440 Hello Driver

網絡營銷培訓 其選擇爲「M」(模塊),而後保存配置,編譯出內核鏡像燒寫到開發板中。或是下載到開發板上運行。(fblww-0213)
相關文章
相關標籤/搜索