眾所周知linux驅動分為三個類,分別為:
字元裝置驅動
塊裝置驅動
網路裝置驅動
這三種驅動之前有什麼聯絡或者說有什麼差異點呢,可能很多人都不了解,我在研究過程中為了更好的理解,所以做了乙個總結。
首先我們來看看字元裝置驅動和塊裝置驅動是怎麼定義的:
字元裝置驅動是以不定長度的字元來傳送資料,字元裝置是乙個順序的資料流裝置,對這種裝置的讀寫是按字元進行的,而且這些字元是連續地形成乙個資料流;
字元裝置驅動的關鍵資料結構有cdev(用來描述乙個字元裝置)和file_operations結構體的操作
struct cdev {
struct kobject kobj;
struct module *owner; //所屬的模組
struct file_operation *ops //檔案操作結構體
struct list_head list;
dev_t dev;
unsigned int count;
linux字元裝置驅動的組成
1、字元裝置驅動的模組載入和解除安裝函式
(1)載入函式中:實現裝置號的申請和cdev的註冊
2、字元裝置驅動的file_operations結構體的成員函式
塊裝置驅動
塊裝置驅動是以固定大小長度來傳送和轉移資料的,塊裝置能夠隨機,不需要按照順序地訪問固定大小的資料片。
我們從他們的定義就可以明白,
字元裝置驅動是按照資料流的方式做資料傳輸的,並且這個資料流是有一定順序的,譬如說鍵盤這種字元裝置驅動,輸入yes這樣的字串的時候,就會按照y->e->s這樣的順序的資料流傳輸,塊裝置驅動是可以隨機訪問固定大小的資料段(和字元裝置驅動的資料流差異點),並且被讀的塊可以不一定是連續的,這裡的連續的是指被對映的虛擬位址,譬如說硬碟就是乙個塊裝置。
網路裝置是乙個比較特殊的裝置,它負責接收和傳送幀資料,可能是物理幀,也可能是ip資料報,這些特性都有網路驅動決定。它並不存在於/dev下面,所以與一般的裝置不同。網路裝置是乙個net_device結構,並通過register_netdev註冊到系統裡,最後通過ifconfig -a的命令就能看到。
比較典型的幾類驅動:
1,字元裝置驅動:滑鼠,鍵盤,顯示器
2,塊裝置驅動:硬碟,u盤
3,網路裝置驅動:藍芽,wifi,網絡卡等
Linux驅動裝置分類
1.字元驅動裝置 指訪問時沒有快取的裝置,採用位元組流訪問的裝置,如按鍵,串列埠,音效卡,觸控螢幕等 2.塊驅動裝置 有快取來支援,塊裝置必須能夠隨機訪問 random access 字元裝置則沒有這個要求。unix下,採用乙個資料塊來進行訪問,資料塊一般為512位元組,1k等,linux下,可以採...
Linux驅動分類簡介
linux驅動主要具有如下幾點作用 系統呼叫是應用程式和核心之間的介面,驅動程式是核心和硬體之間的介面 驅動程式接受上層軟體 應用程式 核心 的請求,完成對硬體的操作,遮蔽了硬體的細節 驅動程式將硬體裝置抽象成乙個檔案,應用程式操作檔案即操作硬體,符合linux 一切皆檔案 的思想。計算機硬體系統有...
Linux裝置驅動分類
linux系統的裝置分為字元裝置 char device 塊裝置 block device 和網路裝置 network device 三種。字元裝置是指訪問時沒有快取的裝置。塊裝置的讀寫都有快取來支援,並且塊裝置必須能夠隨機訪問 random access 字元裝置則沒有這個要求。典型的字元裝置包括...