當然,還可以使用模組的方法.把新驅動編譯成乙個模組.使用make menuconfi類的命令.添進核心裡面.重新編譯或手動載入模組.lsmod rmod insmod溫習溫習一切都快忘了喲
linux核心驅動模組載入方式
2009-02-05 10:37
linux核心驅動模組載入方式
在類unix作業系統中,驅動載入方式一般分為:動態載入和靜態載入,下面分別對其詳細論述。
一、動態載入
動態載入是將驅動模組載入到核心中,而不能放入/lib/modules/下。
在2.4核心中,載入驅動命令為:insmod ,刪除模組為:rmmod;
在2.6以上核心中,除了insmod與rmmod外,載入命令還有modprobe;
insmod與modprobe不同之處:
insmod 絕對路徑/××.o,而modprobe ××即可,不用加.ko或.o字尾,也不用加路徑;最重要的一點是:modprobe同時會載入當前模組所依賴的其它模組;
lsmod檢視當前載入到核心中的所有驅動模組,同時提供其它一些資訊,比如其它模組是否在使用另乙個模組。
二、靜態載入
(一)概念
在執行make menuconfig命令進行核心配置裁剪時,在視窗中可以選擇是否編譯入核心,還是放入/lib/modules/下相應核心版本目錄中,還是不選。
(二)操作步驟
linux裝置一般分為:字元裝置、塊裝置和網路裝置,每種裝置在核心源**目錄樹drivers/下都有對應的目錄,其載入方法類似,以下以字元裝置靜態載入為例,假設驅動程式源**名為ledc.c,具體操作步驟如下:
第一步:將ledc.c源程式放入核心原始碼drivers/char/下;
第二步:修改drivers/char/config.in檔案,具體修改如下:
按照開啟檔案中的格式新增即可;
在檔案的適當位置(這個位置隨便都可以,但這個位置決定其在make menuconfig視窗中所在位置)加入以下任一段**:
tristate 'leddriver' config_ledc
if [ "$config_ledc" = "y" ];then
bool ' support for led on h9200 board' config_ledc_console
fi說明:以上**使用tristate來定義乙個巨集,表示此驅動可以直接編譯至核心(用*選擇),也可以編制至/lib/modules/下(用m選擇),或者不編譯(不選)。
bool 'leddriver' config_ledc
if [ "$config_ledc" = "y" ];then
bool ' support for led on h9200 board' config_ledc_console
fi說明:以上**使用tristate來定義乙個巨集,表示此驅動只能直接編譯至核心(用*選擇)或者不編譯(不選),不能編制至/lib/modules/下(用m選擇)。
第三步:修改drivers/char/makefile檔案
在適當位置加入下面一行**:
obj-$(config_ledc) += ledc.o
或者在obj-y一行中加入ledc.o,如:
obj-y += ledc.o mem.o 後面不變;
ok,經過以上的設定就可以在執行make menuconfig命令後的視窗中的character devices---> 中進行選擇配置了。選擇後重新編譯就ok了。
複製搜尋 複製
搜尋
linux下新增新驅動的方法
當然,還可以使用模組的方法.把新驅動編譯成乙個模組.使用make menuconfi類的命令.添進核心裡面.重新編譯或手動載入模組.lsmod rmod insmod溫習溫習一切都快忘了喲 linux核心驅動模組載入方式 2009 02 05 10 37 linux核心驅動模組載入方式 在類unix...
linux下新增新的路由
linux下靜態路由修改命令 方法一 新增路由 route add net 192.168.0.0 24 gw 192.168.0.1 route add host 192.168.1.1 dev 192.168.0.1 刪除路由 route del net 192.168.0.0 24 gw 19...
Linux下php新增新擴充套件
今天幹了一件很嚴重的錯事,用tp開發完新專案後,傳到伺服器上報錯,網上查了一下,說未載入pdo,就載入吧。找到配置檔案php.ini,搜到 extension php pdo mysql.dll,去掉前面的注釋,重啟伺服器,看似一切正常,卻大錯特錯。linux下應該是.so,而不是.dll,php原...