System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及一種電子設備的固件空中升級(fota,firmware?over-the-air,也稱空中固件升級)方法。
技術介紹
1、電子設備的固件空中升級一般采用差分方式,其優點是差分升級文件的體積小,占用的非易失性存儲器的存儲空間少。有些電子設備的非易失性存儲器的容量有限,還對固件壓縮后存放,以進一步減少占用的非易失性存儲器的存儲空間。然而對壓縮固件采用差分升級的效果不好,對壓縮固件的差分結果相比非壓縮固件的差分結果通常會變大很多,并不能真實地反應固件的數據變化。例如新固件與舊固件只有3個字節的變化,生成的差分升級文件只有1kb大小;而壓縮后的新固件與壓縮后的舊固件生成的差分升級文件卻有1242kb大小。
2、電子設備在用新固件替換舊固件時需要實現掉電保護機制,即對舊固件或新固件進行備份。目前都是對整個固件(無論是壓縮固件、還是非壓縮固件)進行備份,這會占用比較多的非易失性存儲器的存儲空間。
技術實現思路
1、本申請所要解決的技術問題是如何對壓縮固件采用差分方式進行空中升級,在減小差分升級文件的同時實現掉電保護機制,同時大幅減少備份空間的占用。
2、為解決上述技術問題,本申請提出了一種壓縮固件的空中升級方法,包括如下步驟。步驟s1:在編譯固件階段將電子設備的固件劃分為多個分區,每個分區中包含一個或多個功能模塊;每個分區在壓縮后具有基本相同的大小。步驟s2:以分區為單位對電子設備的固件進行壓縮,得到電子設備的壓縮固件;分區壓縮后稱為壓縮分區,在壓縮時記錄壓縮
3、進一步地,所述步驟s2中,所述壓縮分區的相關信息包括壓縮分區中非壓縮數據在電子設備的內存的運行地址和大小、壓縮后數據在電子設備的非易失性存儲器的存放地址和大小、壓縮后數據的校驗值。
4、進一步地,所述步驟s3中,所述升級文件表記錄了哪些壓縮分區需要升級、哪些壓縮分區無需升級;如果新、舊壓縮固件中某個壓縮分區中的功能模塊無變化,則該分區不產生差分數據;只有新、舊壓縮固件中某個壓縮分區中的功能模塊有變化,則該分區才會產生差分數據。
5、進一步地,所述步驟s3中,如果新壓縮固件比舊壓縮固件增加了功能模塊,則新壓縮固件新增壓縮分區用來存放新增的功能模塊。
6、進一步地,所述步驟s4中,所述升級加載數據表具體包括如下子步驟。步驟s410:備份舊壓縮固件的加載數據表。步驟s411:根據舊壓縮固件的加載數據表、以及加載數據表的差分數據還原出新壓縮固件的加載數據表。步驟s412:以新壓縮固件的加載數據表替換掉舊壓縮固件的加載數據表。步驟s413:刪除備份的舊壓縮固件的加載數據表。
7、進一步地,所述步驟s4中,所述以壓縮分區為單位升級固件具體包括如下子步驟。步驟s420:解析差分升級文件中的升級文件表,確定哪些壓縮分區需要升級,哪些壓縮分區無需升級。步驟s421:備份舊壓縮分區的數據。步驟s422:對舊壓縮分區的數據進行解壓縮,得到舊固件中的該分區的數據。步驟s423:根據舊固件中的該分區的數據、以及該分區的差分數據還原出新固件中的該分區的數據。步驟s424:對新固件中的該分區的數據進行壓縮,得到新壓縮分區的數據。步驟s425:以新壓縮分區的數據替換掉舊壓縮分區的數據。步驟s426:刪除備份的舊壓縮分區的數據。重復步驟s421至步驟s426直至完成所有需要升級的壓縮分區的升級操作。
8、進一步地,所述步驟s4中,所述以壓縮分區為單位升級固件具體包括如下子步驟。步驟s430:解析差分升級文件中的升級文件表,確定哪些壓縮分區需要升級,哪些壓縮分區無需升級。步驟s431:對舊壓縮分區的數據進行解壓縮,得到舊固件中的該分區的數據。步驟s432:根據舊固件中的該分區的數據、以及該分區的差分數據還原出新固件中的該分區的數據。步驟s433:對新固件中的該分區的數據進行壓縮,得到新壓縮分區的數據。步驟s434:備份新壓縮分區的數據。步驟s435:以新壓縮分區的數據替換掉舊壓縮分區的數據。步驟s436:刪除備份的新壓縮分區的數據。重復步驟s431至步驟s436直至完成所有需要升級的壓縮分區的升級操作。
9、進一步地,所述步驟s4中,所述以壓縮分區為單位升級固件具體包括如下子步驟。步驟s440:解析差分升級文件中的升級文件表,確定哪些壓縮分區需要升級,哪些壓縮分區無需升級,同時判斷需要升級的壓縮分區是否變大,需要升級的壓縮分區后面是否還有其他壓縮分區;如果發現需要升級的壓縮分區m的體積變大,并且壓縮分區m后面還有壓縮分區n,則進入步驟s441。步驟s441:備份舊壓縮分區m的數據,同時根據新、舊壓縮分區m的體積差值δ備份舊壓縮分區n的靠前的δ大小的數據;分區n是緊鄰在分區m后面的一個分區;δ>0。步驟s442:對舊壓縮分區m的數據進行解壓縮,得到舊固件中的分區m的數據。步驟s443:根據舊固件中的分區m的數據、以及分區m的差分數據還原出新固件中的分區m的數據。步驟s444:對新固件中的分區m的數據進行壓縮,得到新壓縮分區m的數據。步驟s445:以新壓縮分區m的數據替換掉舊壓縮分區m的數據;在此過程中也會覆蓋掉舊壓縮分區n的靠前的δ大小的數據。步驟s446:判斷壓縮分區n是否需要升級,不需要則進入步驟s447;如果需要則將舊壓縮分區n去除了靠前的δ大小后剩余的數據和備份的舊壓縮分區n的靠前的δ大小的數據組合為完整的舊壓縮分區n的數據,隨后進入步驟s440,把步驟s440中的提到的壓縮分區m改為n,提到的壓縮分區n則改為n的下一個壓縮分區。步驟s447:將新壓縮分區m之后的全部數據向后偏移δ大小;此時新壓縮分區m之后的數據是:舊壓縮分區n去除了靠前的δ大小后剩余的數據、以及在舊壓縮分區n之后的各個舊壓縮分區的數據;這一步執行完畢后在新壓縮分區m之后、進行偏移的全部數據之前形成一個δ大小的空閑空間。步驟s448:將備份的舊壓縮分區n的靠前的δ大小的數據填充到所述δ大小的空閑空間;此時舊壓縮分區n的數據變得完整了。步驟s449:刪除備份的舊壓縮分區m的數據以及舊壓縮分區n的靠前的δ大小的數據。重復步驟s441至步驟s449直至完成所有需要升級的壓縮分區的升級操作。
10、進一步地,所述步驟s4中,所述以壓縮分區為單位升級固件具體包括如下子步驟。步驟s450:解析差分升級文件中的升級文件表,確定哪些壓縮分區需要升級,哪些壓縮分區無需升級;同時判斷需要升級的壓縮分區是否變大,需要升級的壓縮分區后面是否還有其他壓縮分區;如果發現需要升級的壓本文檔來自技高網...
【技術保護點】
1.一種壓縮固件的空中升級方法,其特征是,包括如下步驟;
2.根據權利要求1所述的壓縮固件的空中升級方法,其特征是,所述步驟S2中,所述壓縮分區的相關信息包括壓縮分區中非壓縮數據在電子設備的內存的運行地址和大小、壓縮后數據在電子設備的非易失性存儲器的存放地址和大小、壓縮后數據的校驗值。
3.根據權利要求1所述的壓縮固件的空中升級方法,其特征是,所述步驟S3中,所述升級文件表記錄了哪些壓縮分區需要升級、哪些壓縮分區無需升級;如果新、舊壓縮固件中某個壓縮分區中的功能模塊無變化,則該分區不產生差分數據;只有新、舊壓縮固件中某個壓縮分區中的功能模塊有變化,則該分區才會產生差分數據。
4.根據權利要求1所述的壓縮固件的空中升級方法,其特征是,所述步驟S3中,如果新壓縮固件比舊壓縮固件增加了功能模塊,則新壓縮固件新增壓縮分區用來存放新增的功能模塊。
5.根據權利要求1所述的壓縮固件的空中升級方法,其特征是,所述步驟S4中,所述升級加載數據表具體包括如下子步驟;
6.根據權利要求2所述的壓縮固件的空中升級方法,其特征是,所述步驟S4中
7.根據權利要求2所述的壓縮固件的空中升級方法,其特征是,所述步驟S4中,所述以壓縮分區為單位升級固件具體包括如下子步驟;
8.根據權利要求2所述的壓縮固件的空中升級方法,其特征是,所述步驟S4中,所述以壓縮分區為單位升級固件具體包括如下子步驟;
9.根據權利要求2所述的壓縮固件的空中升級方法,其特征是,所述步驟S4中,所述以壓縮分區為單位升級固件具體包括如下子步驟;
10.一種壓縮固件的空中升級系統,其特征是,包括分區劃分單元、分區壓縮單元、分區差分單元、分區升級單元;
...【技術特征摘要】
1.一種壓縮固件的空中升級方法,其特征是,包括如下步驟;
2.根據權利要求1所述的壓縮固件的空中升級方法,其特征是,所述步驟s2中,所述壓縮分區的相關信息包括壓縮分區中非壓縮數據在電子設備的內存的運行地址和大小、壓縮后數據在電子設備的非易失性存儲器的存放地址和大小、壓縮后數據的校驗值。
3.根據權利要求1所述的壓縮固件的空中升級方法,其特征是,所述步驟s3中,所述升級文件表記錄了哪些壓縮分區需要升級、哪些壓縮分區無需升級;如果新、舊壓縮固件中某個壓縮分區中的功能模塊無變化,則該分區不產生差分數據;只有新、舊壓縮固件中某個壓縮分區中的功能模塊有變化,則該分區才會產生差分數據。
4.根據權利要求1所述的壓縮固件的空中升級方法,其特征是,所述步驟s3中,如果新壓縮固件比舊壓縮固件增加了功能模塊,則新壓縮固件新增壓縮分區用來存放新增的功能模塊。
【專利技術屬性】
技術研發人員:石懷文,黃永佳,周進,雷揚,
申請(專利權)人:翱捷科技股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。