linux核心模組開發基礎
1. 什麼是核心模組
核心模組具有以下兩個特點:1. 模組本身並不被編譯進核心檔案(zImage或bzImage),可以根據需求,在核心執行期間動態的安裝或解除安裝。
2. 為什麼需要核心模組
原因:Linux核心的整體結構非常龐大,其包含的元件也非常多,如何使用這些元件呢,方法1:把所有的元件都編譯鍵核心,即:zImage或bzImage,但這樣會導致一個問題:佔用記憶體過多。然後核心模組就誕生了,可以不用被編譯進核心但是可以動態的新增到正在執行的核心中!
3. 如何使用核心模組
1> 安裝模組 insmod filename.ko
2> 解除安裝模組 rmmod filename
3> 檢視模組 lsmod
這裡舉一個簡單的例子:
還是亙古不變的方式helloworld程式(不過這裡沒有main函式的)
#include <linux/init.h>
#include <linux/module.h>
static int hello_init()
{
printk(KERN_WARNING"Hello world!\n");//前面的巨集表示列印的級別
return 0;
}
static void hello_exit()
{
printk(KERN_WARNING"hello exit!\n");
}
module_init(hello_init);//用巨集來指定入口 載入模組時裡面的載入函式會被呼叫
module_exit(hello_exit);
三要素: 載入模組 、解除安裝模組、 標頭檔案
Makefile檔案
obj-m := helloworld.o
KDIR := /home/kernel/linux-ok6410 //開發板執行的核心的原始碼的路徑,因為模組最後是要在開發板上執行,所以這個模組的編譯是要依賴板子上執行的核心原始碼的,(這裡我開發板用的核心原始碼是這個路徑)
all:
make -C $(KDIR) M=$(PWD) modules CROSS_COMPILE=arm-linux- ARCH=arm
clean:
rm -f *.o *.ko *.order *.symvers
這裡KDIR是我們核心原始碼的路徑:
然後make 編譯模組檔案,這可可以看到生成了helloworld.ko檔案
結合前面的課程這裡可以通過串列埠終端同步看到(一下可以看到相關命令執行的效果)
核心模組的可選項:
1. 模組申明
2. 模組引數
3. 符號輸出
相關文章
- Javascript模組化開發基礎JavaScript
- Linux核心模組Linux
- Linux核心模組學習Linux
- Linux核心模組編譯Linux編譯
- 深入學習 Linux 核心模組Linux
- 高效學習Linux核心——核心模組編譯Linux編譯
- Python基礎——模組Python
- ansible基礎-模組
- 【linux】驅動-2-核心模組Linux
- Python基礎12(模組與datetime模組)Python
- Python基礎之模組Python
- 前端模組化基礎前端
- Linux基礎命令---sysctl核心控制Linux
- 如何使用cgdb + qemu除錯linux核心模組除錯Linux
- Linux基礎命令---管理組gpasswdLinux
- LollipopGo框架-鬥獸棋遊戲開發基本核心模組Go框架遊戲開發
- 二、Ansible基礎之模組篇
- python 基礎筆記——常用模組Python筆記
- Python基礎:常用系統模組Python
- 【python基礎】os模組的使用Python
- python 基礎之模組與包Python
- python基礎學習16—-模組Python
- Linux核心net模組引入了Rust程式碼 - PhoronixLinuxRust
- linux核心基礎-系統服務管理Linux
- duxapp:基於Taro使用模組化開發,提升開發效率UXAPP
- Linux基礎命令—新增/刪除組Linux
- 基於Laravel5.5的模組化開發Laravel
- toa 核心模組分析
- node核心模組-vm
- 【轉載】Linux核心除錯之使用模組引數Linux除錯
- Linux核心模組驅動載入與dmesg除錯Linux除錯
- Python pip(管理模組工具)基礎用法Python
- OpenWrt 基礎軟體模組之procd
- Python基礎(九) 常用模組彙總Python
- Linux裝置驅動開發詳解:基於Linux4.0核心Linux
- Linux基礎命令---dmsg顯示核心輸出Linux
- Linux基礎命令---新增組groupadd、刪除組groupdelLinux
- 基於NXP i.MX 6ULL核心板的物聯網模組開發案例(4)
- python基礎之-sys模組、os模組基本介紹(未完成)Python