【Linux操作系统分析】设备驱动处理流程
1 驅動程序,操作系統,文件系統和應用程序之間的關系
字符設備和塊設備映射到操作系統中的文件系統,由文件系統向上提供給應用程序統一的接口用以訪問設備。
Linux把設備視為文件,稱為設備文件,通過對設備文件的讀寫操作實現對真實外設的操作。
從驅動程序的角度來從下到上看層次結構,包含了硬件設備,設備驅動程序(中斷處理程序,設備服務程序),文件系統和用戶進程四個層次:
需要知道的兩個概念:
設備號:
- 主設備號:標識同一類設備,對應一個驅動程序
- 從設備號:標識一個設備實例,從設備號使得不同的物理設備使用同一個驅動程序。
設備文件:存在硬盤上的實際存在的文件,包括設備的名字,類型,設備號
需要知道的三個關于驅動操作的數據結構:
- file_operations:文件操作,每個進程對設備的訪問都會轉換為對file_operations的訪問,調用里面的操作函數指針;
- file:打開的文件
- inode:由內核在文件系統中表示文件
2 字符設備的注冊
3 設備的打開
設備注冊完成后,可以打開一個設備,這時候調用系統調用open()函數,經過一系列的調用,最后會調用chrdev_open()函數進行實際的打開操作,其主要流程為:
設備注冊打開完成后,需要對其進行各種操作,外部設備的操作有一個特點就是操作時間較長,且操作時間不確定。
處理外部設備運作時,主要有兩種方式:輪詢和中斷。
下面主要用介紹用中斷的模式等待外設完成操作,其主要流程為:
4 小結
這里簡單總結了一下Linux處理外部設備的主要流程,主要包括了外部設備的注冊,打開和通常的操作。
需要注意的知識點就是驅動設備模型的概念,在字符設備中位cdev。所有對設備的操作,都是在cdev的ops字段尋找處理程序,之前將cdev映射道inode的i_cedv中,cdev的ops字段映射到設備文件file的f_op字段,這樣對設備文件的操作就等同于對設備的操作,這正是本文開頭所說明的設備文件映射到文件系統的實質。
在外部設備的操作流程中,涉及到中斷處理流程,主要指的是軟中斷,會在中斷一章詳細討論。
參考:
Linux操作系統分析PPT:驅動程序編寫基礎
轉載于:https://www.cnblogs.com/suzhou/p/3638984.html
總結
以上是生活随笔為你收集整理的【Linux操作系统分析】设备驱动处理流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机二级python经典真题
- 下一篇: 查看linux的用户