實驗所用硬體開發板為exynos4412,核心版本為linux-3.14
1.核心模組介紹
可在執行時新增到核心中的**被稱為「模組」。
1.1 使用核心模組優點
1、減小核心體積,因為模組本身不被編譯到核心映象裡面。
2、可以在核心中新增或刪除功能而不用重新編譯核心
1.2 核心模組和應用程式的不同
應用程式
核心模組
從頭到尾單任務
預先註冊進核心,被動的被呼叫的
執行空間在應用空間
執行空間在核心空間,許可權大
段錯誤對系統危害小
段錯誤常會導致系統崩潰
1.3 核心模組三要素
實現乙個最簡單的核心模組需要三個元素,分別是
— 模組載入入口宣告
— 模組解除安裝入口宣告
— 免費開源 許可宣告
#include
#include
intmoudle_init
(void
)void
moudle_exit
(void
)module_init
(moudle_init)
;//模組載入入口宣告
module_exit
(moudle_exit)
;//模組解除安裝入口宣告
module_license
("dual bsd/gpl");
//免費開源 許可宣告
#makefile
ifeq ($(kernelrelease),)
kerneldir ?
=/home/kernel/linux-
3.14 #核心所在**路徑
pwd :
= $(shell pwd)
all:
$(make)
-c $(kerneldir) m=$(pwd) modules
clean:
rm -rf *
.o *
~ core .depend .
*.cmd *
.ko *
.mod.c .tmp_versions module* modules* a.out
else
obj-m :
= moudle.o
endif
1.4 模組的相關命令
—insmod 插入模組
—lsmod 檢視已經插入的模組
—rmmod 刪除模組
將核心模組進行編譯得到moudle.ko檔案,將其拷貝到板子檔案系統中。
#insmod moudle.ko //插入裝置節點後,可觀察到命令列列印出了moudle init go
#rmmod moudle //刪除裝置節點後,可觀察到命令列列印出了moudle exit go
如果想要檢視已註冊的裝置可通過cat命令檢視 /proc/devices檔案
#cat /proc/devices
所有已註冊的裝置和其裝置號資訊全部儲存在這個檔案中。 Linux 驅動開發 核心模組設計筆記 0
1.模組化程式設計原因 linux 核心龐大,需要大量元件,一起整合會導致映象檔案過大 核心模組操作命令 載入 insmod ko解除安裝 rmmod ko檢視 lsmod grep ko核心模組程式設計標頭檔案必備 include include核心模組函式出入口 module init func...
Python核心模組 urllib模組
現在python基本入門了,現在開始要進軍如何寫爬蟲了!先把最基本的urllib模組弄懂吧。開啟乙個url的方法,返回乙個檔案物件,然後可以進行類似檔案物件的操作。本例試著開啟google import urllib f urllib.urlopen firstline f.readline 讀取h...
核心模組Makefile
前些天寫乙個驅動模組。竟然寫核心模組makefile時出了問題,於是將其總結下來,下次再用時拿過來改下就行了。general purpose makefile for linux kernel module by guoqingbo kern dir home gqb development lin...