(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)