靜態加載驅動與insmod命令動態加載驅動

1、insmod動態加載驅動的作用

(1)此類載入的模塊,通常爲設備驅動程序。設備驅動裏面會使用到內核驅動,比如使用交叉編譯或官網下載的一個在linux系統下工作的設備驅動,因爲是針對linux系統而製作的,它知道內核支持的基本驅動,比如I2C、SPI、等操作硬件的驅動,協議驅動提供了標準的操作硬件的協議函數,而這個設備驅動裏面正是調用了內核協議驅動工作

2、靜態加載驅動與動態加載的優缺點

(1)靜態加載就是把驅動程序直接編譯進內核,系統啓動後可以直接調用。靜態加載的缺點是調試起來比較麻煩,每次修改一個地方都要重新編譯和下載內核,效率較低。若採用靜態加載的驅動較多,會導致內核容量很大,浪費存儲空間。

(2)動態加載利用了Linux的module特性,可以在系統啓動後用insmod命令添加模塊(.ko),在不需要的時候用rmmod命令卸載模塊,採用這種動態加載的方式便於驅動程序的調試,同時可以針對產品的功能需求,進行內核的裁剪,將不需要的驅動去除,大大減小了內核的存儲容量。

3、insmod與modprobe命令

在Linux中,modprobe和insmod都可以用來加載module,不過現在一般都推薦使用modprobe而不是insmod了。
modprobe和insmod的區別是什麼呢?
(1)modprobe可以解決load module時的依賴關係,比如load moudleA就必須先load mouduleB之類的,它是通過/lib/modules//modules.dep文件來查找依賴關係的。而insmod不能解決依賴問題。
(2)modprobe默認會去/lib/modules/目錄下面查找module,而insmod只在給它的參數中去找module(默認在當前目錄找)。

這樣,有時insmod也有它的有用之處,舉個例子吧。
有/root/my-mod.ko這個module,cd /root/,然後用insmod my-mod.ko(insmod /root/my-mod.ko)就可以insert這個module了,但是用modprobe my-mod.ko(modprobe /root/my-mod.ko)卻提示"FATAL: Module my-mod.ko not found",這就是因爲modprobe是到/lib/modules/`uname -r`/下去找module的,如果沒找到就是這樣了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章