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