TW202134858A - 可後台升級韌體的系統及後台升級韌體方法 - Google Patents

可後台升級韌體的系統及後台升級韌體方法 Download PDF

Info

Publication number
TW202134858A
TW202134858A TW109108735A TW109108735A TW202134858A TW 202134858 A TW202134858 A TW 202134858A TW 109108735 A TW109108735 A TW 109108735A TW 109108735 A TW109108735 A TW 109108735A TW 202134858 A TW202134858 A TW 202134858A
Authority
TW
Taiwan
Prior art keywords
firmware
upgrade
area
electronic device
processing unit
Prior art date
Application number
TW109108735A
Other languages
English (en)
Other versions
TWI743709B (zh
Inventor
倪文娟
周浩
趙月城
陳蓉
Original Assignee
瑞昱半導體股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 瑞昱半導體股份有限公司 filed Critical 瑞昱半導體股份有限公司
Publication of TW202134858A publication Critical patent/TW202134858A/zh
Application granted granted Critical
Publication of TWI743709B publication Critical patent/TWI743709B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本發明公開一種可後台升級韌體的系統及後台升級韌體方法。後台升級韌體方法將電子設備的記憶模組進行分區,一個用戶代碼區用來正常執行初始韌體及升級流程,另一個用戶代碼區用來存放升級韌體,避免在升級過程中將升級韌體寫入記憶模組時,對初始韌體造成影響。

Description

可後台升級韌體的系統及後台升級韌體方法
本發明涉及一種系統及方法,特別是涉及一種可後台升級韌體的系統及後台升級韌體方法。
韌體(Firmware)是指設備內部保存的設備「驅動程式」, 是一個系統最基礎最底層工作的軟體,是硬體設備的靈魂。韌體升級除可用於解決產品設備存在的缺陷、相容性問題,亦可用於提升產品設備的性能並增加最新功能。而為了滿足使用者日益變換的需求,產品設備的韌體升級必不可少。
現有韌體升級的方法,當韌體升級完畢時,需要對韌體系統進行重置後才能繼續工作,且一旦在升級過程出現異常(如斷電)情況,將導致設備無法正在工作,而降低了韌體升級的穩定性及可靠性。此外,在韌體升級過程中,設備的功能可能無法正常使用。
因此,急需一種可以在設備正常運行過程中完成韌體升級,且在韌體升級期間可以提供連續的服務的韌體升級系統及方法。
本發明所要解決的技術問題在於,針對現有技術的不足提供一種用於液晶顯示器或轉換器設備的後台韌體升級方法,可以在上述設備正常運行過程中完成韌體升級,在韌體升級期間可以提供連續的服務,提高了韌體升級的可靠性和穩定性的同時增加了更好的用戶體驗。
為了解決上述的技術問題,本發明所採用的其中一技術方案是,提供一種後台韌體升級方法,適用於一電子設備,該電子設備包括一處理單元及一記憶模組,該後台韌體升級方法包括下列步驟:配置該電子設備的該處理單元執行一開機程序,其中該記憶模組包括一開機區、一第一用戶代碼區、一第二用戶代碼區及一旗標區,且該開機區儲存有該開機程序,該第一用戶代碼區及該第二用戶代碼區各儲存有一初始韌體,該旗標區儲存有多個升級輔助變量,該開機程序包括:在該開機區導入該初始韌體; 依據該些升級輔助變量中的一執行優先度,將該第一用戶代碼區及該第二用戶代碼區分別判斷為一韌體運行區及一韌體備份區;及選擇以該韌體運行區的該初始韌體執行一韌體主程序;配置連接於該電子設備的一主機執行關聯於一升級韌體的一升級程序,其中該韌體主程序及該升級程序協同執行一升級流程,該升級流程包括:該主機從該電子設備獲取該初始韌體的一韌體版本,並判斷該韌體版本是否小於該升級韌體的版本; 響應於該韌體版本小於該升級韌體的版本,該主機向該電子設備傳送一後台韌體升級請求;該處理單元依據該電子設備的運作狀態回覆一升級請求結果,其中該升級請求結果用於指示該電子設備是處在一閒置狀態或一忙碌狀態;響應於該升級請求結果指示該電子設備處在該閒置狀態,該處理單元進一步判斷該電子設備是否處在一系統閒置狀態;響應於該處理單元判斷該電子設備處在該系統閒置狀態,該處理單元檢測該執行優先度,以判斷該第一用戶代碼區及該第二用戶代碼區如何分配給該韌體運行區及該韌體備份區,並將該韌體備份區設定為一當前升級區;該主機向該電子設備傳送一寫入韌體資料請求,以配置該處理單元對該當前升級區執行一擦除操作,並將該升級韌體的資料寫入該當前升級區;及響應於該升級韌體的資料寫入完畢,該處理單元向該主機回覆用於指示一升級操作成功的一操作結果;待該電子設備重新開機後,該處理單元執行該開機程序以判斷該第一用戶代碼區及該第二用戶代碼區中的何者已經進行升級,據此修改該執行優先度;以及該處理單元經配置以依據修改後的該執行優先度,選擇以該韌體運行區中,已升級的該初始韌體執行另一韌體主程序。
為了解決上述的技術問題,本發明所採用的另外一技術方案是,提供一種可後台升級韌體的系統,其包括電子設備及主機。電子設備包括處理單元及記憶模組。記憶模組包括開機區、第一用戶代碼區、第二用戶代碼區及旗標區。開機區儲存有開機程序,第一用戶代碼區及第二用戶代碼區各儲存有初始韌體,旗標區儲存有多個升級輔助變量。主機經配置以執行與升級韌體關聯的升級程序。其中,處理單元經配置以執行開機程序,其包括:在該開機區導入該初始韌體; 依據該些升級輔助變量中的一執行優先度,將該第一用戶代碼區及該第二用戶代碼區分別判斷為一韌體運行區及一韌體備份區;及選擇以該韌體運行區的該初始韌體執行一韌體主程序。其中,韌體主程序及與該升級程序協同執行一升級流程,該升級流程包括:該主機從該電子設備獲取該初始韌體的一韌體版本,並判斷該韌體版本是否小於該升級韌體的版本;響應於該韌體版本小於該升級韌體的版本,該主機向該電子設備傳送一後台韌體升級請求;該處理單元依據該電子設備的運作狀態回覆一升級請求結果,其中該升級請求結果用於指示該電子設備是處在一閒置狀態或一忙碌狀態;響應於該升級請求結果指示該電子設備處在該閒置狀態,該處理單元進一步判斷該電子設備是否處在一系統閒置狀態;響應於該處理單元判斷該電子設備處在該系統閒置狀態,該處理單元檢測該執行優先度,以判斷該第一用戶代碼區及該第二用戶代碼區如何分配給該韌體運行區及該韌體備份區,並將該韌體備份區設定為一當前升級區;該主機向該電子設備傳送一寫入韌體資料請求,以配置該處理單元對該當前升級區執行一擦除操作,並將該升級韌體的資料寫入該當前升級區;及響應於該升級韌體的資料寫入完畢,該處理單元向該主機回覆用於指示一升級操作成功的一操作結果。其中,待該電子設備重新開機後,該處理單元執行該開機程序以判斷該第一用戶代碼區及該第二用戶代碼區中的何者已經進行升級,據此修改該執行優先度。其中,該處理單元經配置以依據修改後的該執行優先度,選擇以該韌體運行區中,已升級的該初始韌體執行另一韌體主程序。
本發明提供的可後台升級韌體的系統及後台升級韌體方法,可將電子設備的記憶模組進行分區,一個用戶代碼區用來正常執行韌體及升級流程,另一個用戶代碼區用來存放升級韌體,避免在升級過程中寫入記憶模組時,對初始韌體造成影響。此外,在升級過程不需要暫停電子設備的各項操作,可以在電子設備的正常運行過程中完成升級。
再者,在升級流程中,對升級韌體的資料進行了可靠性檢查,且在上述流程的實施過程中,只要記憶模組本身不出現問題,即便是韌體升級失敗,也不會造成電子設備無法正常使用。
為使能更進一步瞭解本發明的特徵及技術內容,請參閱以下有關本發明的詳細說明與圖式,然而所提供的圖式僅用於提供參考與說明,並非用來對本發明加以限制。
以下是通過特定的具體實施例來說明本發明所公開有關“可後台升級韌體的系統及後台升級韌體方法”的實施方式,本領域技術人員可由本說明書所公開的內容瞭解本發明的優點與效果。本發明可通過其他不同的具體實施例加以施行或應用,本說明書中的各項細節也可基於不同觀點與應用,在不悖離本發明的構思下進行各種修改與變更。另外,本發明的附圖僅為簡單示意說明,並非依實際尺寸的描繪,事先聲明。以下的實施方式將進一步詳細說明本發明的相關技術內容,但所公開的內容並非用以限制本發明的保護範圍。
應當可以理解的是,雖然本文中可能會使用到“第一”、“第二”、“第三”等術語來描述各種元件或者信號,但這些元件或者信號不應受這些術語的限制。這些術語主要是用以區分一元件與另一元件,或者一信號與另一信號。另外,本文中所使用的術語“或”,應視實際情況可能包括相關聯的列出項目中的任一個或者多個的組合。
請參閱圖1,圖1為本發明實施例的可後台升級韌體的系統的方塊圖。如圖1所示,本發明實施例提供一種可後台升級韌體的系統1,其包括電子設備10及主機12。
電子設備10包括處理單元100及記憶模組102。記憶模組102主要用於儲存韌體,其包括開機區Boot、第一用戶代碼區User1、第二用戶代碼區User2及旗標區Flag。在一些實施例中,電子設備10可例如為液晶顯示器或轉換器設備。
另一方面,主機12用以執行與升級韌體122關聯的升級程序120。在一些實施例中,主機12可例如為個人電腦,且可通過電子設備10的傳輸介面104與電子設備10電性連接並進行通訊。此外,在特定實施例中,升級韌體122可儲存在主機12中,且升級韌體122可包括一循環冗餘校驗(Cyclic redundancy check, CRC)值。詳細而言,不論是在主機12端或是電子設備10端,在生成新的韌體檔案時,可通過代碼表的方式把韌體檔案中的最後一個位元(BYTE)的位置保留(例如,填入值0xFF),以用於填寫整個韌體檔案的CRC校驗值。新的韌體檔案生成後,可例如用生成多項式X8 +X2 +X+1執行CRC循環冗餘校驗,以產生一個位元的CRC校驗值,並寫入到韌體檔案的最後一個位元。
可進一步參考圖2,其為本發明實施例的記憶模組的配置示意圖。如圖2所示,開機區Boot儲存有開機程序A,第一用戶代碼區User1及第二用戶代碼區User2各儲存有初始韌體B1及B2,其中之一作為韌體運行區,用來存放正常運行的韌體檔案,另一個則作為韌體備份區,用來備份以及等待韌體升級。
續言之,旗標區Flag用於儲存有多個升級輔助變量,特定而言,旗標區Flag可進一步包括第一用戶旗標區F1及第二用戶旗標區F2,分別儲存對應於第一用戶代碼區User1及第二用戶代碼區User2的多個升級輔助變量。例如,第一用戶旗標區F1可儲存對應於第一用戶代碼區User1的執行優先度F11、開始升級旗標F12及升級完成旗標F13,第二用戶旗標區F2可儲存對應於第二用戶代碼區User2的執行優先度F21、開始升級旗標F22及升級完成旗標F23。執行優先度F11及F21可命名為RunPriority,開始升級旗標F12及F22可命名為StartFlag,用於表示升級開始,升級完成旗標F13及F23可命名為DoneFlag,用於表示升級結束。
在一些實施例中,執行優先度F11及F21中的值可決定當前的韌體運行區及韌體備份區。舉例而言,當第一用戶代碼區User1對應的執行優先度F11的值大於第二用戶代碼區User2對應的執行優先度F21的值時,第一用戶代碼區User1為當前的韌體運行區,第二用戶代碼區User2為韌體備份區。當第一用戶代碼區User1對應的執行優先度F11的值小於第二用戶代碼區User2對應的執行優先度F21的值時,第一用戶代碼區User1為韌體備份區,第二用戶代碼區User2為當前的韌體運行區。一般而言,第一用戶代碼區User1及第二用戶代碼區User2的儲存空間相同。
請參考圖3,其為本發明實施例的開機程序的流程圖。如圖3所示,處理單元100經配置以執行開機程序A,其包括下列步驟:
步驟S100:在開機區Boot導入初始韌體B1或B2。
步驟S102:依據執行優先度F11、F21,將第一用戶代碼區User1及第二用戶代碼區User2分別判斷為韌體運行區及韌體備份區。
步驟S103:選擇以韌體運行區的初始韌體執行韌體主程序。
請進一步參照圖4,其為本發明實施例的韌體升級流程的流程圖。在本發明中,韌體主程序須與升級程序協同執行升級流程,如圖4所示,升級流程包括下列步驟:
步驟S200:主機12從電子設備10獲取初始韌體B1或B2的韌體版本。
步驟S201:判斷韌體版本是否小於升級韌體122的版本。響應於初始韌體B1或B2的韌體版本小於升級韌體122的版本,則升級流程進入步驟S202,主機12向電子設備10傳送後台韌體升級請求。響應於初始韌體B1或B2的韌體版本大於或等於升級韌體122的版本,則升級流程結束。
在此步驟中,主機12可通過電子設備10的傳輸介面104獲取升級請求結果,傳輸介面104可例如為I2 C介面,但本發明不限於此。具體而言,於此步驟中,主機12可先通過傳輸介面104向電子設備10傳送一獲取當前韌體版本請求,而處理單元100回覆初始韌體B1或B2的韌體版本,而主機12進一步判斷韌體版本是否小於升級韌體的版本。若韌體版本小於升級韌體122的版本,主機12再通過傳輸介面104向電子設備10傳送前述的後台韌體升級請求。
步驟S203:處理單元100依據電子設備10的運作狀態回覆升級請求結果。其中,升級請求結果用於指示電子設備10是處在閒置狀態或忙碌狀態。
舉例而言,升級請求結果可例如是一個位元(BYTE)的狀態值。此狀態值的定義有三種:0xBB、0x11及0x12。0xBB可用於表示電子設備10的系統正處於忙碌狀態,不能處理任何請求,0x11可用於表示電子設備10的系統正處於閒置狀態,並且操作成功,0x12可用於表示電子設備10的系統正處於閒置狀態,但是操作失敗。
響應於升級請求結果指示電子設備10處在忙碌狀態,則升級流程重複執行此步驟,直到升級請求結果指示電子設備10處在閒置狀態,進入步驟S204。舉例來說,當升級程式讀取到的請求狀態值為0xBB,則繼續讀取電子設備10的狀態值,直到請求結果為0x11、0x12或到達一預定響應時間。如果最後狀態值為0x12或者TimeOut時間到達則表示這次請求失敗,結束本次升級程式等待下次升級更新。如果狀態值為0x11則這次請求成功。
在一些實施例中,可通過配置電子設備10的處理器100進一步執行一中斷程序,並與韌體主程序協同運作,以達成上述步驟。請參考圖5,其為根據本發明實施例的韌體主程序及中斷程序的程序流程圖。如圖5所示,韌體主程序基本上優先進行電子設備10的功能處理,爾後才進行後台韌體的升級處理,而當韌體主程序正在進行電子設備10的功能處理時,若中斷程序收到來自主機12的後台韌體升級請求,則回覆升級請求結果以指示電子設備10正處在忙碌狀態。升級請求結果可以是上述用於表示請求狀態值為忙碌的0xBB。
響應於升級請求結果指示電子設備處在閒置狀態,則升級流程進入步驟S204,處理單元100進一步判斷電子設備10是否處在系統閒置狀態。
詳細而言,此步驟主要為了檢測當前電子設備10的系統是否處在忙碌狀態。其原因在於,在韌體升級過程中,會對記憶模組102的區塊進行抹除及寫入操作,而在這些操作期間,記憶模組102是無法動作的。為避免在韌體升級過程中,因為記憶模組102無法動作而影響電子設備10的使用功能,特設計此步驟。
如圖2所示,旗標區Flag中還設定有一系統狀態旗標F3,此步驟中,處理單元100可進一步檢測系統狀態旗標F3,以判斷電子設備10是否處在系統閒置狀態。如果系統狀態旗標F3指示處在系統閒置狀態時,才執行韌體升級請求,否則將此韌體升級請求設定為待處理,等待下次處理。
其中,系統狀態旗標F3包括對應於多個功能指令指標(Instruction pointer, IP)的多個子狀態旗標,這些功能指令指標是對應於在記憶模組102的區塊進行抹除時,需要初始韌體B1或B2響應進行處理的功能。只有在所有的子狀態旗標指示該些功能指令指標均為閒置時,系統狀態旗標F3才指示電子設備10處在系統閒置狀態,否則系統狀態旗標F3指示電子設備10處在系統忙碌狀態。
在一些實施例中,功能指令指標將子狀態旗標設定為忙碌時,會同時通知需要的處理時間(此處理時間可用作限定時間),直到需要初始韌體B1或B2響應進行處理的功能均執行完畢時,將該些子狀態旗標均設定為閒置,或是到達限定時間子狀態旗標自動設定為閒置,系統狀態旗標F3才指示電子設備10處在系統閒置狀態。
響應於處理單元100判斷電子設備10處在系統閒置狀態,則升級流程進入步驟S205:處理單元100檢測執行優先度F11及F21,以判斷第一用戶代碼區User1及第二用戶代碼區User2如何分配給韌體運行區及韌體備份區,並將韌體備份區設定為當前升級區。
詳細而言,當系統狀態旗標F3指示電子設備10處在系統閒置狀態時,如圖2所示,處理單元100可通過修改一後台韌體升級旗標F4的狀態值,以表示開啟後台韌體升級功能。在韌體升級過程中,如果出現斷電後又重新開機的情況,而升級程式又無從得知電子設備10有重新開機,可能會繼續發送其他升級請求。此時,其他升級請求會先判斷這個後台韌體升級旗標F4的狀態值,如果後台韌體升級旗標F4指示後台韌體升級功能並未開啟,則表示並未進行後台韌體升級,而可得知此時發送的其他升級請求是錯誤的。在本實施例中,後台韌體升級旗標F4在系統重啟後會恢復為初始值,亦即未開啟後台韌體升級功能,藉此讓升級程式得以判斷電子設備10是否有重新開機,然而,其他的旗標在系統重啟後的值可維持不變。
在此步驟中,若當前的韌體運行區為第一用戶代碼區User1,則將目前作為韌體備份區的第二用戶代碼區User2設定為當前升級區,反之亦然。
此外,響應於處理單元100將韌體備份區設定為當前升級區,處理單元100據此將多個升級輔助變量中對應韌體備份區的用戶旗標區的開始升級旗標F12或F22進行修改,以指示開始升級狀態。舉例而言,此時當前升級區假設為第二用戶代碼區User2,則將第二用戶旗標區F2的開始升級旗標F22及升級完成旗標F23的狀態值清空,並將開始升級旗標F22修改為指示開始升級狀態(例如True),並回覆操作結果給升級程序。
步驟S206:主機12向電子設備10傳送寫入韌體資料請求,以配置處理單元對該當前升級區執行擦除操作,並將升級韌體的資料寫入當前升級區。
詳細而言,在本步驟中,當升級程序得到電子設備10已經將開始升級旗標F22修改為指示開始升級狀態的操作結果,主機10進一步將升級韌體122的資料分多為多筆資料,同時附帶於寫入韌體資料請求,並多次向電子設備10傳送寫入韌體資料請求。
類似的,前述的中斷程序可協助判斷此時電子設備10處在閒置狀態或忙碌狀態,並回覆對應的電子設備10的請求狀態值。若電子設備10正在忙碌狀態下,則等待韌體主程序進行功能處理後,再響應寫入韌體資料請求將升級韌體122的資料寫入。
響應於電子設備10接收到寫入韌體資料請求,且在處理單元100對當前升級區執行擦除操作前,處理單元100進一步判斷當前升級區是否執行過該擦除操作。
詳細而言,當前升級區可分為多個區塊,且可用變數表示上一次擦除過的區塊所在的Bank及Sector位置。舉例而言,可用兩個位元(BYTE)來作為變數,高BYTE 為擦除過的Bank的代碼,低BYTE為Sector的代碼,初始值為0xFFFF。根據當前要寫入資料的記憶模組102的位置計算出當前寫入資料所在的當前Bank和當前Sector與上一次擦除的Bank及Sector進行比較。如果當前Bank與上次擦除的Bank相同,並且當前Sector與上次擦除Sector相同,這表示該Sector已經擦除過,不需要擦除。 反之則需要擦除。
若處理單元100判斷當前升級區執行過擦除操作,則直接將升級韌體122的資料寫入當前升級區,否則依據原步驟指示將當前升級區進行擦除,接著,將升級韌體122的資料寫入當前升級區。如先前所述,主機12會將升級韌體122的資料分多為多筆資料附帶於寫入韌體資料請求,並多次向電子設備傳送寫入韌體資料請求。
舉例而言,每個寫入韌體資料請求可包括32個位元的升級韌體122的資料,而響應於每個寫入韌體資料請求,處理單元100將多筆資料寫入當前升級區的多個儲存區域,每當這些資料的其中一筆完成寫入該些儲存區域的其中之一時,讀取寫入的該筆資料,並執行一循環冗餘校驗(CRC)操作,以與所寫入的該筆資料比較,以確認所寫入的該筆資料的正確性。
詳細而言,執行CRC操作也就是對本次寫入到記憶模組102的資料和已寫入資料的CRC值(初始值為0)用生成多項式X8 +X2 +X+1進行循環冗餘校驗,以計算出一個新的CRC值。需要注意的是,當判斷到所寫入資料的最後一筆時,需要把最後一個BYTE記錄到一個全域變數(例如可稱為FileCRC)中,然後將此BYTE值替換為0xFF,以計算CRC值。如果CRC的比較不一致,則電子設備10回覆給升級程序指示操作失敗的一操作結果。
步驟S207:響應於升級韌體122的資料寫入完畢,處理單元100向主機12回覆用於指示升級操作成功的操作結果。
在此步驟中,升級程式判斷所收到的操作結果,響應於操作結果指示升級操作成功,主機12向電子設備10發送結束後台更新請求。
可進一步參考圖6,其為本發明實施例的升級流程的另一流程圖。當韌體主程序收到結束後台更新請求後,電子設備10進行以下操作:
步驟S300:檢查後台韌體升級旗標F4是否指示開啟後台韌體升級功能,如果不是則返回請求失敗。
步驟S301:檢測電子設備10的系統是否為忙碌狀態,如果為忙碌狀態則等到下次迴圈再執行。
步驟S302:比較全域變數(FileCRC)及由所儲存的所有韌體資料所計算得到的CRC做比對,如果不一致則返回操作失敗。
步驟S303:將升級完成旗標F13或F23修改為指示升級完成。
步驟S304:將後台韌體升級旗標F4修改為關閉後台韌體升級功能,以表示後台韌體升級程序結束。
步驟S305:返回操作結果給升級程式。
於此,升級程序結束。
於升級程序結束後,可參照圖7,其為本發明實施例的後台韌體升級方法的流程圖,進一步進行以下流程:
步驟S400:電子設備重新開機,處理單元執行開機程序以判斷第一用戶代碼區及第二用戶代碼區中的何者已經進行升級,據此修改執行優先度。
步驟S401:處理單元依據修改後的執行優先度,選擇以韌體運行區中,已升級的初始韌體執行另一韌體主程序。
後台韌體升級成功後,等電子設備10重新開機後,開機程式會根據開始升級旗標F12或F22,以及升級完成旗標F13或F23的狀態值判斷第一用戶代碼區User1及第二用戶代碼區User2中的何者已經進行升級,進而修改執行優先度F11或F21的狀態值,並跳轉到已更新韌體的用戶代碼區執行韌體資料,而原先的韌體運行區轉為韌體備份區。因此,在整個韌體升級過程中,電子設備10的功能都不受影響。
[實施例的有益效果]
本發明提供的可後台升級韌體的系統及後台升級韌體方法,可將電子設備的記憶模組進行分區,一個用戶代碼區用來正常執行韌體及升級流程,另一個用戶代碼區用來存放升級韌體,避免在升級過程中寫入記憶模組時,對初始韌體造成影響。此外,在升級過程不需要暫停電子設備的各項操作,可以在電子設備的正常運行過程中完成升級。
再者,在升級流程中,對升級韌體的資料進行了可靠性檢查,且在上述流程的實施過程中,只要記憶模組本身不出現問題,即便是韌體升級失敗,也不會造成電子設備無法正常使用。
以上所公開的內容僅為本發明的優選可行實施例,並非因此侷限本發明的申請專利範圍,所以凡是運用本發明說明書及圖式內容所做的等效技術變化,均包含於本發明的申請專利範圍內。
1:可後台升級韌體的系統 10:電子設備 100:處理單元 102:記憶模組 104:傳輸介面 Boot:開機區 User1:第一用戶代碼區 User2:第二用戶代碼區 Flag:旗標區 A:開機程序 B1、B2:初始韌體 F1:第一用戶旗標區 F2:第二用戶旗標區 F11、F21:執行優先度 F12、F22:開始升級旗標 F13、F23:升級完成旗標 F3:系統狀態旗標 F4:後台韌體升級旗標 12:主機 122:升級韌體 120:升級程序
圖1為本發明實施例的可後台升級韌體的系統的方塊圖。
圖2為本發明實施例的記憶模組的配置示意圖。
圖3為本發明實施例的開機程序的流程圖。
圖4為本發明實施例的韌體升級流程的流程圖。
圖5為根據本發明實施例的韌體主程序及中斷程序的程序流程圖。
圖6為本發明實施例的升級流程的另一流程圖。
圖7為本發明實施例的後台韌體升級方法的流程圖。
1:可後台升級韌體的系統
10:電子設備
100:處理單元
102:記憶模組
104:傳輸介面
Boot:開機區
User1:第一用戶代碼區
User2:第二用戶代碼區
Flag:旗標區
12:主機
122:升級韌體
120:升級程序

Claims (10)

  1. 一種後台韌體升級方法,適用於一電子設備,該電子設備包括一處理單元及一記憶模組,該後台韌體升級方法包括下列步驟: 配置該電子設備的該處理單元執行一開機程序,其中該記憶模組包括一開機區、一第一用戶代碼區、一第二用戶代碼區及一旗標區,且該開機區儲存有該開機程序,該第一用戶代碼區及該第二用戶代碼區各儲存有一初始韌體,該旗標區儲存有多個升級輔助變量,該開機程序包括: 在該開機區導入該初始韌體; 依據該些升級輔助變量中的一執行優先度,將該第一用戶代碼區及該第二用戶代碼區分別判斷為一韌體運行區及一韌體備份區;及 選擇以該韌體運行區的該初始韌體執行一韌體主程序; 配置連接於該電子設備的一主機執行關聯於一升級韌體的一升級程序,其中該韌體主程序及該升級程序協同執行一升級流程,該升級流程包括: 該主機從該電子設備獲取該初始韌體的一韌體版本,並判斷該韌體版本是否小於該升級韌體的版本; 響應於該韌體版本小於該升級韌體的版本,該主機向該電子設備傳送一後台韌體升級請求; 該處理單元依據該電子設備的運作狀態回覆一升級請求結果,其中該升級請求結果用於指示該電子設備是處在一閒置狀態或一忙碌狀態; 響應於該升級請求結果指示該電子設備處在該閒置狀態,該處理單元進一步判斷該電子設備是否處在一系統閒置狀態; 響應於該處理單元判斷該電子設備處在該系統閒置狀態,該處理單元檢測該執行優先度,以判斷該第一用戶代碼區及該第二用戶代碼區如何分配給該韌體運行區及該韌體備份區,並將該韌體備份區設定為一當前升級區; 該主機向該電子設備傳送一寫入韌體資料請求,以配置該處理單元對該當前升級區執行一擦除操作,並將該升級韌體的資料寫入該當前升級區;及 響應於該升級韌體的資料寫入完畢,該處理單元向該主機回覆用於指示一升級操作成功的一操作結果; 待該電子設備重新開機後,該處理單元執行該開機程序以判斷該第一用戶代碼區及該第二用戶代碼區中的何者已經進行升級,據此修改該執行優先度;以及 該處理單元經配置以依據修改後的該執行優先度,選擇以該韌體運行區中,已升級的該初始韌體執行另一韌體主程序。
  2. 如請求項1所述的後台韌體升級方法,其中該主機係通過該電子設備的一傳輸介面獲取該升級請求結果,且該升級流程更包括: 該主機通過該傳輸介面向該電子設備傳送一獲取當前韌體版本請求; 該處理單元回覆該初始韌體的該韌體版本; 該主機判斷該韌體版本是否小於該升級韌體的版本;及 響應於該韌體版本小於該升級韌體的版本,該主機通過該傳輸介面向該電子設備傳送該後台韌體升級請求。
  3. 如請求項1所述的後台韌體升級方法,其中該升級流程更包括: 響應於該升級請求結果指示該電子設備處在該閒置狀態,該處理單元檢測該些升級輔助變量中的一系統狀態旗標,以判斷該電子設備是否處在該系統閒置狀態;以及 響應於該系統狀態旗標指示該電子設備處在該系統閒置狀態,該處理單元開啟一後台韌體升級功能。
  4. 如請求項3所述的後台韌體升級方法,其中該系統狀態旗標包括對應於多個功能指令指標(Instruction pointer, IP)的多個子狀態旗標,且在該些子狀態旗標指示該些功能指令指標均為閒置時,該系統狀態旗標才指示該電子設備處在該系統閒置狀態。
  5. 如請求項1所述的後台韌體升級方法,其中該升級流程更包括: 響應於該處理單元將該韌體備份區設定為該當前升級區,該處理單元據此將該些升級輔助變量中對應該韌體備份區的一用戶旗標區的一開始升級旗標修改以指示一開始升級狀態。
  6. 如請求項5所述的後台韌體升級方法,其中該升級流程更包括: 響應於該升級韌體的資料寫入完畢,該主機向該電子設備傳送一結束後台升級請求;以及 響應於接收到該結束後台升級請求,該處理單元檢測該後台韌體升級功能是否開啟,若是,則該處理單元將該些升級輔助變量中對應該韌體備份區的該用戶旗標區的一升級完成旗標修改以指示一升級完成狀態,並向該主機回覆該操作結果。
  7. 如請求項1所述的後台韌體升級方法,其中該升級韌體係儲存在該主機中,且該升級韌體包括一循環冗餘校驗(Cyclic redundancy check, CRC)值。
  8. 如請求項7所述的後台韌體升級方法,其中該升級流程更包括: 響應於該電子設備接收到該寫入韌體資料請求,該處理單元對該當前升級區執行該擦除操作前,該處理單元進一步判斷該當前升級區是否執行過該擦除操作;以及 若該處理單元判斷該當前升級區執行過該擦除操作,則直接將該升級韌體的資料寫入該當前升級區。
  9. 如請求項7所述的後台韌體升級方法,其中該升級流程更包括: 該主機將該升級韌體的資料分多為多筆資料附帶於該寫入韌體資料請求,並多次向該電子設備傳送該寫入韌體資料請求。
  10. 一種可後台升級韌體的系統,其包括: 一電子設備,其包括: 一處理單元;及 一記憶模組,包括: 一開機區,儲存有一開機程序; 一第一用戶代碼區及一第二用戶代碼區,各儲存有一初始韌體;及 一旗標區,儲存有多個升級輔助變量;以及 一主機,經配置以執行與一升級韌體關聯的一升級程序, 其中該處理單元經配置以執行該開機程序,其包括: 在該開機區導入該初始韌體; 依據該些升級輔助變量中的一執行優先度,將該第一用戶代碼區及該第二用戶代碼區分別判斷為一韌體運行區及一韌體備份區;及 選擇以該韌體運行區的該初始韌體執行一韌體主程序; 其中該韌體主程序及與該升級程序協同執行一升級流程,該升級流程包括: 該主機從該電子設備獲取該初始韌體的一韌體版本,並判斷該韌體版本是否小於該升級韌體的版本; 響應於該韌體版本小於該升級韌體的版本,該主機向該電子設備傳送一後台韌體升級請求; 該處理單元依據該電子設備的運作狀態回覆一升級請求結果,其中該升級請求結果用於指示該電子設備是處在一閒置狀態或一忙碌狀態; 響應於該升級請求結果指示該電子設備處在該閒置狀態,該處理單元進一步判斷該電子設備是否處在一系統閒置狀態; 響應於該處理單元判斷該電子設備處在該系統閒置狀態,該處理單元檢測該執行優先度,以判斷該第一用戶代碼區及該第二用戶代碼區如何分配給該韌體運行區及該韌體備份區,並將該韌體備份區設定為一當前升級區; 該主機向該電子設備傳送一寫入韌體資料請求,以配置該處理單元對該當前升級區執行一擦除操作,並將該升級韌體的資料寫入該當前升級區;及 響應於該升級韌體的資料寫入完畢,該處理單元向該主機回覆用於指示一升級操作成功的一操作結果; 其中,待該電子設備重新開機後,該處理單元執行該開機程序以判斷該第一用戶代碼區及該第二用戶代碼區中的何者已經進行升級,據此修改該執行優先度; 其中該處理單元經配置以依據修改後的該執行優先度,選擇以該韌體運行區中,已升級的該初始韌體執行另一韌體主程序。
TW109108735A 2020-03-09 2020-03-17 可後台升級韌體的系統及後台升級韌體方法 TWI743709B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010156457.7A CN113377392B (zh) 2020-03-09 2020-03-09 可后台升级固件的系统及后台升级固件方法
CN202010156457.7 2020-03-09

Publications (2)

Publication Number Publication Date
TW202134858A true TW202134858A (zh) 2021-09-16
TWI743709B TWI743709B (zh) 2021-10-21

Family

ID=77556719

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109108735A TWI743709B (zh) 2020-03-09 2020-03-17 可後台升級韌體的系統及後台升級韌體方法

Country Status (3)

Country Link
US (1) US11474805B2 (zh)
CN (1) CN113377392B (zh)
TW (1) TWI743709B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114697214B (zh) * 2022-03-31 2023-08-15 四川虹美智能科技有限公司 动态配置升级包实现智能设备指定升级的系统及方法
CN115220758B (zh) * 2022-06-24 2023-06-02 武汉联特科技股份有限公司 一种单片机固件在线升级的方法
CN116302011B (zh) * 2023-05-24 2023-08-18 广东电网有限责任公司佛山供电局 一种电缆监测设备固件升级方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512749B2 (en) * 2003-06-30 2009-03-31 Intel Corporation Safe software revision for embedded systems
TWI259974B (en) 2004-09-16 2006-08-11 Mediatek Inc Optical disk drive capable of updating firmware and firmware updating method thereof
TWI363298B (en) * 2008-02-29 2012-05-01 Hon Hai Prec Ind Co Ltd Communication device and firmware update method thereof
TWI384367B (zh) 2008-12-31 2013-02-01 Askey Computer Corp 韌體更新系統及方法
CN102270144B (zh) * 2010-06-04 2014-12-10 鸿富锦精密工业(深圳)有限公司 嵌入式网络设备及其更新固件的方法
TW201301133A (zh) 2011-06-29 2013-01-01 Universal Scient Ind Shanghai 可修復韌體的用戶端設備及其韌體修復方法
CN103853565A (zh) * 2012-11-28 2014-06-11 京信通信系统(中国)有限公司 基于arm的固件升级方法和装置
CN105988951B (zh) * 2015-02-12 2019-10-15 瑞昱半导体股份有限公司 存储器控制器及相关的控制方法
CN106095480B (zh) * 2016-05-31 2019-09-17 青岛海信宽带多媒体技术有限公司 一种光模块固件升级的方法及装置
CN108108174A (zh) * 2016-11-24 2018-06-01 青岛海信宽带多媒体技术有限公司 光模块及其固件升级的方法
US20190087174A1 (en) * 2017-09-21 2019-03-21 Western Digital Technologies, Inc. Background firmware update

Also Published As

Publication number Publication date
CN113377392A (zh) 2021-09-10
TWI743709B (zh) 2021-10-21
CN113377392B (zh) 2024-03-29
US20210279048A1 (en) 2021-09-09
US11474805B2 (en) 2022-10-18

Similar Documents

Publication Publication Date Title
TWI743709B (zh) 可後台升級韌體的系統及後台升級韌體方法
JP5575338B2 (ja) 情報処理装置、情報処理方法、およびコンピュータプログラム
EP3764237A1 (en) System startup method and apparatus, electronic device and storage medium
US7322029B2 (en) Method and system for recovering program code in a computer system
US9286164B2 (en) Electronic device to restore MBR, method thereof, and computer-readable medium
CN109710317B (zh) 系统启动方法、装置、电子设备及存储介质
US11314665B2 (en) Information processing system, information processing device, BIOS updating method for information processing device, and BIOS updating program for information processing device
JP2008287505A (ja) 情報処理装置およびレガシーエミュレーション処理停止制御方法
WO2017000567A1 (zh) 一种实现bootrom升级的方法及装置
CN115113905A (zh) 固件升级方法和固件升级装置
CN111124760B (zh) 一种基于uboot的嵌入式设备启动方法及装置
CN110825421A (zh) 一种固件升级方法、系统及可读存储介质
CN107911816B (zh) 用于多模IoT设备的启动方法、多模IoT设备及存储介质
CN113377425B (zh) Bmc固件生成方法和装置、bmc启动方法和装置及存储介质
JP4735765B2 (ja) Linuxプログラム起動システム
CN113646745A (zh) 禁用软件持久性
JP3702233B2 (ja) 情報処理システムおよびプログラム実行モード制御方法
US20180253349A1 (en) Fault tolerant operating metohd and electronic device using the same
CN117687663B (zh) 基于ota的分区动态调整方法、装置、设备及存储介质
TWI786945B (zh) 可快速更新作業系統的資料儲存裝置及方法
JP7491765B2 (ja) ファームウェア更新システムおよびファームウェア更新方法
US7937577B2 (en) Information processing apparatus and operating system determination method
JP2018156230A (ja) 情報処理装置
JP7074291B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2023119785A (ja) コンピュータ及びデータ不整合判定方法