linux 中的3類驅動程式
阿新 • • 發佈:2018-12-21
1.字元裝置驅動
I/O傳輸過程中以字元為單位進行傳輸的裝置。如鍵盤。
write :操作就是從應用程式接收資料送到硬體。
read :操作就是從硬體讀取資料並交給應用程式。
ioctl: 應用程式提供對硬體行為的控制
open:應用程式開啟裝置時對裝置進行初始化
release :應用程式關閉裝置時的操作
static struct file_operations my driver_fops={
owner :THIS_Module,
write:mydriver_write,
read:mydriver_read,
ioctl:mydriver_ioctl,
open: mydriver_open,
release:mydriver_release,
};
module_exit() 用於向核心宣告退出。
字元裝置驅動程式開發基本步驟如下:
1.確定主裝置號和次裝置號
2.實現字元驅動程式,先實現file_operations 結構體,然後實現初始化函式並註冊字元裝置,然後實現銷燬函式並釋放字元裝置。
3.建立裝置檔案節點。
塊裝置驅動
塊裝置只能以塊為單位接收輸入返回輸出。
塊裝置需要緩衝區。
塊裝置可以隨機訪問。字元裝置只能順序讀寫。
struct block_device_operations
int(*open)(struct inode *,stuct file*);
int (*release)
int(*ioctl)
int(*unlock_ioctl)
...
....
網路裝置驅動
net_device 表示網路裝置介面。
網路裝置媒介層
網路裝置驅動層
網路裝置介面層
網路協議介面層