本技術(shù)涉及應(yīng)用刷寫領(lǐng)域,特別涉及一種基于雙分區(qū)芯片的應(yīng)用刷寫方法及裝置。
背景技術(shù):
1、目前嵌入式中,常見的是僅集成mcu(microcontroller?unit,微控制器單元)芯片的傳統(tǒng)嵌入式系統(tǒng)的電控單元,其采用雙分區(qū)模式更新app(application?program,應(yīng)用程序)的流程的操作情況一般是劃分兩段物理地址,分別進(jìn)行存放兩份處理后的app。一般將兩份app稱為a,b版本的app。其中,兩個版本的參數(shù)需要區(qū)別處理,如中斷向量表也會根據(jù)兩份app的物理地址進(jìn)行變更。
2、因此,現(xiàn)有技術(shù)存在必須特別區(qū)分app的版本。第一次更新了a版本,則下一次就必須更新b版本,如果a版本執(zhí)行更新a版本的操作,一般會導(dǎo)致出錯。并且,不止下發(fā)版本需要注意與上一次刷寫版本的區(qū)別,在代碼編寫過程中,也要注意a,b版本。因為a,b版本存儲在兩段不同的地址上的,因此,現(xiàn)有技術(shù)中每次開發(fā)時,沒有注意將中斷向量表或其他參數(shù)的地址同等偏移,則會導(dǎo)致中斷出錯,導(dǎo)致程序跑飛等現(xiàn)象。
技術(shù)實現(xiàn)思路
1、鑒于上述問題,本技術(shù)實施例提出了一種基于雙分區(qū)芯片的應(yīng)用刷寫方法及裝置。
2、在本技術(shù)實施的第一方面,首先提供了一種基于雙分區(qū)芯片的應(yīng)用刷寫方法,其特征在于,應(yīng)用于所述雙分區(qū)芯片,所述雙分區(qū)芯片還包括有效地址區(qū)和備份地址區(qū),所述有效地址區(qū)包括第一有效標(biāo)識地址和有效應(yīng)用數(shù)據(jù)地址,所述備份地址區(qū)包括第二有效標(biāo)識地址和備份應(yīng)用數(shù)據(jù)地址,所述雙分區(qū)芯片與電源連接,所述方法包括:
3、檢測到所述電源接通,響應(yīng)于刷寫請求,刪除所述第二有效標(biāo)識地址中的第二有效標(biāo)識和所述備份應(yīng)用數(shù)據(jù)地址中的備份應(yīng)用數(shù)據(jù),所述刷寫請求包含應(yīng)用程序數(shù)據(jù);
4、對所述有效應(yīng)用數(shù)據(jù)地址進(jìn)行偏移處理,將所述有效應(yīng)用數(shù)據(jù)地址偏移預(yù)設(shè)長度至所述備份應(yīng)用數(shù)據(jù)地址;
5、將所述應(yīng)用程序數(shù)據(jù)寫入所述備份應(yīng)用數(shù)據(jù)地址;
6、將所述第二有效標(biāo)識重新寫入所述第二有效標(biāo)識地址;
7、將所述備份地址區(qū)更新為所述有效地址區(qū),將所述有效地址區(qū)更新為所述備份地址區(qū);
8、再次接通所述電源,判斷所述第一有效標(biāo)識地址上是否存在有效標(biāo)識,若存在所述有效標(biāo)識,運行所述有效地址區(qū)上的所述應(yīng)用程序。
9、可選地,所述檢測到所述電源接通,響應(yīng)于刷寫請求,刪除所述第二有效標(biāo)識地址中的第二有效標(biāo)識和所述備份應(yīng)用數(shù)據(jù)地址中的備份應(yīng)用數(shù)據(jù),所述刷寫請求包含應(yīng)用程序數(shù)據(jù),還包括:
10、檢測到所述電源接通,若未收到刷寫請求,判斷所述第一有效標(biāo)識地址上是否存在有效標(biāo)識,若存在所述有效標(biāo)識,運行所述有效地址區(qū)上的所述應(yīng)用程序。
11、可選地,在所述檢測到所述電源接通,響應(yīng)于刷寫請求之后,所述方法還包括:
12、若檢測到發(fā)生故障,判斷所述第一有效標(biāo)識地址上是否存在有效標(biāo)識,若存在所述有效標(biāo)識,運行所述有效地址區(qū)上的所述應(yīng)用程序。
13、可選地,在所述將所述應(yīng)用程序數(shù)據(jù)寫入所述備份應(yīng)用數(shù)據(jù)地址之后,所述方法還包括:
14、判斷所述應(yīng)用程序數(shù)據(jù)是否成功寫入所述備份應(yīng)用數(shù)據(jù)地址;
15、若成功寫入,將所述第二有效標(biāo)識重新寫入所述第二有效標(biāo)識地址;
16、若未能成功寫入,判斷所述第一有效標(biāo)識地址上是否存在有效標(biāo)識,若存在所述有效標(biāo)識,運行所述有效地址區(qū)上的所述應(yīng)用程序。
17、可選地,所述再次接通所述電源,判斷所述第一有效標(biāo)識地址上是否存在有效標(biāo)識,若存在所述有效標(biāo)識,運行所述有效地址區(qū)上的所述應(yīng)用程序,還包括:
18、關(guān)閉所述電源,再次接通所述電源,判斷所述第一有效標(biāo)識地址上是否存在有效標(biāo)識;
19、若不存在所述有效標(biāo)識,發(fā)出錯誤提示。
20、可選地,在所述關(guān)閉所述電源,再次接通所述電源之后,將所述備份地址區(qū)成功更新為所述有效地址區(qū),將所述有效地址區(qū)成功更新為所述備份地址區(qū)。
21、可選地,所述有效地址區(qū)是有效邏輯地址區(qū),所述備份地址區(qū)是備份邏輯地址區(qū)。
22、在本技術(shù)實施的第二方面,還提供一種基于雙分區(qū)芯片的應(yīng)用刷寫裝置,其特征在于,應(yīng)用于所述雙分區(qū)芯片,所述雙分區(qū)芯片還包括有效地址區(qū)和備份地址區(qū),所述有效地址區(qū)包括第一有效標(biāo)識地址和有效應(yīng)用數(shù)據(jù)地址,所述備份地址區(qū)包括第二有效標(biāo)識地址和備份應(yīng)用數(shù)據(jù)地址,所述雙分區(qū)芯片與電源連接,所述裝置包括:
23、數(shù)據(jù)擦除模塊,用于檢測到所述電源接通,響應(yīng)于刷寫請求,刪除所述第二有效標(biāo)識地址中的第二有效標(biāo)識和所述備份應(yīng)用數(shù)據(jù)地址中的備份應(yīng)用數(shù)據(jù),所述刷寫請求包含應(yīng)用程序數(shù)據(jù);
24、地址偏移模塊,用于對所述有效應(yīng)用數(shù)據(jù)地址進(jìn)行偏移處理,將所述有效應(yīng)用數(shù)據(jù)地址偏移預(yù)設(shè)長度至所述備份應(yīng)用數(shù)據(jù)地址;
25、數(shù)據(jù)寫入模塊,用于將所述應(yīng)用程序數(shù)據(jù)寫入所述備份應(yīng)用數(shù)據(jù)地址;
26、標(biāo)識寫入模塊,用于將所述第二有效標(biāo)識重新寫入所述第二有效標(biāo)識地址;
27、切區(qū)模塊,用于將所述備份地址區(qū)更新為所述有效地址區(qū),將所述有效地址區(qū)更新為所述備份地址區(qū);
28、應(yīng)用程序更新模塊,用于再次接通所述電源,判斷所述第一有效標(biāo)識地址上是否存在有效標(biāo)識,若存在所述有效標(biāo)識,運行所述有效地址區(qū)上的所述應(yīng)用程序。
29、在本技術(shù)實施的第三方面,還提供一種電子設(shè)備,其特征在于,包括處理器、存儲器及存儲在所述存儲器上并能夠在所述處理器上運行的計算機程序,所述計算機程序被所述處理器執(zhí)行時實現(xiàn)如上所述的基于雙分區(qū)芯片的應(yīng)用刷寫方法。
30、在本技術(shù)實施的第四方面,還提供一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)上存儲計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上所述的基于雙分區(qū)芯片的應(yīng)用刷寫方法。
31、本技術(shù)實施例具有以下優(yōu)點:本技術(shù)實施例通過在雙分區(qū)芯片上設(shè)置有效地址區(qū)和備份地址區(qū),實現(xiàn)了應(yīng)用程序的安全和高效更新。當(dāng)檢測到電源接通并接收到刷寫請求時,系統(tǒng)會刪除備份地址區(qū)中的第二有效標(biāo)識和備份應(yīng)用數(shù)據(jù),然后對有效應(yīng)用數(shù)據(jù)地址進(jìn)行偏移處理,將其偏移到備份應(yīng)用數(shù)據(jù)地址的位置。接著,將新的應(yīng)用程序數(shù)據(jù)寫入備份應(yīng)用數(shù)據(jù)地址,并重新寫入第二有效標(biāo)識。完成這些步驟后,系統(tǒng)會交換有效地址區(qū)和備份地址區(qū)的角色,即備份地址區(qū)變?yōu)橛行У刂穮^(qū),有效地址區(qū)變?yōu)閭浞莸刂穮^(qū)。最后,再次接通電源,并檢查第一有效標(biāo)識地址上是否存在有效標(biāo)識,如果存在,則運行有效地址區(qū)上的應(yīng)用程序。本技術(shù)通過在有效地址區(qū)和備份地址區(qū)之間進(jìn)行數(shù)據(jù)交換,確保了在更新過程中,即使發(fā)生錯誤,系統(tǒng)也可以回退到之前的狀態(tài),從而避免了系統(tǒng)崩潰的風(fēng)險。此外,這種方法在開發(fā)過程中不再需要考慮a和b分區(qū)的地址分配,例如中斷向量表的起始地址等。這不僅簡化了開發(fā)流程,減少了開發(fā)時間和成本,還使得后續(xù)外發(fā)的app無需再注明版本,進(jìn)一步簡化了版本管理和維護(hù)工作。還簡化了應(yīng)用程序的更新流程,減少了更新過程中可能出現(xiàn)的人為錯誤,提高了更新的成功率。同時,只有備份區(qū)的數(shù)據(jù)被擦寫。這一設(shè)計確保了在更新app的過程中,不會擦除到正在運行的代碼,從而保證了代碼運行的安全性。此外,由于不再區(qū)分a和b分區(qū)的app,即使老版本在下發(fā)過程中與上一個版本一致,也不會導(dǎo)致擦除運行區(qū)的app,從而避免了程序跑飛或其他問題的發(fā)生。這一改進(jìn)顯著提高了系統(tǒng)在更新過程中的穩(wěn)定性和可靠性,減少了因版本更新錯誤而導(dǎo)致的潛在風(fēng)險。