本技術涉及遠程升級,具體而言,涉及一種控制器的升級方法和裝置、存儲介質及電子設備。
背景技術:
1、在汽車中,對于封閉的控制器,通過遠程升級(on?the?air,ota)的方式可以對產品軟件進行更新。在升級固件中,通常需要準備兩份程序,一份為引導加載程序,例如sbl(secondary?bootloader),一份為功能程序,例如app(application)。
2、在對控制器進行遠程升級結束后,將重新啟動控制器,sbl程序將初始化硬件,并加載運行app鏡像。而相關技術在升級過程中,直接對控制器當前的sbl程序進行更新,在更新后的sbl鏡像校驗失敗的情況下,可能造成控制器啟動失敗的情況出現。換言之,相關技術提供的控制器升級方法存在魯棒性較低的問題。
3、針對上述的問題,目前尚未提出有效的解決方案。
技術實現思路
1、本技術實施例提供了一種控制器的升級方法和裝置、存儲介質及電子設備,以至少解決相關技術提供的控制器升級方法存在魯棒性較低的技術問題。
2、根據本技術實施例的一個方面,提供了一種控制器的升級方法,包括:在接收到升級數據包,且引導程序指示位指示第一引導分區的情況下,將升級數據包中的目標引導程序文件刷寫至第二引導分區,其中,升級數據包包括目標引導程序文件和目標應用程序文件,第一引導分區為控制器啟動后具有第一讀取時序的存儲分區;在第二引導分區中的目標引導程序文件通過完整性校驗的情況下,將第一引導分區中的參考引導程序文件備份至文件備份分區后,處理第一引導分區中的參考引導程序文件得到候選引導程序文件,并將引導程序指示位調整為指示第二引導分區,其中,候選引導程序文件為無法通過完整性校驗的文件;啟動控制器,在第一引導分區的程序文件未通過完整性校驗的情況下,加載第二引導分區中的目標引導程序文件;跳轉至應用分區,在目標應用程序文件加載完成的情況下,確認完成控制器的升級。
3、根據本技術實施例的另一方面,還提供了一種控制器的升級裝置,包括:刷寫指示單元,用于在接收到升級數據包,且引導程序指示位指示第一引導分區的情況下,將升級數據包中的目標引導程序文件刷寫至第二引導分區,其中,升級數據包包括目標引導程序文件和目標應用程序文件,第一引導分區為控制器啟動后具有第一讀取時序的存儲分區;指示位調整單元,用于在第二引導分區中的目標引導程序文件通過完整性校驗的情況下,將第一引導分區中的參考引導程序文件備份至文件備份分區后,處理第一引導分區中的參考引導程序文件得到候選引導程序文件,并將引導程序指示位調整為指示第二引導分區,其中,候選引導程序文件為無法通過完整性校驗的文件;程序加載單元,用于啟動控制器,在第一引導分區的程序文件未通過完整性校驗的情況下,加載第二引導分區中的目標引導程序文件;應用升級單元,用于跳轉至應用分區,在目標應用程序文件加載完成的情況下,確認完成控制器的升級。
4、可選地,上述刷寫指示單元,還用于:在接收到升級數據包,且引導程序指示位指示第二引導分區的情況下,將升級數據包中的目標引導程序文件刷寫至第一引導分區;上述指示位調整單元,還用于:在第一引導分區中的目標引導程序文件通過完整性校驗的情況下,將引導程序指示位調整為指示第一引導分區;上述程序加載單元,還用于啟動控制器,在第一引導分區的程序文件通過完整性校驗的情況下,加載第一引導分區中的目標引導程序文件;上述應用升級單元,還用于:跳轉至應用分區,在目標應用程序文件加載完成的情況下,確認完成控制器的升級。
5、可選地,上述程序加載單元,包括:第一引導程序加載模塊,用于在根據目標引導程序文件對控制器初始化失敗,且引導程序指示位指示第一引導分區的情況下,處理第一引導分區中的目標引導程序文件得到候選引導程序文件,并將引導程序指示位調整為指示第二引導分區;第二引導程序加載模塊,用于在根據目標引導程序文件對控制器初始化失敗,且引導程序指示位指示第二引導分區的情況下,將文件備份分區中的參考引導程序文件刷寫至第一引導分區,并將引導程序指示位調整為指示第一引導分區;第一啟動模塊,用于在對引導程序指示位調整后,啟動控制器。
6、可選地,上述應用升級單元,包括:第一應用程序升級模塊,用于在接收到升級數據包,且應用程序指示位指示第一應用分區的情況下,將目標應用程序文件刷寫至第二應用分區,并在第二應用分區中的目標應用程序文件通過完整性校驗的情況下,將應用程序指示位調整為指示第二應用分區,其中,第一應用分區和第二應用分區用于存儲應用程序文件;第二應用程序升級模塊,用于在接收到升級數據包,且應用程序指示位指示第二應用分區的情況下,將目標應用程序文件刷寫至第一應用分區,并在第一應用分區中的目標應用程序文件通過完整性校驗的情況下,將應用程序指示位調整為指示第一應用分區。
7、可選地,上述應用升級單元,還包括:應用加載模塊,用于在應用程序指示位指示的應用分區中加載目標應用程序文件;第一應用回滾模塊,用于在加載后的目標應用程序文件未通過完整性校驗,且應用程序指示位指示第一應用分區的情況下,將應用程序指示位調整為指示第二應用分區;第二應用回滾模塊,用于在加載后的目標應用程序文件未通過完整性校驗,且應用程序指示位指示第二應用分區的情況下,將應用程序指示位調整為指示第一應用分區。
8、可選地,上述控制器的升級裝置,還包括:接收單元,用于在控制器接收到升級數據包的情況下,將升級數據包,存儲至外部存儲器,并通知待升級的處理器;存儲單元,用于待升級的處理器將升級數據包存儲至文件存儲區域,其中,文件存儲區域包括第一引導分區、第二引導分區、文件備份分區和引導程序指示位存儲區,引導程序指示位存儲區用于存儲引導程序指示位。
9、根據本技術實施例的又一方面,還提供了一種計算機可讀的存儲介質,該計算機可讀的存儲介質中存儲有計算機程序,其中,該計算機程序被設置為運行時執行上述控制器的升級方法。
10、根據本技術實施例的又一個方面,提供一種計算機程序產品,該計算機程序產品包括計算機程序/指令,該計算機指令存儲在計算機可讀存儲介質中。計算機設備的處理器從計算機可讀存儲介質讀取該計算機程序/指令,處理器執行該計算機程序/指令,使得該計算機設備執行如以上控制器的升級方法。
11、根據本技術實施例的又一方面,還提供了一種電子設備,包括存儲器和處理器,上述存儲器中存儲有計算機程序,上述處理器被設置為通過上述計算機程序執行上述的控制器的升級方法。
12、在本技術實施例中,在接收到升級數據包,且引導程序指示位指示第一引導分區的情況下,將升級數據包中的目標引導程序文件刷寫至第二引導分區,其中,升級數據包包括目標引導程序文件和目標應用程序文件,第一引導分區為控制器啟動后具有第一讀取時序的存儲分區;在第二引導分區中的目標引導程序文件通過完整性校驗的情況下,將第一引導分區中的參考引導程序文件備份至文件備份分區后,處理第一引導分區中的參考引導程序文件得到候選引導程序文件,并將引導程序指示位調整為指示第二引導分區,其中,候選引導程序文件為無法通過完整性校驗的文件;啟動控制器,在第一引導分區的程序文件未通過完整性校驗的情況下,加載第二引導分區中的目標引導程序文件;跳轉至應用分區,在目標應用程序文件加載完成的情況下,確認完成控制器的升級。第一引導分區和第二引導分區具有讀取時序關系,在第一引導分區中的文件通過完整性校驗的情況下,將優先加載第一引導分區中的文件。在對控制器進行升級的過程中,在接收到升級包且當前指示位指示第一引導分區的情況下,可以將程序刷寫至第二引導分區,并在備份后破壞第一引導分區中的程序,以實現兩個分區間的主動切區。通過上述方法解決了相關技術提供的控制器升級方法存在魯棒性較低的技術問題。