cdev linux Linux字元裝置驅動框架

2021-10-18 05:25:51 字數 1643 閱讀 3692

字元裝置驅動基本模型:

驅動初始化

實現驅動裝置

驅動登出

1.驅動初始化

1.分配cdev------------------主要是分配乙個cdev結構體和申請裝置號 靜態分配動態分配

2.初始化cdev---------------int cdev_init(struct cdev *, struct file_operation *)用於初始化cdev的成員, - 並建立與file_ operation的連線。

3.註冊cdev-----------------int cdev_add(struct cdev*, dev_t,unsigned)向系統新增乙個cdev完成裝置註冊

4.硬體初始化---------------硬體資源的申請與配置,涉及位址對映,暫存器的讀寫等操作

主裝置號用來標識與裝置檔案鏈結的驅動程式。次裝置號用來辨別是哪個裝置。cdev結構體的dev_t成員敵營一樂裝置號,高12位為主裝置號,低20位為次裝置號。

裝置號的獲得與構成:

獲得主裝置號:major(dev_t dev)

獲得次裝置號:minor(dev_t dev)

生成裝置號:mkdev(int major, int minor)

裝置號申請:

靜態:int register_chrdev_region(dev_t from, unsigned count, const char *name);

2.實現裝置操作

使用者空間的open write read ioctrl等系統呼叫最終需要在file_operation結構體中落實,他們是字元裝置與核心的介面。

舉例如下:

struct file_operation hello_fops = {

.owner = this_module,

.open = hello_open,

.release = hello_release,

.read = hello_read,

.write = hello_write

在驅動**中,實現相關的裝置操作函式時,需要按照核心中給定的引數型別、返回值型別等實現。

3.驅動登出

1.刪除cdev-------------在字元裝置驅動模組解除安裝函式中通過cdev_del()向系統 刪除乙個cdev,完成字元裝置的登出。

2.釋放裝置號-----------unregister_chrdev_region()被呼叫釋放原先申請的裝置號。

建立裝置節點:

Python檢測重複字 部分中華字經重複字檢測

中文去標點符號,中文繁體字轉化簡體字,列表檢測並輸出重複項,list當多個相同值時索引 關於去標點,使用包 zhon,直接pip即可 安裝及使用 關於中文繁簡轉換,安裝opencc python 安裝及使用 coding utf 8 author zhr date 2019 10 25 20 26 ...

監聽套接字 連線套接字

摘要 對於伺服器程式設計中最重要的一步等待並接受客戶的連線,那麼這一步在程式設計中如何完成,accept函式就是完成這一步的。它從核心中取出已經建立的客戶連線,然後把這個已經建立的連線返回給使用者程式,此時使用者程式就可以與自己的客戶進行點到點的通訊了。accept函式等待並接受客戶請求 inclu...

java FileInputStream 位元組流

首先要明白,檔案儲存在硬碟上實質上儲存的都是數字,因此通過fileinputstream中的read 方法讀取的是數字。fileinputstream fis new fileinputstream new file test.txt int x fis.read system.out.printl...