本申請涉及嵌入式,尤其涉及嵌入式物聯網設備的固件更新方法、嵌入式物聯網設備、計算機程序產品及計算機可讀存儲介質。
背景技術:
1、固件是由軟件開發人員所設計的軟件程序,經過編譯器的編譯鏈接后,轉化為可用于嵌入式系統及物聯網設備的二進制可執行文件。此類固件存儲在非易失性存儲介質(諸如flash存儲器、硬盤驅動器以及usb閃存等)中,在設備啟動或運行時,能夠被中央處理器(cpu)讀取并加載至內存單元(諸如隨機存取存儲器(ram)),以便執行固件。
2、遠程固件更新是利用各種空中傳輸(over-the-air,簡稱ota)技術,將固件更新數據包發送到設備端,然后設備端存儲并運行新固件的方案。通過遠程固件更新,設備可以及時修復功能性、安全性漏洞,升級設備功能,提升用戶體驗。
3、在人工智能技術與第五代移動通信(5g)網絡快速發展的背景下,智能物聯網(artificial?intelligence?of?things,簡稱aiot)的概念逐漸興起,這意味著將會有越來越多的智能設備接入網絡,“智能萬物互聯”已經成為新一代網絡發展的新藍圖。然而,隨著智能物聯網設備的功能越來越復雜,軟件上集成的功能也越來越多,這導致編譯后的固件越來越大,進而實現固件更新所需的存儲空間及內存資源越來越多。這不僅導致設備的硬件成本升高,也增加了通信流量的維護成本。特別地,一些設備部署在低帶寬、高網絡干擾的通信環境中,存在提高固件更新的成功率,保障用戶使用體驗的迫切需求。
技術實現思路
1、本申請旨在至少解決現有技術或相關技術中存在的技術問題之一,為此,本申請提供了嵌入式物聯網設備的固件更新方法以及嵌入式物聯網設備。
2、根據本申請的第一方面,提供了嵌入式物聯網設備的固件更新方法,所述固件根據功能分為底層固件和應用固件兩部分;所述設備包括引導加載分區、底層固件分區、應用固件分區和緩存分區,其中所述引導加載分區用于存儲引導加載程序,所述底層固件分區用于存儲底層固件,所述應用固件分區用于存儲應用固件;所述方法包括下述步驟:響應于檢測到對所述設備的固件進行更新的觸發事件,獲取固件更新數據并寫入緩存分區,其中所述固件更新數據包括底層固件更新數據和應用固件更新數據中的至少一個;利用所述引導加載程序處理和加載所述緩存分區中的所述固件更新數據以執行固件更新。
3、作為示例,所述底層固件可以包括底層組件,用于為運行所述固件提供底層功能和功能接口。
4、作為示例,所述底層組件可以包括實時操作系統rtos組件、通信組件、應用開發組件和設備驅動程序組件中的至少一個。
5、作為示例,所述底層組件可以包括至少一個功能接口,每個功能接口存儲在所述底層組件中對應的地址單元處。
6、作為示例,所述應用固件可以被配置為通過調用所述底層固件的功能接口來定義業務邏輯的功能。
7、作為示例,所述固件更新數據可以為壓縮數據,所述處理包括對所述壓縮數據進行解壓處理,以執行所述固件更新。
8、作為示例,所述固件更新數據可以為全量數據,所述執行固件更新包括執行全量更新。
9、作為示例,所述處理可以包括:從所述固件更新數據中獲取完整性校驗參數信息,對寫入到所述緩存分區的數據進行完整性校驗;響應于完整性校驗通過,執行固件更新。
10、作為示例,所述方法還可以包括識別所述固件更新數據的功能類型,并根據所述功能類型執行固件更新,其中所述功能類型包括底層固件類型或應用固件類型。
11、作為示例,當所述固件更新數據可以為應用固件更新數據時,所述利用所述引導加載程序處理和加載所述緩存分區中的所述固件更新數據以執行固件更新的步驟可以包括:基于所述應用固件更新數據,利用所述引導加載程序執行應用固件更新數據的校驗和引導運行,以執行應用固件更新。
12、作為示例,當所述固件更新數據可以為底層固件更新數據、且待加載的固件更新數據用于修復底層組件的一個功能接口時,所述利用所述引導加載程序處理和加載所述緩存分區中的所述固件更新數據以執行固件更新的步驟可以包括:確定所述功能接口對應的地址單元,以及修改所對應的地址單元處的底層功能數據。
13、作為示例,當所述固件更新數據可以為底層固件更新數據、且待加載的固件更新數據用于新增底層組件的一個功能接口時,所述利用所述引導加載程序處理和加載所述緩存分區中的所述固件更新數據以執行固件更新的步驟可以包括:確定未被使用的地址單元;以及在所述未被使用的地址單元處添加新的底層功能數據,以作為新功能接口。
14、作為示例,當所述固件更新數據可以為底層固件更新數據和應用固件更新數據、且當待加載的固件更新數據用于刪除底層組件的一個功能接口時,所述利用所述引導加載程序處理和加載所述緩存分區中的所述固件更新數據以執行固件更新的步驟可以包括:更新應用固件以停止使用待刪除的功能接口,以及將待刪除的功能接口的地址單元處的接口設置為不可用狀態。
15、根據本申請的第二方面,還提供了一種嵌入式物聯網設備,包括處理器、存儲器以及非易失性存儲,所述存儲器用于存儲計算機程序,所述處理器用于執行所述計算機程序時實現上述任意固件更新方法。
16、作為示例,所述非易失性存儲包括:系統參數分區,其用于存儲設備的系統配置信息;引導加載分區,其用于存儲引導加載程序,所述引導加載程序被配置為加載固件更新數據并執行固件更新;所述固件更新數據包括底層固件更新數據和應用固件更新數據中的至少一個;底層固件分區,其用于存儲業務邏輯的底層固件,為應用所述固件提供底層功能和功能接口;應用固件分區,其用于存儲業務邏輯的應用固件,并被配置為通過調用所述底層固件的功能接口來定義所述業務邏輯的功能;緩存分區,其用于存儲獲取的固件更新數據。
17、根據本申請的第三方面,還提供了一種計算機程序產品,其包括計算機程序,當被處理器執行時實現上述任意固件更新方法。
18、根據本申請的第四方面,還提供了一種計算機存儲介質,其上存儲有計算機程序,當被處理器執行時實現上述任意固件更新方法。
19、本申請實施例提供的嵌入式物聯網設備的固件更新方法,將固件根據功能分為底層固件和應用固件兩部分,應用固件通過使用底層固件提供的每個功能的調用接口來定義業務功能。由于傳輸和緩存的固件片段體積更小,本申請能夠節省傳輸流量、節省存儲空間,進而節省硬件資源、降低設備成本,并且能夠改善固件更新的速率,提高固件更新的成功率。
1.一種嵌入式物聯網設備的固件更新方法,其特征在于,所述固件根據功能分為底層固件和應用固件兩部分;所述設備包括引導加載分區、底層固件分區、應用固件分區和緩存分區,其中所述引導加載分區用于存儲引導加載程序,所述底層固件分區用于存儲底層固件,所述應用固件分區用于存儲應用固件;所述方法包括下述步驟:
2.根據權利要求1所述的方法,其特征在于,所述底層固件包括底層組件,用于為運行所述固件提供底層功能和功能接口。
3.根據權利要求2所述的方法,其特征在于,
4.根據權利要求3所述的方法,其特征在于,所述底層組件包括至少一個功能接口,每個功能接口存儲在所述底層組件中對應的地址單元處。
5.根據權利要求1所述的方法,其特征在于,所述應用固件被配置為通過調用所述底層固件的功能接口來定義業務邏輯的功能。
6.根據權利要求1所述的方法,其特征在于,所述固件更新數據為壓縮數據,所述處理包括對所述壓縮數據進行解壓處理,以執行所述固件更新。
7.根據權利要求1所述的方法,其特征在于,所述固件更新數據為全量數據,所述執行固件更新包括執行全量更新。
8.根據權利要求1所述的方法,其特征在于,所述處理包括:
9.根據權利要求1所述的方法,還包括識別所述固件更新數據的功能類型,并根據所述功能類型執行固件更新,其中所述功能類型包括底層固件類型或應用固件類型。
10.根據權利要求1所述的方法,其特征在于,當所述固件更新數據為應用固件更新數據時,所述利用所述引導加載程序處理和加載所述緩存分區中的所述固件更新數據以執行固件更新的步驟包括:
11.根據權利要求4所述的方法,其特征在于,當所述固件更新數據為底層固件更新數據、且待加載的固件更新數據用于修復底層組件的一個功能接口時,所述利用所述引導加載程序處理和加載所述緩存分區中的所述固件更新數據以執行固件更新的步驟包括:
12.根據權利要求4所述的方法,其特征在于,當所述固件更新數據為底層固件更新數據、且待加載的固件更新數據用于新增底層組件的一個功能接口時,所述利用所述引導加載程序處理和加載所述緩存分區中的所述固件更新數據以執行固件更新的步驟包括:
13.根據權利要求4所述的方法,其特征在于,當所述固件更新數據為底層固件更新數據和應用固件更新數據、且當待加載的固件更新數據用于刪除底層組件的一個功能接口時,所述利用所述引導加載程序處理和加載所述緩存分區中的所述固件更新數據以執行固件更新的步驟包括:
14.一種嵌入式物聯網設備,其特征在于,包括:處理器、存儲器以及非易失性存儲,所述存儲器用于存儲計算機程序,所述處理器用于執行所述計算機程序時實現如權利要求1至13任一項所述的嵌入式物聯網設備的固件更新方法。
15.根據權利要求14所述的嵌入式物聯網設備,其特征在于,所述非易失性存儲包括:
16.一種計算機程序產品,包括計算機程序,其特征在于,所述計算機程序被處理器執行時實現根據權利要求1至13中任一項所述的方法。
17.一種計算機存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現根據權利要求1至13中任一項所述的方法。