本發明專利技術公開了一種智能電表實現增量式升級的方法及系統,其中方法包括以下步驟:將智能電表的整個軟件固件分成多個獨立的區域,升級時僅根據修改內容選擇需要升級的區域制作升級文件;上位機端采用差分算法生成舊版本和新版本固件的差異信息,將差異信息壓縮成一個補丁文件,并在補丁文件頭部添加頭部信息與校驗和,生成增量升級文件;智能電表端接收增量升級文件后校驗增量升級文件的頭部信息與校驗和,解壓縮還原補丁文件,然后利用合成算法、補丁文件中的差異信息和智能電表端舊版本文件還原出新版本文件;最后根據分區標識,用新版本文件替換對應分區的舊版本文件,完成升級。本發明專利技術基于分區進行增量式升級,可減少升級包大小和傳輸數據量。級包大小和傳輸數據量。級包大小和傳輸數據量。
【技術實現步驟摘要】
一種智能電表實現增量式升級的方法及系統
[0001]本專利技術涉及智能電表
,尤其涉及一種智能電表實現增量式升級的方法及系統。
技術介紹
[0002]隨著當前智能電表在全球的快速部署,客戶新增、變更需求或者電表出現軟件問題是在所難免的,但由于電表部署分散,在線升級就成了當前唯一的選擇。由于電表的智能化程度越來越高,軟件功能越來越豐富,電表固件程序也越來越大,當前采用的全量升級方式,需要將整個升級包的數據全部傳輸給電表,此種方式有以下問題:
[0003]1.升級包數據量大,導致升級時間長,升級效率低;
[0004]2.遠程通過網絡升級,導致流量消耗大;
[0005]3.內存資源消耗大,需要開辟不小于升級包大小的空間。
技術實現思路
[0006]由于全量升級存在以上不足,加之連續兩個軟件版本的變化往往不大,生成的固件程序差異也不大,因此本專利技術提出一種智能電表實現增量式升級的方法及系統,基于軟件固件分區進行增量式升級。
[0007]本專利技術采用的技術方案如下:
[0008]一種智能電表實現增量式升級的方法,包括以下步驟:
[0009]S1.將智能電表的整個軟件固件分成多個獨立的區域,升級時僅根據修改內容選擇需要升級的區域制作升級文件;
[0010]S2.上位機端采用bsdiff差分算法生成舊版本和新版本固件的差異信息,將差異信息壓縮成一個補丁文件,并在補丁文件頭部添加電表項目標識、分區標識以及舊版本和新版本固件的版本號,最后添加整個升級文件的校驗和,生成最終需要傳遞給智能電表端的增量升級文件;
[0011]S3.智能電表端接收增量升級文件至其外部存儲器中,待增量升級文件接收完成后,先校驗增量升級文件的校驗和,校驗和正確后取出增量升級文件頭部的電表項目標識、分區標識、舊版本和新版本固件的版本號,若不能匹配當前智能電表端存儲的信息,則認為該增量升級文件不能被識別,升級失敗;
[0012]S4.增量升級文件頭部信息校驗完成后,先解壓縮還原補丁文件,然后利用與bsdiff差分算法對稱的bspatch算法、補丁文件中的差異信息和智能電表端舊版本文件還原出新版本文件;最后根據分區標識,用新版本文件替換對應分區的舊版本文件,完成升級。
[0013]進一步地,舊版本和新版本固件的差異信息包括diff string,extra string,control block。
[0014]進一步地,解壓縮還原補丁文件時,按照512字節分包將增量升級文件從外部存儲
器提取到智能電表端的單片機RAM中進行解壓縮。
[0015]進一步地,將差異信息壓縮成補丁文件以及解壓縮還原補丁文件的方法包括uzlib算法。
[0016]進一步地,進行校驗的方法包括CRC32即循環冗余校驗。
[0017]一種智能電表實現增量式升級的系統,包括:
[0018]上位機,用于根據bsdiff差分算法生成舊版本和新版本固件的差異信息,將差異信息壓縮成一個補丁文件,并在補丁文件頭部添加電表項目標識、分區標識以及舊版本和新版本固件的版本號,最后添加整個升級文件的校驗和,生成最終需要傳遞給智能電表的增量升級文件;其中,智能電表的整個軟件固件分為多個獨立的區域,升級時上位機僅根據修改內容選擇需要升級的區域制作升級文件;
[0019]智能電表,用于接收上位機發送的增量升級文件至其外部存儲器中,待增量升級文件接收完成后,先校驗增量升級文件的校驗和,校驗和正確后取出增量升級文件頭部的電表項目標識、分區標識、舊版本和新版本固件的版本號,若不能匹配當前智能電表存儲的信息,則認為該增量升級文件不能被識別,升級失敗;增量升級文件頭部信息校驗完成后,先解壓縮還原補丁文件,然后利用與bsdiff差分算法對稱的bspatch算法、補丁文件中的差異信息和智能電表舊版本文件還原出新版本文件;最后根據分區標識,用新版本文件替換對應分區的舊版本文件,完成升級。
[0020]進一步地,舊版本和新版本固件的差異信息包括diff string,extra string,control block。
[0021]進一步地,解壓縮還原補丁文件時,按照512字節分包將增量升級文件從外部存儲器提取到智能電表的單片機RAM中進行解壓縮。
[0022]進一步地,將差異信息壓縮成補丁文件以及解壓縮還原補丁文件的方法包括uzlib算法。
[0023]進一步地,進行校驗的方法包括CRC32即循環冗余校驗。
[0024]本專利技術的有益效果在于:
[0025]1.分區能降低升級范圍,相比不分區能有效減少升級包大小。
[0026]2.增量升級文件能夠再次在分區的基礎上降低升級包大小,降低了傳輸的數據量。
[0027]3.降低升級包大小可在遠程升級中減少流量的消耗。
[0028]4.傳輸的數據量減少后能夠降低升級中斷概率,能有效提升升級效率。
[0029]5.由于電表端采用的是資源很低的單片機處理器,因此本專利技術調整了uzlib一次性解壓縮的數據大小,調整為按照512字節分包將升級文件從外部存儲器dataflash提取到單片機RAM中進行解壓縮,雖然這種方式降低了解壓效率,但是能有效減少算法對單片機的資源消耗。
附圖說明
[0030]圖1是本專利技術的智能電表實現增量式升級方法及系統示意圖。
具體實施方式
[0031]為了對本專利技術的技術特征、目的和效果有更加清楚的理解,現說明本專利技術的具體實施方式。應當理解,此處所描述的具體實施例僅用以解釋本專利技術,并不用于限定本專利技術,即所描述的實施例僅僅是本專利技術一部分實施例,而不是全部的實施例。基于本專利技術的實施例,本領域技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬于本專利技術保護的范圍。
[0032]實施例1
[0033]本實施例提供了一種智能電表實現增量式升級的方法,如圖1所示,包括以下步驟:
[0034]S1.將智能電表的整個軟件固件分成多個獨立的區域,例如boot,app1,app2,
…
等多個區域,升級時僅根據修改內容選擇需要升級的區域制作升級文件,能極大地減少升級包大小。
[0035]S2.上位機端采用bsdiff差分算法生成舊版本和新版本固件的差異信息,將差異信息壓縮成一個補丁文件(patch包),并在補丁文件頭部添加電表項目標識、分區標識以及舊版本和新版本固件的版本號,用于智能電表端判斷該升級文件能否被接收;最后添加整個升級文件的校驗和,生成最終需要傳遞給智能電表端的增量升級文件。
[0036]S3.智能電表端接收增量升級文件至其外部存儲器dataflash中,待增量升級文件接收完成后,先校驗增量升級文件的校驗和,校驗和正確后取出增量升級文件頭部的電表項目標識、分區標識、舊版本和新版本固件的版本號,確保信息正確,能匹配當前智能電表端存儲的信息;若不能匹配當前智能電表端存儲的信息,則認為該增量升級文件不能被本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.一種智能電表實現增量式升級的方法,其特征在于,包括以下步驟:S1.將智能電表的整個軟件固件分成多個獨立的區域,升級時僅根據修改內容選擇需要升級的區域制作升級文件;S2.上位機端采用bsdiff差分算法生成舊版本和新版本固件的差異信息,將差異信息壓縮成一個補丁文件,并在補丁文件頭部添加電表項目標識、分區標識以及舊版本和新版本固件的版本號,最后添加整個升級文件的校驗和,生成最終需要傳遞給智能電表端的增量升級文件;S3.智能電表端接收增量升級文件至其外部存儲器中,待增量升級文件接收完成后,先校驗增量升級文件的校驗和,校驗和正確后取出增量升級文件頭部的電表項目標識、分區標識、舊版本和新版本固件的版本號,若不能匹配當前智能電表端存儲的信息,則認為該增量升級文件不能被識別,升級失敗;S4.增量升級文件頭部信息校驗完成后,先解壓縮還原補丁文件,然后利用與bsdiff差分算法對稱的bspatch算法、補丁文件中的差異信息和智能電表端舊版本文件還原出新版本文件;最后根據分區標識,用新版本文件替換對應分區的舊版本文件,完成升級。2.根據權利要求1所述的智能電表實現增量式升級的方法,其特征在于,舊版本和新版本固件的差異信息包括diff string,extra string,controlblock。3.根據權利要求1所述的智能電表實現增量式升級的方法,其特征在于,解壓縮還原補丁文件時,按照512字節分包將增量升級文件從外部存儲器提取到智能電表端的單片機RAM中進行解壓縮。4.根據權利要求1所述的智能電表實現增量式升級的方法,其特征在于,將差異信息壓縮成補丁文件以及解壓縮還原補丁文件的方法包括uzlib算法。5.根據權利要求1所述的智能電表實現增量式升級的方法,其特征在于,進行校驗的方法包括CRC32即循環冗余校驗。6.一種智...
【專利技術屬性】
技術研發人員:張良柱,丁川,
申請(專利權)人:成都長城開發科技股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。