固件(設備內部保存的設備驅動程序)

固件(firmware)通常是指一種嵌入在硬件設備中的軟件,是運行在物聯網設備上的核心軟件之一,擔任着一個系統最基礎最底層工作。例如個人計算機的基本輸入輸出系統(basic input outputsystem,BIOS)、統一可擴展固件接口(unifiedextensible firmware interface,UEFI)可能僅包含設備的基本功能,並且只能為更高級別的軟件提供服務。對於不太複雜的設備,固件充當設備的完整操作系統,執行所有控制、監視和數據操作功能。

固件是一段代碼,它常駐於設備的非易失性存儲器中,使設備能夠執行各種任務和功能。固件的結構包括內核、引導加載程序、文件系統以及其他相關資源,它能夠與其他硬件組件協同工作,特別是在物聯網設備中。儘管可能沒有電子學背景或固件使用經驗,但在日常生活中,如智能手機或智能電視的系統升級過程中,我們可能已間接地與固件有過接觸,甚至下載過設備的新版本固件。固件作為一個複雜的二進制數據塊,由多個相互協作的組件構成。為了深入理解和分析固件,首先需要識別這些構成整個固件的各個部分。在十六進制查看器中打開固件時,可以通過觀察不同代碼段中的特定簽名位元組來識別其組成部分。

工作原理

固件(firmware)一般存儲於設備中的電可擦除只讀存儲器EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,一般可由用戶通過特定的刷新程序進行升級的程序。一般來說,擔任着一個數碼產品最基礎、最底層工作的軟件才可以稱之為固件,比如計算機主板上的基本輸入/輸出系統BIOS(Basic Input/output System),在以前其實更多的專業人士叫它固件。

通常這些硬件內所保存的程序是無法被用戶直接讀出或修改的。在以前,一般情況下是沒有必要對固件進行升級操作的,即使在固件內發現了嚴重的Bug也必須由專業人員帶着寫好程序的芯片把原來機器上的更換下來。早期固件芯片一般採用了ROM設計,它的Firmware代碼是在生產過程中固化的,用任何手段都無法修改。隨着技術的不斷發展,修改固件以適應不斷更新的硬件環境成了用戶們的迫切要求,所以,可重複寫入的可編程可擦除只讀存儲器EPROM(Erasable Programmable ROM),EEPROM和flash出現了。這些芯片是可以重複刷寫的,讓固件得以修改和升級。

技術性能

固件可以說是神經中樞,也可以稱作COMBO的操作系統,它包括很多模塊:驅動、控制、解碼、傳送、檢測……,只有在它的控制下COMBO才能正常工作。同時,固件還帶有許多附加功能,如糾錯技術、安全刻錄技術、播放控制技術等。

實際上,COMBO光驅固件中的關鍵技術就是對各種盤片的識別,而這是通過識別CD、CD-R(W)和DVD盤片在數據凹槽的密度與盤片的化學層的不同完成的。當把盤片放入光驅中,光驅收到操作命令后,含有固件的控制芯片會發出指令,激光頭根據指令依次發出DVD讀取、CD-ROM讀取以及CD-R寫入、CD-RW擦寫的四種激光試探,如果收到反饋則判斷它是何種類別的盤片。按照這一操作程序,一般DVD-ROM盤片需要一次識別,CD盤片需要兩次識別,而CD-R和CD-RW則要經過三次。很顯然,固件的製作水平決定着COMBO光驅的質量。

由COMBO光驅中可以看出,硬件設備的固件與它的硬件有着幾乎相等的地位,而在某些程度上來說固件可能更重要一些。因為只有編寫出出色的固件程序才可以更加充分、巧妙的發揮硬件的作用,而且優秀的固件還可以彌補一些硬件上的缺陷。

應用

其實任何數碼設備都有固件,只是我們有時忽略它的存在而已。

先舉一些常見的例子:手機、數碼相機、mp3、mp4、路由器、電子書、交換機、貓、PSP、PS3、NDS、XBOX、U盤、主板、打印機的BIOS(BIOS就是一種固件)、顯卡的BIOS。

以上產品的固件也許略有耳聞。但下面設備的固件很多人就沒聽說過了。

鼠標、顯示器、光驅、硬盤、鍵盤、數碼衛星接收器、GPS終端、精密的電子儀器(比如核磁共振儀)等等。

固件既然是軟件,就有大小之分。大的可有幾百兆,小的也許只有幾K,甚至不足1K。

為什麼很多設備都沒聽說過有固件的說法呢?因為有些設備,在硬件上會出問題,而在軟件上(即固件)永遠都不會出問題,而且這些固件對於普通用戶是無法更新的(或者更新的技術難度比較大)。它距離我們太遙遠,所以被我們忽略掉而已。

對於獨立可操作的電子產品,固件一般指它的操作系統(「擔任着一個數碼產品最基礎、最底層工作的軟件才可以稱之為固件」,這和操作系統的定義很一致)。比如PSP的固件,就是指PSP 的操作系統。同理,IPHONE的固件也是其操作系統,路由器的固件就是路由器的操作系統,MP4的固件就是MP4的操作系統等。

