嵌入式Linux驅動筆記 基本知識一

2021-06-19 13:10:43 字數 1675 閱讀 3200

一、驅動是硬體操作+核心程式設計(裝置驅動)

1.字元裝置驅動

2.訪問控制(互斥)阻塞、喚醒

3.輪詢非同步通知,中斷處理延時、記憶體分配、裝置模型。

4.簡單的字元裝置驅動編寫——基於子系統的驅動(i2c/spi)

5.塊裝置驅動/網路裝置驅動框架

二、說明:

核心模組(module):核心執行時可動態新增/刪除的**

核心的配置:< >為不編譯;< * >為靜態方式編譯進核心(如:*.c --> *.o --> zimage);< m >為動態編譯 (如:*.c --> *.o --> *.ko)

核心編譯命令:make zimage 直接編譯 和 make module模組動態方式編譯.

以模組方式動態編譯的優點

1.沒有編譯進核心 ,這樣可以使核心更加高效的執行 

2.採用模組方式編譯方便、靈活 

3.模組不編譯進核心不必遵守gpl協議所以保護智財權。

模組和一般的c程式比較:

1.每個c程式都有乙個mian()函式入口點;模組也有入口點 ,它的入口在模組載入函式開始 init_module(),這是呼叫核心的函式;

2.一般的c應用程式結束後系統會自動**資源,但模組要自己申請資源**,不然會一直執行執行直到系統重新執行。

模組的分類:驅動模組、檔案系統模組、網路模組、個協議模組。

三、編寫模組的三要素

1.模組的宣告:module_license("gpl"),核心若不宣告此語句許可會導致整個模組的函式不能呼叫。

2.模組的載入函式(載入模組時執行)

核心api :int init_module(void);作用是申請資源。

3.模組解除安裝函式

核心api:void cleanup_module(void),其作用是釋放資源。

模組編寫所需標頭檔案:#include

此標頭檔案是放在核心原始碼的標頭檔案中。

四、模組的相關命令

1.lsmod,用來檢視系統已載入的模組資訊。

2.insmod + ***.ko,用於載入模組。

3.dmesg,檢視核心列印的資訊,可加 選項 「-c」,此選項只有管理員才能執行。

4.rmmod + *** 或 ***.ko,用於模組的解除安裝。

5.make clean,清楚中間編譯生成的檔案。

五、模組的編譯條件

1.需要乙個經過配置和編譯的核心(原始碼)

2.模組編譯所用核心版本和載入核心版本必須一致

六、模組編譯

1.內部模組(internal_module)

2外部模組(external_modele)

注:原始碼考到核心中編譯時叫內部模組,否則叫外部模組。

3.內部模組的編譯: a.模組原始碼拷貝到核心原始碼相關目錄下

b.修改kconfig(修改新增配置選項)

c.配置選項 d.修改makefile  

e.編譯所以模組,命令「make modules」

嵌入式linux驅動 輸入子系統筆記

一 開發環境 1 核心 linux 2.6.22.6 2 jz2440 3 ubuntu 9.10 二 過程 1 分配input dev結構體 使用input allocate device函式,如 先定義乙個input dev 結構體型別變數 static struct input dev key...

嵌入式linux字元裝置驅動

arm linux 驅動 抵岸科技 1.我們需要先呼叫register chrdev region 或 alloc chrdev region 來向系統申請裝置號 int register chrdev region dev t first,unsigned int count,char name ...

嵌入式linux字元裝置驅動

1.我們需要先呼叫register chrdev region 或 alloc chrdev region 來向系統申請裝置號 int register chrdev region dev t first,unsigned int count,char name 函式通過已知的裝置號first來註冊...