由設備識別的韌體二進位文件

由設備識別的韌體二進位文件

韌體二進位檔案如何被任何裝置識別,就像二進位檔案是針對該裝置的一樣。

答案1

硬體設備不會指定韌體檔案的名稱;設備驅動程式就是這樣做的。

一般來說,核心可以根據標準化標識符(例如 PCI/PCIe 或 USB 總線上的供應商/產品 ID,或 DMI 資訊)檢測硬件,或者它可能已經知道該設備應該存在(平台設備;基於某些體系結構(如ARM 上的裝置樹資訊),或者管理員或系統啟動腳本可能會明確告訴核心載入某個驅動程式(仍與一些基於舊ISA 體系結構的x86 舊裝置一起使用,該體系結構不是全自動的) -可檢測)。

然後,驅動程式將嘗試使用硬體供應商記錄的或逆向工程的某種方法來確認設備存在並確定設備的狀態。如果設備需要固件,驅動程式將包含必要的核心呼叫來載入適當的韌體檔案。一旦韌體資料載入到記憶體中,驅動程式就會使用適合該特定硬體的任何方法將其傳送到硬體設備。

硬體設備本身可能會也可能不會驗證韌體資料是否正確。最簡單的硬體設計可能只是相信驅動程式提供的韌體是正確的,如果不正確,則可能會掛起,可能需要設備特定的重置序列,甚至需要斷電/拔掉插頭才能使設備再次可用。在另一個極端,韌體可能經過加密簽署甚至加密,並使用適當的金鑰和功能來驗證/解密嵌入在裝置硬體中的韌體。

在硬體本身中添加韌體驗證/解密邏輯會增加硬體設備的價格和複雜性,因此通常只有當使用非標準韌體可能導致比設備本身無法工作更嚴重的問題時,製造商才會這樣做:例如, WiFi 設備韌體可以調節所使用的頻率和功率級別,因此不正確的韌體可能會導致設備在禁止的頻率上傳輸,從而可能對空中交通管制雷達(民用或軍用)造成乾擾。這可能會產生非常嚴重的後果,因此硬體製造商有動力確保只能使用經過認證符合適當法規的韌體版本。

相關內容