字元裝置驅動(一) 基本架構

2021-07-22 09:52:30 字數 956 閱讀 8906

字元裝置的驅動程式算是驅動中比較簡單的,最基本的驅動主要由file_operations、register_chrdev、module_init、module_exit這幾個比較重要的資料結構組成。下面逐個分析

file_operations

這個結構體為驅動框架抽象了底層的具體操作,為上層提供了open,read,write等函式。這幾個函式在定義的時候通過函式指標的形式定義。在具體的字元裝置驅動中,通過這樣的指標,可以找到具體的、和硬體直接相關的函式。這其實就是用c語言實現的物件導向程式設計的思想。現代作業系統中,應用物件導向程式設計的思想很普遍。至於為什麼這麼應用,這個是另外乙個話題了,這裡不做展開。

這是部分file_operations的**,這個結構體在include/linux/fs.h中定義

struct file_operations ;
register_chrdev

file_operations用於註冊硬體操作相關的函式,使得核心可以呼叫驅動中的這些函式。但是僅僅如此是不足夠的,還需要向核心中註冊整個驅動才行,這是該函式的原型,顯然,這是乙個函式,和file _operations不同。引數分別是主裝置號,驅動名稱,file_operations結構體的名稱,

int register_chrdev(unsigned

int major, const

char *name,

const

struct file_operations *fops)

unregister_chrdev

顯然,這個和上乙個函式的作用相反,是用於解除安裝驅動的。

module_init和module_exit

這連個函式也是非常重要的,前者成為入口函式,後者成為出口函式。所有的驅動都從入口函式開始,在出口函式結束。至於定義,這個在/include/linux/init.h中定義,然後巨集乙個套乙個,這裡不做展開。

LTE LTE基本架構

這篇文章主要介紹lte的最基礎的架構,包括lte網路的構成,每乙個網路實體的作用以及lte網路協議棧,最後還包括對乙個lte資料流的模型的說明。這是一張非常有名的lte架構圖,從圖中可以看出,整個網路構架被分為了四個部分,包括由中間兩個框框起來的e utran部分和epc部分,還有位於兩邊的ue和p...

MySql基本架構

mysql基本架構分為server層和儲存引擎 負責連線客戶端與server層,簡單來說就像是乙個登入認證模組,判斷使用者的身份和許可權。mysql會快取我們執行過的select語句,以key value的形式直接放在記憶體中。後續查詢如果命中快取就可以直接拿出快取的結果集而不用去執行後面的複雜操作...

Linux基本架構

linux設計思想 1.程式應該小而專一,程式應該盡量的小,且只專注於一件事上,不要開發那些看起來有用但是90 的情況都用不到的特性 2.程式不只要考慮效能,程式的可移植性更重要,shell和perl,python等指令碼相比c有更好的移植性 3.一切皆檔案,盡量使用文字檔案來儲存資料,避免使用二進...