linux學習1 驅動模組的載入

2021-10-08 11:13:39 字數 1900 閱讀 7687

編譯環境 :ubuntu 16.04

linux板子: exynos4412

目錄1. 編譯生成模組檔案.ko

1.1 板子執行最小系統

1.2 編譯模組

1.3 掛載u 盤

2 模組操作

2.1 載入模組

2.2 檢視模組

2.3 解除安裝模組

linux 驅動有兩種執行方式,第一種就是將驅動編譯進 linux 核心中,這樣當 linux 核心啟動的時候就會自動執行驅動程式。第二種就是將驅動編譯成模組(linux 下模組擴充套件名為.ko),在linux 核心啟動以後使用「insmod」命令載入驅動模組。在除錯驅動的時候一般都選擇將其編譯為模組,這樣我們修改驅動以後只需要編譯一下驅動**即可,不需要編譯整個 linux **。

而且在除錯的時候只需要載入或者解除安裝驅動模組即可,不需要重啟整個系統。總之,將驅動編譯為模組最大的好處就是方便開發,當驅動開發完成,確定沒有問題以後就可以將驅動編譯進linux 核心中.

對於字元裝置驅動而言,當驅動模組載入成功以後需要註冊字元裝置,同樣,解除安裝驅動模組的時候也需要登出掉字元裝置。

將編譯生成的.ko檔案拷入u盤

①確定在 目錄 /mnt 下建立了 資料夾 /usb,如果未建立可鍵入一下命令:

mkdir /mnt/usb_disk

②載入 u 盤,需鍵入以下命令:

mount  /dev/sda   /mnt/usb_disk成功後,即可使用 u 盤了, 檔案就在目錄 /mnt/usb_disk 下。

主要檢視u盤插入是列印的資訊:

所以我這裡應該: mount  /dev/sda1/mnt/usb_disk

③檢視u盤裡面的內容

cd/mnt/usb_diskls

③解除安裝u盤:在使用完u盤後,在拔出前需要先鍵入解除安裝u盤命令    

命令如下:umount   /mnt/usb 

insmod  ***.ko

insmod 命令不能解決模組的依賴關係,比如 drv.ko 依賴 first.ko 這個模組,就必須先使用insmod 命令載入 first.ko 這個模組,然後再載入 drv.ko 這個模組。但是 modprobe 就不會存在這個問題,modprobe 會分析模組的依賴關係,然後會將所有的依賴模組都載入到核心中,因此modprobe 命令相比 insmod 要智慧型一些。

modprobe 命令主要智慧型在提供了模組的依賴性分析、錯誤檢查、錯誤報告等功能,推薦使用 modprobe 命令來載入驅動。

lsmod

rmmod

出現問題:rmmod: can't change directory to '/lib/modules': no such file or directory

參考:

主要就是:

mkdir -p /lib/modules
注意根據實際情況,這裡的3.0.15替換為提示資訊

我這裡出現:

mkdir -p /lib/modules/3.0.15
之後成功解除安裝

Linux驅動學習(模組1)

驅動學習第一篇 hello world hello.c file name hello.c author devil box mail 18855953390 163.com created time 2016年05月20日 星期五 14時07分58秒 introduction include in...

linux驅動模組的載入和解除安裝

linux 驅動有兩種執行方式,第一種就是將驅動編譯進 linux 核心中,這樣當 linux 核心啟動的時候就會自動執行驅動程式。第二種就是將驅動編譯成模組 linux 下模組擴充套件名為.ko 在linux 核心啟動以後使用 insmod 命令載入驅動模組。在除錯驅動的時候一般都選擇將其編譯為模...

linux驅動載入命令和驅動模組資訊檢視

驅動操作命令 insmod modprobe 載入驅動 rmmod 解除安裝驅動 lsmod 檢視系統中所有已經被載入了的所有的模組以及模組間的依賴關係 modinfo 獲得模組的資訊 檢視已經載入的驅動模組的資訊 lsmod 能夠顯示驅動的大小以及被誰使用 cat proc modules 能夠顯...