本發明涉及嵌入式系統領域,尤其涉及一種嵌入式系統的固件升級方法。
背景技術:
嵌入式系統是一種專用計算機系統,作為裝置或設備的一部分。通常,嵌入式系統是一個控制程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數字接口的設備,如手表、汽車、手機、智能機器人等都使用了嵌入式系統。
在智能機器人中,舵機內置有嵌入式系統,使其作為智能機器人中的動力元件,是智能機器人實現智能化的關鍵元件。在舵機的嵌入式系統中,由于功能變化、故障修復等原因,需要對嵌入式系統中的軟件版本進行升級,即采用新的控制程序替代原來的控制程序,以滿足舵機的日益多樣化的功能需求。
當前舵機和智能終端上內置的嵌入式系統設有存儲器FLASH,并將存儲器FLASH劃分為用于存放升級引導程序(Bootloader)的升級固化區(即BOOT區)和用于存放不同功能應用程序的應用程序區(即APP區)。當前舵機內設置的嵌入式系統升級時,系統上電后只能在較短的開機時間停留在升級固化區內通過升級引導程序(Bootloader)進行升級,這個時間一般為8-16ms。由于嵌入式系統只能在較短的開機時間內進行升級,若在開機時間內沒有接收到升級指令或升級不成功,系統將會跳轉到應用程序區執行應用程序;并且只能等到下一次系統上電的開機時間內進行升級。
技術實現要素:
本發明要解決的技術問題在于,針對現有嵌入式系統僅能在較短的開機時間內進行升級所存在的缺陷,提供一種嵌入式系統的固件升級方法。
本發明解決其技術問題所采用的技術方案是:一種嵌入式系統的固件升級方法,包括:
初始化升級固化區,啟動看門狗程序并計時;
判斷在預設時間內是否接收到升級指令;
若接收到所述升級指令,則在所述升級固化區內執行所述升級指令,完成應用程序升級。
優選地,還包括步驟:若所述在預設時間內沒有接收到所述升級指令,則跳轉到應用程序區。
優選地,還包括步驟:執行應用程序區中的應用程序。
優選地,還包括步驟:
判斷所述執行應用程序時是否接收到所述升級指令;
若接收到所述升級指令,則停止喂狗,等待所述看門狗程序向所述微處理器發送復位信號;
跳轉到所述初始化升級固化區,啟動看門狗程序并計時步驟。
優選地,若所述執行應用程序時未接收到所述升級指令,則繼續執行應用程序。
優選地,所述停止喂狗,等待所述看門狗程序向所述微處理器發送復位信號步驟前,還包括:將所述升級標志位設置為升級狀態;
所述判斷在預設時間內是否接收到升級指令步驟前還包括:判斷嵌入式系統的升級標志位是否為升級狀態;若為升級狀態,則執行所述在所述升級固化區內執行所述升級指令,完成應用程序升級步驟。
優選地,還包括步驟:
若所述升級標志位為非升級狀態,則執行所述判斷在預設時間內是否接收到升級指令步驟。
優選地,在所述升級固化區內執行所述升級指令,完成應用程序升級步驟之前還包括:將所述升級標志位設置為升級狀態;
在所述升級固化區內執行所述升級指令,完成應用程序升級步驟之后還包括:將所述升級標志位設置為非升級狀態。
優選地,所述初始化升級固化區,啟動看門狗程序并計時之前,還包括:使嵌入式系統上電復位。
優選地,所述預設時間大于所述嵌入式系統的開機升級時間。
本發明與現有技術相比具有如下優點:本發明所提供的嵌入式系統的固件升級方法中,通過判斷在預設時間內是否接收到升級指令,以使升級固件區初始化后的預設時間內均處于升級固化區等待接收升級指令,以保證嵌入式系統在較長的預設時間內等待升級,使得嵌入式系統的等待升級時間較長,以保證嵌入式系統的升級。
附圖說明
下面將結合附圖及實施例對本發明作進一步說明,附圖中:
圖1是本發明一實施例中嵌入式系統的固件升級方法的一流程圖。
圖2是本發明一實施例中嵌入式系統的固件升級方法的另一流程圖。
具體實施方式
為了對本發明的技術特征、目的和效果有更加清楚的理解,現對照附圖詳細說明本發明的具體實施方式。
圖1和圖2示出本實施例中的嵌入式系統的固件升級方法的流程圖。該嵌入式系統包括但不限于舵機內置的嵌入式系統,還可以是其他智能終端上內置的嵌入式系統。如圖1所示,在一具體實施方式中,該嵌入式系統的固件升級方法包括如下步驟:
S1:初始化升級固化區,啟動看門狗程序并計時。
每一嵌入式系統設有看門狗(WatchDog Timer,簡稱WDT)程序,在嵌入式系統的MCU(即Microcontroller Unit,微控制單元,以下簡稱為MCU)正常工作時,每隔一喂狗時間(如8ms)會輸出一個喂狗信號給看門狗程序,以使看門狗程序清零;若超過喂狗時間不喂狗,即不輸出喂狗信號給看門狗程序,看門狗程序會給MCU一個復位信號,使MCU復位,從而防止MCU死機。其中,喂狗時間是看門狗定時器計數溢出時間,一旦到達計數閾值,看門狗就會產生復位。MCU必須在這個周期內對這個定時器進行清零處理,讓看門狗定時器重新計數,防止看門狗產生復位。
可以理解地,在嵌入式系統的固件升級過程中,需將嵌入式系統與程序燒錄終端相連。在程序燒錄終端上生成或存儲有升級程序代碼,并通過串口與嵌入式系統通信,以將升級程序代碼寫入嵌入式系統,使嵌入式系統的固件升級,使其功能更完善,以滿足產品需求。該程序燒錄終端包括但不限于電腦。
S2:微處理單元判斷在預設時間內是否接收到升級指令。
該預設時間由用戶根據應用程序的升級時間自主設置,使升級固化區在初始化后的預設時間內MCU均停留在升級固化區,以等待接收升級指令并進行升級。本實施例中預設時間設為500ms,相比于嵌入式系統的開機升級時間(8-16ms),預設時間較長,可使MCU在預設時間內處于升級固化區內等待接收升級指令。
S3:若接收到升級指令,則在升級固化區內執行升級指令,完成應用程序升級。
在預設時間內,MCU會每隔一喂狗時間發送一喂狗信號,以保證MCU在升級固化區等待接收升級指令,若MCU接收到升級指令,則在升級固化區執行升級指令,以完成應用程序升級。
S4:若沒有接收到升級指令,則跳轉到應用程序區。
可以理解地,在固件升級區初始化后,MCU只有在預設時間(500ms)均沒有接收到升級指令,才會跳轉到應用程序區。可以理解地,嵌入式系統跳轉到應用程序區后,會執行應用程序區的應用程序,該應用程序可以是嵌入式系統出廠時直接燒錄的應用程序,也可以是嵌入式系統在系統固件升級之后加載的應用程序。
該嵌入式系統的固件升級方法中,通過判斷在預設時間內是否接收到升級指令,以使升級固件區初始化后的預設時間內均處于升級固化區等待接收升級指令,以保證嵌入式系統在較長的預設時間內等待升級,使得嵌入式系統的等待升級時間較長,以保證嵌入式系統的升級。
如圖2所示,在另一具體實施方式中,該嵌入式系統的固件升級方法包括如下步驟:
S01:使嵌入式系統上電復位。
其中,嵌入式系統包括但不限于舵機內置的嵌入式系統。嵌入式系統上電復位是指嵌入式系統的復位引腳上RST上,持續一段時間的高電平或者低電平,會使系統進入初始化的狀態。
S02:初始化升級固化區,啟動看門狗程序并計時。
每一嵌入式系統設有看門狗(WatchDog Timer,簡稱WDT)程序,在嵌入式系統的MCU(即Microcontroller Unit,微控制單元,以下簡稱為MCU)正常工作時,每隔一喂狗時間(如8ms)會輸出一個喂狗信號給看門狗程序,以使看門狗程序清零;若超過喂狗時間不喂狗,即不輸出喂狗信號給看門狗程序,看門狗程序會給MCU一個復位信號,使MCU復位,從而防止MCU死機。其中,喂狗時間是看門狗定時器計數溢出時間,一旦到達計數閾值,看門狗就會產生復位。MCU必須在這個周期內對這個定時器進行清零處理,讓看門狗定時器重新計數,防止看門狗產生復位。
S03:判斷嵌入式系統的升級標志位是否為升級狀態;若為升級狀態,則執行步驟S06;若為非升級狀態,則執行步驟S04。
其中,升級標志位是用于判斷嵌入式系統是否處于升級狀態,可以理解地,升級標志位可以有升級狀態和非升級狀態兩種狀態。本實施例中,采用1和0分別表示升級狀態和非升級狀態。即升級標志位為1時,該嵌入式系統當前處于升級狀態,無需執行步驟S04和步驟S05,即可直接執行步驟S06進行升級;升級標志位為0時,該嵌入式系統當前不處于升級狀態,需執行步驟S04。步驟S03中,MCU判斷升級標志位是否為1,以確定嵌入式系統的當前狀態是否為升級狀態,以確定MCU是否需要在預設時間內停留在升級固化區等待接收升級指令。
S04:微處理單元判斷在預設時間內是否接收到升級指令;若接收到升級指令,則執行步驟S05;若沒有接收到升級指令,則執行步驟S08。
該預設時間由用戶根據應用程序的升級時間自主設置,使升級固化區在初始化后的預設時間內MCU均停留在升級固化區,以等待接收升級指令并進行升級。本實施例中預設時間設為500ms,相比于嵌入式系統的開機升級時間(8-16ms),預設時間較長,可使MCU在預設時間內處于升級固化區內等待接收升級指令。可以理解地,在預設時間內,MCU會每隔一喂狗時間給看門狗程序發送一喂狗信號,以保證MCU在升級固化區等待接收升級指令,若MCU接收到升級指令,則在升級固化區執行升級指令,以完成應用程序升級。
S05:將升級標志位設置為升級狀態,并執行步驟S06。
可以理解地,步驟S04中判斷在預設時間內是否接收到升級指令的前提是升級固化區的升級標志位為非升級狀態(即升級標志位為0);若微處理單元在預設時間內接收到升級指令,則使其升級標志位置升級狀態(即將升級標志位置為1),以使升級固化區進行升級狀態,執行步驟S06。
S06:在升級固化區內執行升級指令,完成應用程序升級,并執行步驟S07。
本實施例中,可以是在初始化升級固化區,即嵌入式系統的的開機升級時間(如8-16ms)內,檢測到升級固化區內的升級標志位為升級狀態(即升級標志位置為1)時,直接在升級固化區內執行升級指令,完成應用程序升級。還可以是在初始化升級固化區后的預設時間(如500ms)內接收到升級指令后,使升級固化區內的升級標志位置為升級狀態(即升級標志位置為1),并在升級固化區內執行升級指令,完成應用程序升級。
S07:將升級標志位設置為非升級狀態。
步驟S06中,嵌入式系統在升級固化區內完成應用程序升級后,需使升級標志位置為非升級狀態(即升級標志位置為0),以表示升級固化區當前不處于升級狀態,執行步驟S08。
S08:跳轉到應用程序區。
步驟S08中,使嵌入式系統的MCU在升級固化區完成應用程序升級后,跳轉到應用程序區,對應用程序區進行處理。可以理解地,初始化升級固化區后,MCU只有在預設時間(500ms)均沒有接收到升級指令,才會跳轉到應用程序區。
S09:執行應用程序區中的應用程序。
應用程序區中存儲有不同功能的應用程序,嵌入式系統的MCU跳轉到應用程序區后,根據用戶輸入的操作指令,執行應用程序區中的應用程序,以完成該嵌入式系統的功能。該應用程序可以是嵌入式系統出廠時直接燒錄的應用程序,也可以是嵌入式系統在系統固件升級之后加載的應用程序。
S10:微處理單元判斷執行應用程序時是否接收到升級指令;若接收到升級指令,則執行步驟S11;若未執行到升級指令,則執行步驟S09。
可以理解地,嵌入式系統的MCU在應用程序區執行應用程序時,也可以接收用戶輸入的升級指令,以使MCU執行接收到的升級指令進行應用程序升級處理。
S11:將升級標志位設置為升級狀態,并執行步驟S12。
可以理解地,若嵌入式系統的MCU在應用程序區執行應用程序的過程接收到升級指令,使升級標志位設置為升級狀態(即升級標志位置為1),以使該嵌入式系統進入升級狀態,不再執行應用程序。
S12:停止喂狗,等待看門狗程序向微處理器發送復位信號,并跳轉到步驟S02。
可以理解地,若嵌入式系統的升級標志位置升級狀態(即升級標志位置為1),停止喂狗,使得看門狗程序超過喂狗時間不喂狗,看門狗程序會給MCU一個復位信號,使MCU復位,從而防止MCU死機,并跳轉到步驟S02,以在升級固化區執行升級指令,完成應用程序升級。
本實施例中,若預設時間為500ms,喂狗時間為8ms,假設嵌入式系統上電復位時間為0,則嵌入式系統的初始化升級固化區后的0-500ms內,升級固化區均處于等待接收升級指令狀態;若在0-500ms內接收到升級指令,則在升級固化區內執行升級指令,以完成應用程序升級;若0-500ms內沒有接收到升級指令,則在500ms以后跳轉到應用程序區,以執行應用程序區的應用程序。在應用程序區執行應用程序時,每隔8ms的喂狗時間需接收到一喂狗信號,否則嵌入式系統的MCU跳轉到升級固化區,使升級固化區初始化。
該嵌入式系統的固件升級方法中,通過判斷在預設時間內是否接收到升級指令,以使升級固件區初始化后的預設時間內均處于升級固化區等待接收升級指令,以保證嵌入式系統在較長的預設時間內等待升級,使得嵌入式系統的等待升級時間較長,以保證嵌入式系統的升級。具體地,升級固化區可以在初始化升級固化區的開機時間(如8-16ms)內,直接完成應用程序升級,無需等待,以提高升級效率;也可以在預設時間(如500ms)內接收到升級指令,完成應用程序升級,以確定升級固化區較長時間處于等待升級狀態,保障升級成功。
本發明是通過上述具體實施例進行說明的,本領域技術人員應當明白,在不脫離本發明范圍的情況下,還可以對本發明進行各種變換和等同替代。另外,針對特定情形或具體情況,可以對本發明做各種修改,而不脫離本發明的范圍。因此,本發明不局限于所公開的具體實施例,而應當包括落入本發明權利要求范圍內的全部實施方式。