即插即用的要求

即插即用的要求

即插即用可以幫助我們發現系統中的硬體元件,而無需物理配置或使用者乾預來解決資源衝突。

但我想知道:為了允許即插即用工作,對硬體和/或軟體是否有特殊要求?以USB為例;為了使用標準 Microsoft 驅動程序,對 USB 記憶棒或 USB 磁碟有什麼要求嗎?

答案1

「即插即用」是 Windows 特有的術語,最初是指後來的 ISA 和 PCI 裝置允許作業系統選擇它們消耗的資源的方法。 BIOS 也可以為 DOS 執行此操作,或讓 Windows 完全執行此操作。

資源是 A) 記憶體位址、B) I/O 位址、C) IRQ 和/或 D) DMA 通道。設備可以使用其中的每一個、幾個或全部來與 CPU 進行通訊。

因此,最初的“即插即用”驅動程式是一個可以理解如何初始化設備的驅動程序,即將其配置為獲取其他設備未使用的資源。

即插即用的另一個重要部分是設備識別自身的標準方法,PCI(可能還有 ISAPNP)規定每個設備都有唯一的供應商和設備 ID。這被轉移到 USB 上。因此主機作業系統可以找出裝置「是什麼」並載入正確的驅動程式。

現在,當我們進入設計為「熱插拔」的設備時,情況略有不同,但顯然仍然使用術語「即插即用」來描述它。大多數熱插拔設備由非熱插拔設備「託管」。 USB 設備由 USB 控制器“託管”,該控制器本身就是一個 PCI 設備,消耗通常透過即插即用分配的一個或多個資源。透過 USB 總線與裝置通訊涉及「透過」USB 控制器。 SCSI、IDE 和 SATA 設備也有類似的情況。

因此,為了實現熱插拔功能,「主機」控制器的驅動程式需要一種機制來告訴代表其「上方」裝置的驅動程式正在發生什麼,即USB 控制器驅動程式需要一種方法來告訴USB 海量儲存驅動程式裝置已斷開連線。 「上層」驅動程式需要具有在被要求刪除時可以乾淨終止的程式碼,而不是期望在重新啟動之前保持駐留。

大多數匯流排類型(例如 USB、SCSI、SATA)均受驅動程式必須識別和實現的標準管轄。

在硬體層面,大多數熱插拔設備的設計都採用部分連接器釋放靜電的方式,並且傳輸電源的引腳比傳輸資料的引腳先連接幾分之一秒。仔細觀察USB和SATA連接器接腳;這就是為什麼有些比另一個長的原因。 IDE 連接器不會執行此操作,且熱插拔不安全。

答案2

據我所知,整個即插即用的「魔力」只有兩個重要的核心部分:

  • 該軟體必須能夠識別已連接的某些新硬體(例如 USB 標準的一部分)。
  • 可辨識硬體。使用特殊請求(不使用供應商特定驅動程式)可以檢索唯一 ID(通常由供應商 ID 和裝置/硬體 ID 組成)。作業系統可以使用這些來識別特定的硬體並安裝正確的驅動程序,而無需先詢問用戶。
  • (可選:)硬體和軟體(驅動程式)理想情況下應該無需重新啟動即可運作。

為了使用所提供的標準驅動程序,硬體必須對發送的命令做出正確的反應(即硬體必須說正確的“語言”)。根據硬體的類型,這通常已經標準化(例如USB 大容量儲存設備)。

相關內容