本發(fā)明涉及嵌入式工業(yè)控制,尤其涉及一種多層次嵌入式工控系統(tǒng)的程序備份和升級方法。
背景技術(shù):
1、在當(dāng)前蓬勃發(fā)展的嵌入式工業(yè)控制領(lǐng)域,許多設(shè)備需要多個模塊協(xié)同工作,每個模塊都有獨(dú)立的程序固件。然而,如果沒有采用適當(dāng)?shù)姆绞竭M(jìn)行程序升級,每次燒錄程序都將耗費(fèi)大量時間,需要專業(yè)人員參與。此外,一些模塊被安裝在設(shè)備內(nèi)部,難以取下,這顯著降低了設(shè)備更新的效率。
2、目前,嵌入式系統(tǒng)中的程序升級方法主要分為兩類:通過引導(dǎo)加載程序完成更新和通過應(yīng)用程序進(jìn)行軟件升級。然而,這些方法也存在一些不足之處。例如,更新引導(dǎo)加載程序本身是危險的,因?yàn)楦率】赡軙茐脑O(shè)備,而且通常無法由最終用戶修復(fù),可能需要返廠維修。另外,使用包管理器更新在嵌入式系統(tǒng)中可能不太適用,因?yàn)榍度胧较到y(tǒng)通常使用經(jīng)過良好測試的特定軟件,而包管理器可能會導(dǎo)致軟件分裂成多個包,這可能會使得測試和版本控制變得復(fù)雜。
3、對于程序備份,單片機(jī)嵌入式系統(tǒng)一般可以使用包括硬件接口讀取、bootloader固件升級、雙區(qū)備份、遠(yuǎn)程自動更新(ota)、文件系統(tǒng)備份、系統(tǒng)鏡像備份等方法,然而,備份流程里數(shù)據(jù)在傳輸過程中面臨安全風(fēng)險,容易受到未授權(quán)訪問和篡改的威脅。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是針對現(xiàn)有技術(shù)的不足,提出了一種多層次嵌入式工控系統(tǒng)的程序備份和升級方法。
2、為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案為:
3、本發(fā)明提供一種多層次嵌入式工控系統(tǒng)的程序備份和升級方法,所述多層次嵌入式工控系統(tǒng)包括顯示模塊、核心控制模塊和次級控制模塊,所述顯示模塊與核心控制模塊通信連接,并實(shí)現(xiàn)核心控制模塊的升級和備份;所述核心控制模塊與次級控制模塊通信連接,并以核心控制模塊作為中轉(zhuǎn)實(shí)現(xiàn)顯示模塊對次級控制模塊的升級和備份;
4、所述顯示模塊、核心控制模塊和次級控制模塊的芯片內(nèi)部flash劃分為bootloader程序區(qū)和app程序區(qū);
5、所述程序備份和升級方法包括備份流程和升級流程;
6、所述備份流程包括:
7、生成備份文件,獲取app程序區(qū)的存儲信息長度,判斷存儲信息長度是否為0后按序讀取app程序區(qū)中的數(shù)據(jù)段,對數(shù)據(jù)段進(jìn)行加密后放入備份文件,直至將所有數(shù)據(jù)段加密并放入備份文件中,完成備份流程;
8、所述升級流程包括:
9、擦除mcu(微控制器單元)內(nèi)部flash的app程序區(qū),獲取升級數(shù)據(jù)段進(jìn)行校驗(yàn),校驗(yàn)通過后將升級數(shù)據(jù)段寫入mcu內(nèi)部flash的app程序區(qū),直至將所有升級數(shù)據(jù)段寫入mcu內(nèi)部flash的app程序區(qū)中,完成升級流程。
10、進(jìn)一步地,所述升級流程中,顯示模塊的升級流程具體是:
11、s11:顯示模塊接收到升級指令,獲取外部存儲器中包含升級數(shù)據(jù)的文件,擦除mcu內(nèi)部flash的app程序區(qū);
12、s12:按序提取文件中的升級數(shù)據(jù)段,對當(dāng)前升級數(shù)據(jù)段進(jìn)行校驗(yàn),識別校驗(yàn)是否通過,若是,則進(jìn)入s13;若否,該次流程結(jié)束,反饋給顯示模塊“升級失敗”信號;
13、s13:將當(dāng)前升級數(shù)據(jù)段寫入mcu內(nèi)部flash的app程序區(qū),同時flash地址發(fā)生偏移;flash地址的偏移量與升級數(shù)據(jù)段大小相同;
14、s14:判斷文件中的所有升級數(shù)據(jù)段是否已完全寫入mcu內(nèi)部flash的app程序區(qū),若是則反饋給顯示模塊“升級成功”信號,若否則返回s12。
15、其中,所述包含升級數(shù)據(jù)的文件的生成方法為:將升級數(shù)據(jù)分為多個升級數(shù)據(jù)段,按序?qū)⒚總€升級數(shù)據(jù)段與模塊識別符、自定義標(biāo)識符拼接后采用md5算法生成加密密文,將加密密文插入至對應(yīng)升級數(shù)據(jù)段后,直至完成所有升級數(shù)據(jù)段的加密,獲得所述包含升級數(shù)據(jù)的文件。
16、進(jìn)一步地,所述升級流程中,核心控制模塊或次級控制模塊的升級流程具體是:
17、s21:核心控制模塊或次級控制模塊接收到顯示模塊發(fā)送的升級指令,擦除mcu內(nèi)部flash的app程序區(qū);
18、s22:獲取顯示模塊發(fā)送的升級數(shù)據(jù)段;
19、s23:對獲取的升級數(shù)據(jù)段進(jìn)行校驗(yàn),識別校驗(yàn)是否通過,若是,則進(jìn)入s24;若否,則反饋給顯示模塊“升級失敗”信號;
20、s24:將校驗(yàn)后的升級數(shù)據(jù)段寫入核心控制模塊或次級控制模塊bootloader程序區(qū)的緩沖區(qū);顯示模塊判斷是否已完成發(fā)送全部升級數(shù)據(jù)段,若是,則進(jìn)入s25;若否,則返回s22;
21、s25:將緩沖區(qū)中的全部升級數(shù)據(jù)段寫入核心控制模塊或次級控制模塊mcu內(nèi)部flash的app程序區(qū),同時flash地址發(fā)生偏移,同時反饋給顯示模塊“升級成功”信號;flash地址的偏移量與全部升級數(shù)據(jù)段大小相同。
22、進(jìn)一步地,以上升級流程中,校驗(yàn)方法為:將當(dāng)前升級數(shù)據(jù)段與模塊識別符、自定義標(biāo)識符拼接后采用md5算法生成校驗(yàn)密文,將當(dāng)前升級數(shù)據(jù)段對應(yīng)的加密密文和校驗(yàn)密文進(jìn)行比對,若相同則校驗(yàn)通過。
23、進(jìn)一步地,所述備份流程中,顯示模塊的備份流程具體是:
24、s31:顯示模塊接收到備份指令,在外部存儲器生成備份文件;
25、s32:顯示模塊從mcu內(nèi)部flash中獲取app程序區(qū)的存儲信息長度,判斷存儲信息長度是否為0;若為0,進(jìn)入s33;若不為0,進(jìn)入s34;
26、s33:顯示模塊獲取app程序區(qū)中的第i個數(shù)據(jù)段,判斷當(dāng)前數(shù)據(jù)段是否全為0xff,若是則結(jié)束,若否則執(zhí)行s35;其中i=1,...,n,n為數(shù)據(jù)段的總數(shù);
27、s34:顯示模塊獲取app程序區(qū)中的第i個數(shù)據(jù)段,記錄已獲取數(shù)據(jù)段的總長度,判斷已獲取數(shù)據(jù)段的總長度是否超過s32獲取的存儲信息長度,若是則結(jié)束,若否則執(zhí)行s35;其中i=1,...,n,n為數(shù)據(jù)段的總數(shù);
28、s35:將數(shù)據(jù)段與模塊識別符、自定義標(biāo)識符拼接后采用md5算法生成加密密文,將加密密文插入至對應(yīng)數(shù)據(jù)段后,得到加密后的數(shù)據(jù)段,放入外部存儲器生成的備份文件中,然后執(zhí)行以下操作:令,若存儲信息長度為0,返回s33;若存儲信息長度不為0,則返回s34。
29、進(jìn)一步地,所述備份流程中,核心控制模塊或次級控制模塊的備份流程包括以下步驟:
30、s41:核心控制模塊或次級控制模塊接收到顯示模塊發(fā)送的備份指令,顯示模塊在外部存儲器生成備份文件;
31、s42:核心控制模塊或次級控制模塊從mcu內(nèi)部flash中獲取app程序區(qū)的存儲信息長度,判斷存儲信息長度是否為0;若為0,進(jìn)入s43;若不為0,進(jìn)入s44;
32、s43:核心控制模塊或次級控制模塊獲取app程序區(qū)中的數(shù)據(jù)段,判斷當(dāng)前數(shù)據(jù)段是否全為0xff,若是則核心控制模塊或次級控制模塊發(fā)送結(jié)束幀通知顯示模塊,備份流程結(jié)束;若否則執(zhí)行s45;
33、s44:核心控制模塊或次級控制模塊獲取app程序區(qū)中的數(shù)據(jù)段,記錄已獲取數(shù)據(jù)段的總長度,判斷已獲取數(shù)據(jù)段的總長度是否超過s42獲取的存儲信息長度,若是,則核心控制模塊或次級控制模塊發(fā)送結(jié)束幀通知顯示模塊,備份流程結(jié)束,若否則執(zhí)行s45;
34、s45:顯示模塊將核心控制模塊和次級控制模塊發(fā)送的數(shù)據(jù)段與模塊識別符、自定義標(biāo)識符拼接后采用md5算法生成加密密文,將加密密文插入至數(shù)據(jù)段后,得到加密后的數(shù)據(jù)段,放入外部存儲器備份文件中,然后執(zhí)行以下操作:若核心控制模塊或次級控制模塊獲取的存儲信息長度為0,返回s43,令;若核心控制模塊或次級控制模塊獲取的存儲信息長度不為0,則返回s44,令。
35、本發(fā)明的另一個目的是提供一種實(shí)現(xiàn)上述方法的多層次嵌入式工控系統(tǒng)的程序備份和升級系統(tǒng),包括:
36、升級模塊,對多層次嵌入式工控系統(tǒng)的程序進(jìn)行升級;
37、備份模塊,對多層次嵌入式工控系統(tǒng)的程序進(jìn)行備份。
38、本發(fā)明的又一個目的是提供一種電子設(shè)備包括處理器和存儲器,所述存儲器存儲有能夠被所述處理器執(zhí)行的機(jī)器可執(zhí)行指令,所述處理器執(zhí)行所述機(jī)器可執(zhí)行指令以實(shí)現(xiàn)上述方法。
39、本發(fā)明的再一個目的是提供一種機(jī)器可讀存儲介質(zhì),該機(jī)器可讀存儲介質(zhì)存儲有機(jī)器可執(zhí)行指令,該機(jī)器可執(zhí)行指令在被處理器調(diào)用和執(zhí)行時,機(jī)器可執(zhí)行指令促使處理器實(shí)現(xiàn)上述方法。
40、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
41、本發(fā)明提供了一種多層次嵌入式工控系統(tǒng)的程序備份和升級方法,升級和備份流程劃分為不同模塊的操作,易于管理和維護(hù),同時提高了操作的靈活性;在進(jìn)行程序備份或升級的過程中對數(shù)據(jù)段進(jìn)行加密處理,增加了數(shù)據(jù)的安全性、完整性和正確性,降低了升級或備份過程中出錯的風(fēng)險。此外,升級或備份流程開始后在bootloader程序(系統(tǒng)啟動前引導(dǎo)程序)中創(chuàng)建文件時,會將app程序中所包含的程序信息獲取至文件中,可以在不需要解密文件的情況下就可以知道該文件對應(yīng)的設(shè)備類型、版本信息,方便識別加密文件的有效性;添加程序信息中的存儲信息長度可有效避免備份過程中因數(shù)據(jù)全為0xff而被誤判導(dǎo)致app程序不能啟動的情況,有效解決無法確定程序結(jié)尾的問題。該方法適用于多層次系統(tǒng),具有較好的通用性和適應(yīng)性。