而對於非獨立的電子產品,比如硬盤、鼠標、BIOS、光驅、U盤等設備,固件就是指其最底層的,讓設備得以運行的程序代碼。

產品升級

雖然以「固件」為名,但不管怎麼說,它還是應當被我們理解為軟件,並且由於集成電路的進步,升級固件也變得越來越簡單,越來越沒有危險,固件程序與我們通常所說的程序的區別已經越來越小。

在早期,升級固件主要是為了解決一些Bug及兼容性問題。而隨着信息時代的來臨,廠商的設計很難全面的滿足客戶需求,更多的廠商把升級固件提供更多更新的功能做為附加值來提供給用戶。因此,我們可以對固件升級做以下總結:

1。在產品發佈之後,廠家對Firmware作了進一步的優化和創新,使之能以更佳的狀態工作。進行固件升級后,可以帶來性能上的提升。

2。產品在生產出來之後,隨着周圍所使用的軟、硬件環境的改變及更新,產品對於許多新的硬、軟件將有可能出現不兼容現象。廠家通過更新Firmware文件,使硬件能兼容更多、更新的軟、硬件,不斷增強產品的兼容性。

3。在原有的硬件基礎上,廠家開發出了新的功能,對於原有的產品,只須更新Firmware就可以增加新的功能。

4。對於任何已生產的軟、硬件,都有可能存在一些缺陷,所以,廠家可以通過更新Firmware來修正以前版本中存在的錯誤、漏洞或不足。

方法步驟

固件升級,有時也稱固件刷新,刷寫,重寫,燒錄或刷機,是指把新的固件寫入芯片中,代替原有的固件的過程。

一般流程

因為數碼產品家族龐大,其固件的種類也是數不勝數的。每種數碼產品的固件升級的方法都是不同的。因此沒有固定的教程給大家。

這裡只給出比較通用的思路。

1。從官網下載新的固件版本以及固件升級軟件,保存至電腦。

2。把需要刷新的設備連接電腦。

4。用刷新工具載入新的固件,點擊刷新,等待完成。

5。關閉刷新程序,刷新結束。

注意事項

雖然升級很簡單,但是還是有些要點應該注意,因為畢竟升級固件是有一定風險性的,所以在升級前和升級中,要謹慎小心。

1。從設備的官網上閱讀升級固件的教程。官網一般會有詳細的說明。

2。固件文件和刷新固件的程序一定要從官方或者可信度高的論壇下載,不能從小網站下載,且一定要和待刷新的硬件型號完全吻合。

3。備份原有的固件,這可以防止在升級錯誤或者不滿意新版固件時回退到原有版本。

4。保存新的固件文件,雖然多數產品都可以實現網絡直接升級,但下載到計算機上再升級的可靠性要高得多。

5。關閉其他軟件,為防止升級過程受到其它軟件的干擾,最好暫時關閉不需要的軟件,特別是殺毒軟件。

6。在整個刷新過程中,絕對不可以斷電,通常斷電設備會損壞,需要送回原廠刷機。

7。在升級之前,禁用系統的屏幕保護及電源管理。

PS:本篇文字僅適用於一般情況。特殊情況除外。比如:PSP刷機,主要的目的是破解。破解固件的刷寫不可能在官網上找到任何說明和下載。IPHONE的刷機也是如此。MOTO E680系的手機官網上是沒有任何刷機說明的。另外刷機不一定要在WIN下刷。刷BIOS,在DOS下更為安全。有些設備本身有刷新工具,不需要額外在電腦上安裝刷新工具。只要把高版本的固件下載好,設備會引導用戶刷新。

固件升級流程

在無線固件升級的過程中,PC機通過有線的鏈路控制網關設備實現物聯網終端設備的固件升級,無線終端固件升級流程如圖《終端設備升級流程》所示。

主要操作步驟如下:①當要升級的終端設備正在運行應用程序,由 PC機控制網關設備向該終端設備發送固件升級指令,終端節點響應該升級指令,跳轉至引導程序,並等待網關設備特定端設備升級流程的數據包。

②終端節點周期性申請固件數據包,並在一個複位時不會被初始化的變量中記錄當前升級狀態,如上次斷點處、故障原因等,保證終端設備固件升級的斷點續傳。

③終端節點收到網關設備的固件數據包,當接收完一個完整的壓縮分段固件后,利用解壓縮函數實現對固件的解壓縮,並把解壓縮后的固件寫入指定存儲空間。

④網關設備發送完終端設備固件之後,再向該終端設備發送當前升級固件的版本信息、校驗值。終端設備收到該數據之後,對整個解壓后的固件進行校驗,如果成功,則更新版本信息到信息段之中。

⑤終端設備固件數據校驗成功,則向網關設備發送升級成功指令,並跳轉到應用程序中運行;否則,發送固件升級失敗指令,重新等待升級。