本發(fā)明涉及固件技術(shù)領(lǐng)域,更具體地說,涉及一種固件升級保護(hù)方法及系統(tǒng)。
背景技術(shù):
在嵌入式領(lǐng)域,幾乎所有的產(chǎn)品都會涉及到固件升級這一操作。一款產(chǎn)品可能有不止一個芯片,而且這些芯片可能都是相同的型號,只是固件版本不一樣。在對這些芯片的固件進(jìn)行升級時(shí),可能因?yàn)楣碳臄?shù)目過多導(dǎo)致混亂,例如,給固件a升級成了固件b的版本了;最終結(jié)果是導(dǎo)致整個系統(tǒng)不能正常工作,想要再重新升級,因?yàn)橄鄳?yīng)芯片的固件錯誤而無法正常運(yùn)行,不能響應(yīng)升級命令,所以無法再對該芯片做升級操作,只能用燒錄器重新燒錄,會造成嚴(yán)重的損失。
目前,有通過在芯片的固件閃存中存放兩個鏡像的方式來解決固件升級錯誤的問題,出廠時(shí)固件閃存中燒錄了兩個相同的鏡像文件a和b,用一個缺省的鏡像來運(yùn)行,比如a。需要做升級操作時(shí),會將鏡像b所在的位置重寫,a所在位置的鏡像不變。寫完后更改標(biāo)志位,啟動引導(dǎo)指向b所在鏡像。重啟后就會啟動新升級的鏡像。升級的固件錯誤的話,會通過引導(dǎo)程序切換到好的那一個鏡像。采用這種方法來保護(hù)固件升級的正確性,能夠達(dá)到效果,但是在升級錯誤后找到正確的固件需要重新再執(zhí)行升級操作,做了重復(fù)操作。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種固件升級保護(hù)方法及系統(tǒng),能夠有效的實(shí)現(xiàn)固件的升級操作。
為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
一種固件升級保護(hù)方法,所述方法包括以下步驟:
接收固件升級命令;
基于所述固件升級命令讀取出待升級固件;
識別預(yù)先設(shè)置在所述待升級固件中的固件識別號;
判斷所述固件識別號是否與目標(biāo)芯片相對應(yīng);
當(dāng)所述固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對所述待升級固件進(jìn)行升級。
優(yōu)選地,當(dāng)所述固件識別號與目標(biāo)芯片不對應(yīng)時(shí),生成固件識別號與目標(biāo)芯片不相符的提示信息。
優(yōu)選地,所述當(dāng)所述固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對所述待升級固件進(jìn)行升級具體為:
將升級文件傳送至所述待升級固件對應(yīng)的目標(biāo)芯片,等待所述目標(biāo)芯片寫入閃存成功后結(jié)束固件升級。
一種固件升級保護(hù)系統(tǒng),包括:
接收模塊,用于接收固件升級命令;
讀取模塊,用于基于所述固件升級命令讀取出待升級固件;
識別模塊,用于識別預(yù)先設(shè)置在所述待升級固件中的固件識別號;
判斷模塊,用于判斷所述固件識別號是否與目標(biāo)芯片相對應(yīng);
處理模塊,用于當(dāng)所述固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對所述待升級固件進(jìn)行升級。
優(yōu)選地,所述系統(tǒng)還包括:
生成模塊,用于,當(dāng)所述固件識別號與目標(biāo)芯片不對應(yīng)時(shí),生成固件識別號與目標(biāo)芯片不相符的提示信息。
優(yōu)選地,所述處理模塊具體用于:
將升級文件傳送至所述待升級固件對應(yīng)的目標(biāo)芯片,等待所述目標(biāo)芯片寫入閃存成功后結(jié)束固件升級。
從上述技術(shù)方案可以看出,本發(fā)明公開了一種固件升級保護(hù)方法,當(dāng)需要對固件升級進(jìn)行保護(hù)時(shí),首先接收固件升級命令,然后根據(jù)接收到的固件升級命令讀取出待升級固件,并且識別出預(yù)先設(shè)置在待升級固件中的固件識別號,然后進(jìn)一步判斷固件識別號是否與目標(biāo)芯片相對應(yīng),當(dāng)固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對待升級固件進(jìn)行升級處理,在對固件進(jìn)行升級的過程中,能夠在對固件進(jìn)行實(shí)際升級之前判斷出待升級的固件是否為需要升級的固件,只有當(dāng)待升級固件為需要升級的固件時(shí)才對待升級固件進(jìn)行升級,有效的避免了固件升級錯誤。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明公開的一種固件升級保護(hù)方法實(shí)施例1的流程圖;
圖2為本發(fā)明公開的一種固件升級保護(hù)方法實(shí)施例2的流程圖;
圖3為本發(fā)明公開的一種固件升級保護(hù)系統(tǒng)實(shí)施例1的結(jié)構(gòu)示意圖;
圖4為本發(fā)明公開的一種固件升級保護(hù)系統(tǒng)實(shí)施例2的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,為本發(fā)明公開的一種固件升級保護(hù)方法的實(shí)施例1的流程圖,本方法包括以下步驟:
s101、接收固件升級命令;
當(dāng)需要對固件進(jìn)行升級時(shí),首選接收用于固件升級的固件升級命令。
s102、基于固件升級命令讀取出待升級固件;
然后根據(jù)接收到的固件升級命令,根據(jù)命令中攜帶的信息查找到對應(yīng)的待升級固件。
s103、識別預(yù)先設(shè)置在待升級固件中的固件識別號;
當(dāng)讀取出待升級固件后,進(jìn)一步識別待升級固件中的固件識別號,其中,所述的固件識別號為在編譯固件時(shí)對固件文件添加的頭部信息。例如,一個系統(tǒng)中有n個芯片,那么固件的頭部信息除去添加日期,名稱等信息,在添加一個固件識別號。一個固件識別號對應(yīng)一個芯片,例如固件識別號1的固件對應(yīng)第1號芯片,固件識別號2的固件對應(yīng)第2號芯片,固件識別號為n的固件對應(yīng)第n號芯片。
s104、判斷固件識別號是否與目標(biāo)芯片相對應(yīng);
然后進(jìn)一步判斷固件識別號是否與目標(biāo)芯片相對應(yīng),即判斷是否與待升級的芯片的參數(shù)相符合。
s105、當(dāng)固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對待升級固件進(jìn)行升級。
當(dāng)判斷固件識別號與目標(biāo)芯片相對應(yīng)時(shí),然后執(zhí)行對待升級固件的生成處理程序。
綜上所述,在上述實(shí)施例中,當(dāng)需要對固件升級進(jìn)行保護(hù)時(shí),首先接收固件升級命令,然后根據(jù)接收到的固件升級命令讀取出待升級固件,并且識別出預(yù)先設(shè)置在待升級固件中的固件識別號,然后進(jìn)一步判斷固件識別號是否與目標(biāo)芯片相對應(yīng),當(dāng)固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對待升級固件進(jìn)行升級處理,在對固件進(jìn)行升級的過程中,能夠在對固件進(jìn)行實(shí)際升級之前判斷出待升級的固件是否為需要升級的固件,只有當(dāng)待升級固件為需要升級的固件時(shí)才對待升級固件進(jìn)行升級,有效的避免了固件升級錯誤。
如圖2所示,為本發(fā)明公開的一種固件升級保護(hù)方法的實(shí)施例2的流程圖,本方法包括以下步驟:
s201、接收固件升級命令;
當(dāng)需要對固件進(jìn)行升級時(shí),首選接收用于固件升級的固件升級命令。
s202、基于固件升級命令讀取出待升級固件;
然后根據(jù)接收到的固件升級命令,根據(jù)命令中攜帶的信息查找到對應(yīng)的待升級固件。
s203、識別預(yù)先設(shè)置在待升級固件中的固件識別號;
當(dāng)讀取出待升級固件后,進(jìn)一步識別待升級固件中的固件識別號,其中,所述的固件識別號為在編譯固件時(shí)對固件文件添加的頭部信息。例如,一個系統(tǒng)中有n個芯片,那么固件的頭部信息除去添加日期,名稱等信息,在添加一個固件識別號。一個固件識別號對應(yīng)一個芯片,例如固件識別號1的固件對應(yīng)第1號芯片,固件識別號2的固件對應(yīng)第2號芯片,固件識別號為n的固件對應(yīng)第n號芯片。
s204、判斷固件識別號是否與目標(biāo)芯片相對應(yīng);
然后進(jìn)一步判斷固件識別號是否與目標(biāo)芯片相對應(yīng),即判斷是否與待升級的芯片的參數(shù)相符合。
s205、當(dāng)固件識別號與目標(biāo)芯片相對應(yīng)時(shí),將升級文件傳送至所述待升級固件對應(yīng)的目標(biāo)芯片,等待所述目標(biāo)芯片寫入閃存成功后結(jié)束固件升級;
當(dāng)判斷固件識別號與目標(biāo)芯片相對應(yīng)時(shí),然后執(zhí)行對待升級固件的生成處理程序,將升級文件傳送至待升級固件對應(yīng)的目標(biāo)芯片,等待目標(biāo)芯片寫入閃存成功后完成固件升級。
s206、當(dāng)固件識別號與目標(biāo)芯片不對應(yīng)時(shí),生成固件識別號與目標(biāo)芯片不相符的提示信息。
當(dāng)固件識別號與目標(biāo)芯片不對應(yīng)時(shí),程序報(bào)錯,提示固件信息與芯片不符,這樣通過一個固件識別號阻斷了可能人為導(dǎo)致固件同對應(yīng)芯片不相符的操作,阻斷了因?yàn)楣碳募慊炝藢?dǎo)致系統(tǒng)不能正常運(yùn)行的可能。
綜上所述,在上述實(shí)施例中,當(dāng)需要對固件升級進(jìn)行保護(hù)時(shí),首先接收固件升級命令,然后根據(jù)接收到的固件升級命令讀取出待升級固件,并且識別出預(yù)先設(shè)置在待升級固件中的固件識別號,然后進(jìn)一步判斷固件識別號是否與目標(biāo)芯片相對應(yīng),當(dāng)固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對待升級固件進(jìn)行升級處理,在對固件進(jìn)行升級的過程中,能夠在對固件進(jìn)行實(shí)際升級之前判斷出待升級的固件是否為需要升級的固件,只有當(dāng)待升級固件為需要升級的固件時(shí)才對待升級固件進(jìn)行升級,有效的避免了固件升級錯誤。
如圖3所示,為本發(fā)明公開的一種固件升級保護(hù)系統(tǒng)的實(shí)施例1的結(jié)構(gòu)示意圖,本系統(tǒng)包括:
接收模塊301,用于接收固件升級命令;
當(dāng)需要對固件進(jìn)行升級時(shí),首選接收用于固件升級的固件升級命令。
讀取模塊302,用于基于固件升級命令讀取出待升級固件;
然后根據(jù)接收到的固件升級命令,根據(jù)命令中攜帶的信息查找到對應(yīng)的待升級固件。
識別模塊303,用于識別預(yù)先設(shè)置在待升級固件中的固件識別號;
當(dāng)讀取出待升級固件后,進(jìn)一步識別待升級固件中的固件識別號,其中,所述的固件識別號為在編譯固件時(shí)對固件文件添加的頭部信息。例如,一個系統(tǒng)中有n個芯片,那么固件的頭部信息除去添加日期,名稱等信息,在添加一個固件識別號。一個固件識別號對應(yīng)一個芯片,例如固件識別號1的固件對應(yīng)第1號芯片,固件識別號2的固件對應(yīng)第2號芯片,固件識別號為n的固件對應(yīng)第n號芯片。
判斷模塊304,用于判斷固件識別號是否與目標(biāo)芯片相對應(yīng);
然后進(jìn)一步判斷固件識別號是否與目標(biāo)芯片相對應(yīng),即判斷是否與待升級的芯片的參數(shù)相符合。
處理模塊305,用于當(dāng)固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對待升級固件進(jìn)行升級。
當(dāng)判斷固件識別號與目標(biāo)芯片相對應(yīng)時(shí),然后執(zhí)行對待升級固件的生成處理程序。
綜上所述,在上述實(shí)施例中,當(dāng)需要對固件升級進(jìn)行保護(hù)時(shí),首先接收固件升級命令,然后根據(jù)接收到的固件升級命令讀取出待升級固件,并且識別出預(yù)先設(shè)置在待升級固件中的固件識別號,然后進(jìn)一步判斷固件識別號是否與目標(biāo)芯片相對應(yīng),當(dāng)固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對待升級固件進(jìn)行升級處理,在對固件進(jìn)行升級的過程中,能夠在對固件進(jìn)行實(shí)際升級之前判斷出待升級的固件是否為需要升級的固件,只有當(dāng)待升級固件為需要升級的固件時(shí)才對待升級固件進(jìn)行升級,有效的避免了固件升級錯誤。
如圖4所示,為本發(fā)明公開的一種固件升級保護(hù)系統(tǒng)的實(shí)施例2的結(jié)構(gòu)示意圖,本系統(tǒng)包括:
接收模塊401,用于接收固件升級命令;
當(dāng)需要對固件進(jìn)行升級時(shí),首選接收用于固件升級的固件升級命令。
讀取模塊402,用于基于固件升級命令讀取出待升級固件;
然后根據(jù)接收到的固件升級命令,根據(jù)命令中攜帶的信息查找到對應(yīng)的待升級固件。
識別模塊403,用于識別預(yù)先設(shè)置在待升級固件中的固件識別號;
當(dāng)讀取出待升級固件后,進(jìn)一步識別待升級固件中的固件識別號,其中,所述的固件識別號為在編譯固件時(shí)對固件文件添加的頭部信息。例如,一個系統(tǒng)中有n個芯片,那么固件的頭部信息除去添加日期,名稱等信息,在添加一個固件識別號。一個固件識別號對應(yīng)一個芯片,例如固件識別號1的固件對應(yīng)第1號芯片,固件識別號2的固件對應(yīng)第2號芯片,固件識別號為n的固件對應(yīng)第n號芯片。
判斷模塊404,用于判斷固件識別號是否與目標(biāo)芯片相對應(yīng);
然后進(jìn)一步判斷固件識別號是否與目標(biāo)芯片相對應(yīng),即判斷是否與待升級的芯片的參數(shù)相符合。
處理模塊405,用于當(dāng)固件識別號與目標(biāo)芯片相對應(yīng)時(shí),將升級文件傳送至所述待升級固件對應(yīng)的目標(biāo)芯片,等待所述目標(biāo)芯片寫入閃存成功后結(jié)束固件升級;
當(dāng)判斷固件識別號與目標(biāo)芯片相對應(yīng)時(shí),然后執(zhí)行對待升級固件的生成處理程序,將升級文件傳送至待升級固件對應(yīng)的目標(biāo)芯片,等待目標(biāo)芯片寫入閃存成功后完成固件升級。
生成模塊406,用于當(dāng)固件識別號與目標(biāo)芯片不對應(yīng)時(shí),生成固件識別號與目標(biāo)芯片不相符的提示信息。
當(dāng)固件識別號與目標(biāo)芯片不對應(yīng)時(shí),程序報(bào)錯,提示固件信息與芯片不符,這樣通過一個固件識別號阻斷了可能人為導(dǎo)致固件同對應(yīng)芯片不相符的操作,阻斷了因?yàn)楣碳募慊炝藢?dǎo)致系統(tǒng)不能正常運(yùn)行的可能。
綜上所述,在上述實(shí)施例中,當(dāng)需要對固件升級進(jìn)行保護(hù)時(shí),首先接收固件升級命令,然后根據(jù)接收到的固件升級命令讀取出待升級固件,并且識別出預(yù)先設(shè)置在待升級固件中的固件識別號,然后進(jìn)一步判斷固件識別號是否與目標(biāo)芯片相對應(yīng),當(dāng)固件識別號與目標(biāo)芯片相對應(yīng)時(shí),對待升級固件進(jìn)行升級處理,在對固件進(jìn)行升級的過程中,能夠在對固件進(jìn)行實(shí)際升級之前判斷出待升級的固件是否為需要升級的固件,只有當(dāng)待升級固件為需要升級的固件時(shí)才對待升級固件進(jìn)行升級,有效的避免了固件升級錯誤。
本說明書中各個實(shí)施例采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其它實(shí)施例的不同之處,各個實(shí)施例之間相同相似部分互相參見即可。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。