字元裝置是指在i/o傳輸過程中以字元為單位進行傳輸的裝置,例如鍵盤,印表機等。
cdev結構體:(描述乙個字元裝置)
struct cdev
linux核心提供的一組函式用於操作cdev結構體:
void cdev_init(...)
//初始化cdev成員,建立cdev與file_operations的連線
struct cdev *cdev_alloc(void)
//動態申請乙個cdev記憶體
void cdev_put(...)
int cdev_add(...)
//新增乙個cdev
void cdev_del(...)
//刪除乙個cdev
在呼叫cdev_add()向系統註冊字元裝置之前,要先呼叫register_chrdev_region或者alloc_chrdev_region()向系統申請裝置號;
在呼叫cdev_del()向系統登出字元裝置之後,要呼叫unregister_chrdev_regin()來釋放原先申請的裝置號;
file_operations結構體:
file_operations結構體中的成員函式是字元裝置驅動程式設計的主體內容,是字元裝置驅動與核心的介面,是使用者空間對linux進行系統呼叫的最終落實者。
struct file_operations(主要成員)
linux字元裝置驅動的組成:
1:字元裝置驅動模組載入和解除安裝函式
2:字元裝置驅動中的file_operations結構體中成員函式
由於核心空間與使用者空間的記憶體不能直接互相訪問,因此借助了函式copy_from_user()完成使用者空間到核心空間的拷貝,以及copy_to_user()完成核心空間到使用者空間的拷貝。
字元裝置驅動模型
1.裝置描述結構cdev 驅動模型種類繁多,這就需要我從眾多的模型中提取出他們的一些共性 a.驅動初始化 a.1 分配裝置描述結構 a.2 初始化裝置描述結構 a.3 註冊裝置描述結構 a.4 硬體初始化 b.實現裝置操作 c.驅動登出 裝置描述結構 在任何一種驅動模型中,裝置都會用的核心中的一種結...
Linux 字元裝置驅動模型
一。使用字元裝置驅動程式 1.編譯 安裝驅動 在linux系統中,驅動程式通常採用核心模組的程式結構來進行編碼。因此,編譯 安裝乙個驅動程式,其實質就是編譯 安裝乙個核心模組 2.建立裝置檔案 通過字元裝置檔案,應用程式可以使用相應的字元裝置驅動程式來控制字元裝置。建立字元裝置檔案的方法一般有兩種 ...
裝置驅動模型
linux裝置模型中三個很重要的概念就是匯流排 裝置和驅動,即bus,device和driver。它們分別對應的資料結構分別為struct bus type,struct device和struct device driver。struct device 操作函式 註冊 int device reg...