簡體   English   中英

如何從用戶空間更新固件?

[英]How is it possible to update the firmware from userspace?

這是一直讓我震驚的事情之一。 登錄Windows時,如何運行一個應用程序,可以升級我的devive BIOS或為硬盤等安裝固件。

我什至沒有找到令人滿意的答案。

這對我來說如此神奇的原因是:

固件駐留在OS無法直接訪問的設備上(必須通過驅動程序來訪問AFAIK);其次,固件駐留在只讀存儲器部分上,用戶空間應用程序甚至可以訪問諸如此類的東西,而很少進行更改。

擁有操作系統的目的之一是,它將與不允許用戶空間進行通話的設備進行通話。 例如,即使打印到屏幕也正在與您的應用程序空間不擁有的設備通信。 您的應用程序空間程序將調用OS,並說“請顯示此內容”,然后OS會為您完成。

在更新固件的情況下,您致電那里的服務來為您執行更新。 存儲固件的設備通常是稱為“閃存”的設備類型的芯片。 該芯片很難寫,但是如果您知道如何操作並擁有適當的訪問權限,則可以將其擦除並重新編程。 操作系統將調用驅動該操作系統的驅動程序,並知道其支持的設備的詳細信息。 因此,您將調用OS服務,並為其提供從制造商處下載的新固件映像。 該映像通常經過加密簽名,以便操作系統可以確定它確實來自制造商並且尚未修改,這意味着可以安全地用作新固件。 在檢查映像通過簽名測試后,操作系統可以擦除閃存的一部分,並使用新固件對其進行重寫。 同樣,閃存中可能會存在固件的備份副本,以防萬一在此過程中出現問題。

例如,如果在擦除之后但在寫入新固件之前關閉計算機的電源,則您將沒有固件並且無法啟動。 因此,在進行某些更新時,操作系統會溫暖您的電源,不要關閉計算機,並確保已連接電源。 有時,固件的備份副本可以使此步驟的風險降低一些。

我只是在泛泛而談。 這是一個大話題。 希望這有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM