本技術(shù)涉及升級(jí)switch固件的,特別是涉及一種基于mcu升級(jí)switch固件的方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、近年來(lái),隨著汽車行業(yè)的迅速發(fā)展,車輛系統(tǒng)的switch中的固件需要頻繁進(jìn)行升級(jí),以適應(yīng)用戶需求。但是目前固件升級(jí)的方法都是借助自身以外的物理設(shè)備以及匹配的上位機(jī),將固件刷進(jìn)switch的flash里面。也就是說(shuō),對(duì)于出售的車輛需要召回或者需要到指定地點(diǎn)才能進(jìn)行升級(jí),從而導(dǎo)致增加后期升級(jí)固件的成本,也影響了固件的升級(jí)效率。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供了一種基于mcu升級(jí)switch固件的方法、裝置、設(shè)備及介質(zhì),通過(guò)串行外設(shè)接口spi通信協(xié)議直接訪問(wèn)switch,并將switch固件對(duì)應(yīng)的數(shù)據(jù)包寫(xiě)入switch的flash中完成固件的升級(jí),從而減少后期升級(jí)固件的成本,并且提高升級(jí)效率。
2、第一方面,本技術(shù)提供了一種基于mcu升級(jí)switch固件的方法,該方法包括:
3、獲取switch固件對(duì)應(yīng)的數(shù)據(jù)包,所述數(shù)據(jù)包為升級(jí)switch固件所需的最新版本數(shù)據(jù)包;
4、通過(guò)串行外設(shè)接口spi通信協(xié)議訪問(wèn)switch,并獲得switch的信息,所述信息包括版本信息和硬件信息;
5、若switch的版本信息與數(shù)據(jù)包的版本信息不一致,則對(duì)switch的硬件信息與數(shù)據(jù)包進(jìn)行匹配校驗(yàn);
6、若匹配校驗(yàn)通過(guò),則將數(shù)據(jù)包寫(xiě)入switch的flash中,并將switch進(jìn)行復(fù)位。
7、可選地,將數(shù)據(jù)包寫(xiě)入switch的flash中,包括:
8、從switch的flash中的a區(qū)和b區(qū)中選擇出升級(jí)分區(qū);
9、若選擇a區(qū)作為升級(jí)分區(qū),則擦除a區(qū)的數(shù)據(jù),并將數(shù)據(jù)包寫(xiě)入a區(qū)中;
10、若選擇b區(qū)作為升級(jí)分區(qū),則擦除b區(qū)的數(shù)據(jù),并將數(shù)據(jù)包寫(xiě)入b區(qū)中。
11、可選地,從switch的flash中的a區(qū)和b區(qū)中選擇出升級(jí)分區(qū),包括:
12、分別讀取a區(qū)和b區(qū)中header區(qū)的數(shù)據(jù),作為a區(qū)數(shù)據(jù)和b區(qū)數(shù)據(jù);
13、將a區(qū)數(shù)據(jù)和b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比;
14、若a區(qū)數(shù)據(jù)和b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)均一致,則選擇b區(qū)作為升級(jí)分區(qū);
15、若a區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)一致,且b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)不一致,則選擇b區(qū)作為升級(jí)分區(qū);
16、若a區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)不一致,且b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)一致,則選擇a區(qū)作為升級(jí)分區(qū);
17、若a區(qū)數(shù)據(jù)和b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)均不一致,則選擇b區(qū)作為升級(jí)分區(qū)。
18、可選地,對(duì)switch的硬件信息與數(shù)據(jù)包進(jìn)行匹配校驗(yàn)之前,還包括:
19、設(shè)置flash的配置信息;
20、對(duì)flash中的cal區(qū)進(jìn)行校驗(yàn);
21、若校驗(yàn)通過(guò),則繼續(xù)執(zhí)行升級(jí)流程;
22、若校驗(yàn)未通過(guò),則結(jié)束升級(jí)流程。
23、可選地,對(duì)flash中的cal區(qū)進(jìn)行校驗(yàn),包括:
24、向flash中的cal區(qū)中寫(xiě)入校驗(yàn)碼;
25、回讀cal區(qū)中的校驗(yàn)碼;
26、若寫(xiě)入的校驗(yàn)碼與回讀的校驗(yàn)碼一致,則表示校驗(yàn)通過(guò);
27、若寫(xiě)入的校驗(yàn)碼與回讀的校驗(yàn)碼不一致,則表示校驗(yàn)未通過(guò)。
28、可選地,獲取switch固件對(duì)應(yīng)的數(shù)據(jù)包,包括:
29、通過(guò)隊(duì)列串行外設(shè)接口qspi通信協(xié)議訪問(wèn)mcu中nor?flash,并讀取nor?flash中的switch固件對(duì)應(yīng)的數(shù)據(jù)包。
30、可選地,switch處于復(fù)位后,還包括:
31、判斷當(dāng)前是否處于ota過(guò)程;
32、若處于ota過(guò)程,則根據(jù)sts狀態(tài)判斷mcu重啟完成或進(jìn)入回滾;
33、若sts狀態(tài)指示mcu重啟完成,則比較mcu中switch固件的版本信息與switch固件的版本信息;
34、若mcu中switch固件的版本信息與switch固件的版本信息一致,則指示mcu和switch均升級(jí)成功;
35、若mcu中switch固件的版本信息與switch固件的版本信息不一致,則指示switch升級(jí)失敗,需進(jìn)入回滾;
36、若sts狀態(tài)指示進(jìn)入回滾,則比較mcu中switch固件的版本信息與switch的固件版本信息;
37、若mcu中switch固件的版本信息與switch固件的版本信息一致,則指示mcu和switch均升級(jí)失?。?/p>
38、若mcu中switch固件的版本信息與switch固件的版本信息不一致,則指示switch升級(jí)成功且mcu升級(jí)失敗,并根據(jù)mcu中switch固件的版本信息將switch固件進(jìn)行升級(jí)。
39、第二方面,本技術(shù)提供了一種基于mcu升級(jí)switch固件的裝置,該裝置包括:
40、獲取單元,用于獲取switch固件對(duì)應(yīng)的數(shù)據(jù)包,所述數(shù)據(jù)包為升級(jí)switch固件所需的最新版本數(shù)據(jù)包;
41、訪問(wèn)單元,用于通過(guò)串行外設(shè)接口訪問(wèn)switch,并獲得switch的信息,所述信息包括版本信息和硬件信息;
42、校驗(yàn)單元,用于若switch的版本信息與數(shù)據(jù)包的版本信息不一致,則對(duì)switch的硬件信息與數(shù)據(jù)包進(jìn)行匹配校驗(yàn);
43、寫(xiě)入單元,用于若匹配校驗(yàn)通過(guò),則將數(shù)據(jù)包寫(xiě)入switch的flash中,并將switch進(jìn)行復(fù)位。
44、可選地,寫(xiě)入單元包括:
45、選擇子單元,用于從switch的flash中的a區(qū)和b區(qū)中選擇出升級(jí)分區(qū);
46、處理子單元,用于若選擇a區(qū)作為升級(jí)分區(qū),則擦除a區(qū)的數(shù)據(jù),并將數(shù)據(jù)包寫(xiě)入a區(qū)中;
47、處理子單元,用于若選擇b區(qū)作為升級(jí)分區(qū),則擦除b區(qū)的數(shù)據(jù),并將數(shù)據(jù)包寫(xiě)入b區(qū)中。
48、可選地,選擇子單元具體用于:
49、分別讀取a區(qū)和b區(qū)中header區(qū)的數(shù)據(jù),作為a區(qū)數(shù)據(jù)和b區(qū)數(shù)據(jù);
50、將a區(qū)數(shù)據(jù)和b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比;
51、若a區(qū)數(shù)據(jù)和b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)均一致,則選擇b區(qū)作為升級(jí)分區(qū);
52、若a區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)一致,且b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)不一致,則選擇b區(qū)作為升級(jí)分區(qū);
53、若a區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)不一致,且b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)一致,則選擇a區(qū)作為升級(jí)分區(qū);
54、若a區(qū)數(shù)據(jù)和b區(qū)數(shù)據(jù)與標(biāo)準(zhǔn)校驗(yàn)數(shù)據(jù)均不一致,則選擇b區(qū)作為升級(jí)分區(qū)。
55、可選地,該裝置還包括:
56、設(shè)置單元,用于設(shè)置flash的配置信息;
57、校驗(yàn)單元,用于對(duì)flash中的cal區(qū)進(jìn)行校驗(yàn);若校驗(yàn)通過(guò),則繼續(xù)執(zhí)行升級(jí)流程;若校驗(yàn)未通過(guò),則結(jié)束升級(jí)流程。
58、可選地,校驗(yàn)單元具體用于:
59、向flash中的cal區(qū)中寫(xiě)入校驗(yàn)碼;
60、回讀cal區(qū)中的校驗(yàn)碼;
61、若寫(xiě)入的校驗(yàn)碼與回讀的校驗(yàn)碼一致,則表示校驗(yàn)通過(guò);
62、若寫(xiě)入的校驗(yàn)碼與回讀的校驗(yàn)碼不一致,則表示校驗(yàn)未通過(guò)。
63、可選地,獲取單元具體用于:
64、通過(guò)隊(duì)列串行外設(shè)接口qspi通信協(xié)議訪問(wèn)mcu中nor?flash,并讀取nor?flash中的switch固件對(duì)應(yīng)的數(shù)據(jù)包。
65、可選地,該裝置還包括回滾單元,具體用于:
66、判斷當(dāng)前是否處于ota過(guò)程;
67、若處于ota過(guò)程,則根據(jù)sts狀態(tài)判斷mcu重啟完成或進(jìn)入回滾;
68、若sts狀態(tài)指示mcu重啟完成,則比較mcu中switch固件的版本信息與switch固件的版本信息;
69、若mcu中switch固件的版本信息與switch固件的版本信息一致,則指示mcu和switch均升級(jí)成功;
70、若mcu中switch固件的版本信息與switch固件的版本信息不一致,則指示switch升級(jí)失敗,需進(jìn)入回滾;
71、若sts狀態(tài)指示進(jìn)入回滾,則比較mcu中switch固件的版本信息與switch的固件版本信息;
72、若mcu中switch固件的版本信息與switch固件的版本信息一致,則指示mcu和switch均升級(jí)失??;
73、若mcu中switch固件的版本信息與switch固件的版本信息不一致,則指示switch升級(jí)成功且mcu升級(jí)失敗,并根據(jù)mcu中switch固件的版本信息將switch固件進(jìn)行升級(jí)。
74、第三方面,本技術(shù)提供一種電子設(shè)備,設(shè)備包括存儲(chǔ)器和處理器:
75、存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序;
76、處理器用于根據(jù)計(jì)算機(jī)程序執(zhí)行上述第一方面提供的方法。
77、第四方面,本技術(shù)提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)用于存儲(chǔ)計(jì)算機(jī)程序,所述計(jì)算機(jī)程序用于執(zhí)行上述第一方面提供的方法。
78、由此可見(jiàn),本技術(shù)具有如下有益效果:
79、本技術(shù)提供了一種基于mcu升級(jí)switch固件的方法,mcu首先獲取switch固件對(duì)應(yīng)的數(shù)據(jù)包之后,通過(guò)串行外設(shè)接口spi通信協(xié)議訪問(wèn)switch,并獲得switch的信息,所述信息包括版本信息和硬件信息;若switch的版本信息與數(shù)據(jù)包的版本信息不一致,則對(duì)switch的硬件信息與數(shù)據(jù)包進(jìn)行匹配校驗(yàn);若匹配校驗(yàn)通過(guò),則將數(shù)據(jù)包寫(xiě)入switch的flash中,并將switch進(jìn)行復(fù)位。在此過(guò)程中,mcu通過(guò)spi通信協(xié)議可以直接訪問(wèn)switch,并且經(jīng)過(guò)數(shù)據(jù)校驗(yàn)通過(guò)以及匹配校驗(yàn)通過(guò)之后,可以直接將數(shù)據(jù)包寫(xiě)入switch中,以實(shí)現(xiàn)switch固件的升級(jí),減少了需要外部硬件設(shè)備的這一條件,減少了升級(jí)switch固件的成本,從而提高升級(jí)的便捷性和效率。