首頁>技術>

1. "HelloModule.ko"核心模組程式設計

1.1 實驗目的

· 掌握Linux核心驅動模組的編寫、編譯和載入過程

· 掌握帶引數的核心模組的編寫、編譯和載入過程

· 掌握基於X86平臺和ARM 平臺掌握Linux核心模組更加靈活的特性

1.2 實驗原理

· 本實驗透過編寫一個簡單的核心模組,實現模組的初始化和解除安裝函式,並在載入時傳入控制引數,用printk能夠在後臺列印載入和解除安裝資訊。使用Makefile為當前執行的Linux核心編譯驅動模組,最後透過insmod命令載入模組執行。

· 核心模組流程圖。

SHAPE \* MERGEFORMAT

1.3 步驟與現象

· X86平臺不帶引數的核心模組

1. 編寫hellomodule.c和Makefile檔案

編譯

執行,第一步無hellomodule 模組

2. 插入hellomodule模組

3. 解除安裝模組

· 分析程式碼執行現象

1. 我們在ubuntu圖形介面gnome下的控制檯不能顯示我們的printk輸出,printk函式是系統核心呼叫,在init程序啟動後就申請不到控制檯,所以呼叫它就沒能在圖形介面下的控制檯輸出,透過檢視日誌檔案。

先檢視/var/log/syslog 檔案,在載入模組,再檢視/var/log/syslog 檔案。

2. 解除安裝模組

3. 分析載入的模組以及模組間的依賴關係

4. lsmod命令實際上讀取並分析/proc/modules檔案

5. 核心中已載入模組的資訊也存在於/sys/module目錄下,載入hellomodule.ko後,核心將包含/sys/module/hellomodule目錄,檢視該目錄樹。

6. 獲取模組的資訊,包含模組的作者、模組的說明、模組所支援的引數以及vermagic

· X86平臺帶引數的核心模組,雷同不帶引數的部分就不列出

1. 編譯

2. 檢視日誌檔案

3. 帶引數載入

· ARM平臺不帶引數的核心模組, 雷同X86平臺就不列出

1. copy x86 平臺的hellomodule.c和Makefile檔案

2. 修改Makefile

3. 編譯,驗證

4. Copy到SD卡

5. 開發板SD卡插入,上電,檢視執行結果

· ARM平臺帶引數的核心模組, 雷同X86平臺就不列出

1. 原始碼準備

2. 編譯

3. COPY到SD卡

4. 開發板SD卡插入,上電,檢視執行結果

1.4 關鍵程式碼分析

· X86平臺

1. 無引數

C檔案

Makefile檔案:

2. 有引數

C檔案:

Makefile檔案:

· ARM平臺

1. 無引數

C檔案: 雷同x86 平臺無引數部分

Makefile檔案:

1. 有引數

C檔案:雷同x86平臺有引數部分

Makefile檔案:

20
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 碼農如何選擇程式語言才有“錢”途?