本發(fā)明涉及一種終端遠程升級方法和pos終端,屬于嵌入式領(lǐng)域。
背景技術(shù):
pos系統(tǒng)即銷售時點信息系統(tǒng),是指通過自動讀取設(shè)備(如收銀機)在銷售商品時直接讀取商品銷售信息(如商品名、單價、銷售數(shù)量、銷售時間、銷售店鋪、購買顧客等),并通過通訊網(wǎng)絡(luò)和計算機系統(tǒng)傳送至有關(guān)部門進行分析加工以提高經(jīng)營效率的系統(tǒng)。pos系統(tǒng)最早應(yīng)用于零售業(yè),以后逐漸擴展至其他如金融、旅館等服務(wù)行業(yè),利用pos系統(tǒng)的范圍也從企業(yè)內(nèi)部擴展到整個供應(yīng)鏈。
當pos終端在執(zhí)行遠程自升級的時候,存在一定概率由于適應(yīng)性或固件匹配性等問題導(dǎo)致pos終端遠程升級后無法再次啟動,必須人員到現(xiàn)場或者把pos終端送回維修部才可恢復(fù)pos終端正常工作的情況。而若pos終端因為自升級失敗導(dǎo)致其無法使用,必定為給商戶帶來一定的損失,讓商戶對pos終端生產(chǎn)商存在不好的印象。
技術(shù)實現(xiàn)要素:
為了解決上述問題,本發(fā)明通過提供一種終端遠程升級方法和pos終端。
本發(fā)明采用的技術(shù)方案一方面為一種終端遠程升級方法,包括以下步驟:設(shè)置兩個存儲區(qū),其中第一存儲區(qū)用于存儲固定bios、默認boot和備份boot,第二存儲區(qū)用于存儲現(xiàn)時bios和現(xiàn)時boot;第二存儲區(qū)獲取并存儲固定bios和默認boot,標記其為現(xiàn)時bios和現(xiàn)時boot;獲取更新數(shù)據(jù),清空備份boot并將默認boot存入,標記存入的默認boot為備份boot,將更新數(shù)據(jù)包含的boot存入并覆蓋默認boot,標記該覆蓋后的boot為默認boot;第二存儲區(qū)獲取并存儲固定bios和默認boot,標記其為現(xiàn)時bios和現(xiàn)時boot;重啟終端,運行現(xiàn)時bios并載入現(xiàn)時boot。
優(yōu)選地,所述第一存儲區(qū)位于nandflash內(nèi)存,所述第二存儲區(qū)位于sdram存儲器。
優(yōu)選地,設(shè)置下載器,通過下載器從服務(wù)器下載更新數(shù)據(jù);所述下載器還用于獲取更新完成信號和重啟次數(shù),如果重啟次數(shù)大于閾值且沒有獲取更新完成信號,則將備份boot覆蓋現(xiàn)時boot并重啟終端。
優(yōu)選地,所述下載器還用于在指定文件記錄更新數(shù)據(jù)的固件名稱和版本號,同時記錄流程運行信息并發(fā)送至服務(wù)器。
基于本發(fā)明的技術(shù)方案的另一方面為一種pos終端,包括:pos機能模組,用于實現(xiàn)pos功能;nandflash內(nèi)存,用于存儲固定bios、默認boot和備份boot;sdram存儲器,用于存儲現(xiàn)時bios和現(xiàn)時boot;下載器,用于獲取更新數(shù)據(jù),清空備份boot并將默認boot存入,標記存入的默認boot為備份boot,重啟終端,運行現(xiàn)時bios并載入現(xiàn)時boot。
本發(fā)明的有益效果為設(shè)置兩個存儲區(qū),通過其中一個存儲區(qū)作為原始資料存儲以保持數(shù)據(jù)的安全,另一個存儲區(qū)作為實際的linux的bios和boot的存儲區(qū)以支持裝置的運行;同時將流程進行的信息發(fā)送至服務(wù)器,可以在更新失敗的時候知道現(xiàn)有的更新流程以支持故障判斷。
附圖說明
圖1所示為基于本發(fā)明實施例的遠程更新固件流程圖。
具體實施方式
以下結(jié)合實施例對本發(fā)明進行說明。
基于發(fā)明的實施例,一種終端遠程升級方法,包括以下步驟:設(shè)置兩個存儲區(qū),其中第一存儲區(qū)用于存儲固定bios、默認boot和備份boot,第二存儲區(qū)用于存儲現(xiàn)時bios和現(xiàn)時boot;第二存儲區(qū)獲取并存儲固定bios和默認boot,標記其為現(xiàn)時bios和現(xiàn)時boot;獲取更新數(shù)據(jù),清空備份boot并將默認boot存入,標記存入的默認boot為備份boot,將更新數(shù)據(jù)包含的boot存入并覆蓋默認boot,標記該覆蓋后的boot為默認boot;第二存儲區(qū)獲取并存儲固定bios和默認boot,標記其為現(xiàn)時bios和現(xiàn)時boot;重啟終端,運行現(xiàn)時bios并載入現(xiàn)時boot。
固定bios為最開始的bios固件,此固件永不升級,默認boot為當前運行的boot固件,備份boot為上一次運行的正常boot固件(第一次出廠時,boot1和boot2相同,每次升級boot前,回把老的boot備份到此位置);第二存儲區(qū)用于從第一存儲區(qū)獲取現(xiàn)時bios和默認boot,標記其為現(xiàn)時bios和現(xiàn)時boot,即第一存儲區(qū)用于存儲備用的資料,并不是實際控制linux,實際運行l(wèi)inux的嵌入式系統(tǒng)的是第二存儲區(qū)中的bios和boot;通過下載器連接服務(wù)器獲取更新數(shù)據(jù),更新數(shù)據(jù)包括需要更新的固件資料和更新指令,同時,清空備份boot的存儲信息,在騰出來的存儲空間內(nèi)將第一存儲區(qū)的默認boot存入,然后標記其為備份boot,同時將更新數(shù)據(jù)包內(nèi)包含的boot信息更新入原來的默認boot的存儲位置中,標記其為默認boot;第二存儲區(qū)從第一存儲區(qū)獲取固定bios和默認boot,重啟終端,第二存儲區(qū)的bios會載入第二存儲區(qū)的boot并運行。
所述第一存儲區(qū)位于nandflash內(nèi)存,所述第二存儲區(qū)位于sdram存儲器。
設(shè)置下載器,通過下載器從服務(wù)器下載更新數(shù)據(jù);所述下載器還用于獲取更新完成信號和重啟次數(shù),如果重啟次數(shù)大于閾值且沒有獲取更新完成信號,則將備份boot覆蓋現(xiàn)時boot并重啟終端。
當更新固件完成存儲時,會重啟終端,如果重啟中發(fā)生異常,下載器就沒辦法收到更新完成信號(該信號可以是bios成功啟動boot后發(fā)出一個信號,也可以是檢測終端在重啟時對應(yīng)的元件運行時發(fā)出的信號),然后下載器會再次重啟終端,當重啟一定次數(shù)仍無法正常啟動的時候,則進入復(fù)原模式,通過將備份boot提取出來,作為現(xiàn)時boot使用,即讓第二存儲區(qū)從第一存儲區(qū)獲取備份boot并存儲,然后重啟終端,因為備份boot是原來穩(wěn)定的boot因此,在成功啟動之后,會將備份boot覆蓋默認boot(即在第二存儲區(qū)中被驗證無法正常啟動的更新數(shù)據(jù)的boot)。
所述下載器還用于在指定文件記錄更新數(shù)據(jù)的固件名稱和版本號,同時記錄流程運行信息并發(fā)送至服務(wù)器。
下載器遠程連接后臺,并根據(jù)后臺發(fā)出的升級指令在指定的固件臨時位置保存數(shù)據(jù),并設(shè)置環(huán)境變量中的升級標志,再重啟系統(tǒng)。
升級標志:表示當前系統(tǒng)的升級流程:
0表示升級成功或無升級計劃;
1表示固件已下載成功;
2表示固件已經(jīng)更新到指定位置,當時未啟動過。
通過升級流程的標記可以知道現(xiàn)在流程運行信息,服務(wù)器可以知道在那一步流程出現(xiàn)問題,可以針對性的做出改進。
一種pos終端,包括:pos機能模組,用于實現(xiàn)pos功能;nandflash內(nèi)存,用于存儲固定bios、默認boot和備份boot;sdram存儲器,用于存儲現(xiàn)時bios和現(xiàn)時boot;下載器,用于獲取更新數(shù)據(jù),清空備份boot并將默認boot存入,標記存入的默認boot為備份boot,重啟終端,運行現(xiàn)時bios并載入現(xiàn)時boot。
如圖1所示的遠程更新固件流程,s1、下載器發(fā)現(xiàn)有新固件可以升級;s2、下載新固件,生產(chǎn)升級列表dlfl.ini,修改固件升級標志,重啟;s3、boot檢測到固件升級標志變換,進入升級流程;s4、boot根據(jù)升級列表備份需要升級的固件,并生成固件備份列表;s5、boot更新固件,并修改升級標志,重啟;s6、判斷boot啟動是否成,如果成功則下載器連接服務(wù)器并上傳流程信息,否則進入恢復(fù)流程。
以上所述,只是本發(fā)明的較佳實施例而已,本發(fā)明并不局限于上述實施方式,只要其以相同的手段達到本發(fā)明的技術(shù)效果,都應(yīng)屬于本發(fā)明的保護范圍。在本發(fā)明的保護范圍內(nèi)其技術(shù)方案和/或?qū)嵤┓绞娇梢杂懈鞣N不同的修改和變化。