linux驅動子系統 SCSI

2021-06-19 01:30:17 字數 978 閱讀 5093

scsi初始化流程:

1、首先如果驅動核心發現了1個scsi控制器,則呼叫scsi_host_alloc建立scsi中間層的代表例項;

2、呼叫scsi_add_host新增建立的scsi例項到scsi中間層;

3、呼叫scsi_scan_host掃瞄scsi控制器下面的scsi裝置;

4、探測到的scsi裝置通過驅動模型新增到scsi匯流排上,並根據裝置的型別呼叫相應的上層驅動進行高層的初始化;

scsi核心分為3層,最上面一層負責和塊裝置層介面,中間層實現scsi的核心功能,底層負責和硬體裝置打交道。

頂層的scsi分析涉及到2個關鍵的資料結構,分別是struct scsi_disk和struct scsi_driver;其中struct scsi_disk是物理層邏輯裝置的高層抽象,struct scsi_driver則是同類裝置的驅動代表,在現有的scsi裝置中struct scsi_driver包括了幾類裝置,分別是:scsi硬碟、scsi箱體元件、media changer device、物件儲存裝置、scsi磁帶、cd-rom裝置。

底層的scsi分析設計到的主要資料結構是struct scsi_device、struct scsi_target和struct scsi_host。struct scsi_device表示單個的lun,struct scsi_target表示scsi匯流排上連線的物理裝置,struct scsi_host表示scsi匯流排控制器。

scsi裝置、scsi驅動、scsi匯流排之間的關係如下圖所示:

其中右邊的驅動是針對左邊的scsi_lun,而左邊的scsi裝置和scsi_lun都是在scsi控制器的探測下建立起來的。

scsi裝置的讀寫流程示意圖如下:

linux驅動子系統 MTD

mtd是各種型別儲存裝置的抽象,是介於高層抽象和底層物理硬體之間的橋梁,它遮蔽了底層硬體的技術細節,對上層模組提供無差別的訪問控制。分析mtd部分的 就不難發現,mtd採用3層設計思路,最上面一層用於和塊裝置層對接 中間層是mtd實現,最底層是硬體驅動層。mtd下層註冊介面為mtd device r...

linux驅動子系統 PCI

pci子系統的關鍵概念包括 pci裝置 pci插槽 pci域 pci匯流排 pci橋 熱插拔控制器 pci裝置探測流程 linux啟動過程中會呼叫pci核心的探測函式進行pci裝置的探測,並建立起相關的拓撲關係以及記錄每個探測到的裝置的資訊 探測採用遞迴的方式從根控制器開始逐級往下探測,遇到橋控制器...

linux驅動子系統之輸入子系統 5

5.總結 5.1 事件資訊的上報過程分析 l 上報的大致過程 裝置驅動層 核心層 事件處理層 應用層 l 具體呼叫的函式 以evdev為例 input event input handle event input pass event handle handler event handle,type...