本發(fā)明涉及車輛制動系統(tǒng),尤其是涉及基于spi通訊的制動系統(tǒng)雙mcu固件升級方法和系統(tǒng)。
背景技術(shù):
1、微控制器(以下簡稱mcu)是嵌入式系統(tǒng)的核心,隨著嵌入式系統(tǒng)在汽車電子等領(lǐng)域的廣泛應(yīng)用,多微控制器單元(multi-mcu)架構(gòu)因其高可靠性成為關(guān)鍵系統(tǒng)的首選方案。在汽車電子領(lǐng)域的制動系統(tǒng)中,集成式制動系統(tǒng)因其多功能、小體積、高性能得到越來越廣泛的應(yīng)用。集成式制動系統(tǒng)具備多種功能,如制動防抱死、電子制動力分配、電子駐車等。為了滿足功能安全的要求,目前集成式制動系統(tǒng)的電子駐車功能依托雙mcu控制單元,從而具有冗余備份功能。雙mcu控制單元包含兩路mcu(以下稱為主mcu和輔mcu),主mcu具有電子駐車功能和其他制動功能,而輔mcu只具備電子駐車功能。后期主輔mcu任意有一路失效,也能保證電子駐車功能不失效。
2、因為集成式制動系統(tǒng)具有主、輔mcu,在軟件更新時一般需對雙mcu固件進行更新。傳統(tǒng)的做法是依托車輛can總線,規(guī)定兩套診斷id,分別對主、輔mcu進行更新。這種做法一般需要車輛主機廠針對制動系統(tǒng)開發(fā)兩套上位機軟件,繁瑣耗時;同時因為輔mcu的flash區(qū)域(非易失性存儲區(qū)域)一般較小,不支持a、b分區(qū)。一旦刷寫中途上位機斷電,則不支持應(yīng)用程序回滾,需要上位機重新刷寫才能工作。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的是提供基于spi通訊的制動系統(tǒng)雙mcu固件升級方法和系統(tǒng),依托車輛can總線,采用一套上位機和診斷id,依托主輔mcu之間的spi通訊進行輔mcu的軟件更新,同時使用主mcu的flash區(qū)域進行輔mcu的應(yīng)用程序備份,實現(xiàn)輔mcu應(yīng)用程序回滾的操作,保證上位機刷寫失敗時的車輛安全,高效精簡,并且兼容單mcu的診斷刷寫系統(tǒng)。
2、為實現(xiàn)上述目的,本發(fā)明提供了基于spi通訊的制動系統(tǒng)雙mcu固件升級方法,包括以下步驟:
3、s1、在主mcu的flash區(qū)域建立四個分區(qū)a、b、a1、b1,a分區(qū)和b分區(qū)分別作為主mcu的a分區(qū)和b分區(qū),a1和b1分區(qū)分別作為輔mcu的a1分區(qū)和b1分區(qū);
4、s2、用刷寫器在主mcu和輔mcu的對應(yīng)flash區(qū)域刷寫初始應(yīng)用程序,在主mcu的a分區(qū)刷寫初始的主mcu應(yīng)用程序,在主mcu的a1分區(qū)和輔mcu自身的flash區(qū)域刷寫初始的輔mcu應(yīng)用程序;
5、s3、預(yù)編程做刷寫前的can網(wǎng)絡(luò)準(zhǔn)備;
6、s4、將主mcu和輔mcu的應(yīng)用軟件融合成一個更新包,通過地址區(qū)別主mcu和輔mcu的固件區(qū)域,上位機將閃存驅(qū)動flashdriver傳輸至主mcu的ram區(qū)域,同時利用spi通訊同步傳輸至輔mcu的ram區(qū)域;
7、s5、擦除主mcu當(dāng)前b區(qū)域的應(yīng)用程序、輔mcu備份b1區(qū)域的應(yīng)用程序以及輔mcu自身flash區(qū)域的應(yīng)用程序;
8、s6、將主mcu應(yīng)用軟件傳輸至主mcu的b區(qū)域;
9、s7、將輔mcu的應(yīng)用軟件傳輸至主mcu的b1區(qū)域,在傳輸至b1區(qū)域的同時,利用spi通訊同步傳輸輔mcu應(yīng)用軟件至輔mcu自身的flash區(qū)域;
10、s8、后編程恢復(fù)整車can網(wǎng)絡(luò)及記錄診斷故障碼功能;
11、s9、主mcu重啟跳轉(zhuǎn)至自身b區(qū)域運行應(yīng)用程序,輔mcu重啟運行自身flash區(qū)域應(yīng)用程序,主mcu的b1區(qū)域同樣更新完畢,用于下次刷寫失敗時輔mcu的回滾刷寫。
12、優(yōu)選的,在步驟s2中,主mcu運行時通過自身引導(dǎo)加載程序bootloader跳轉(zhuǎn)至a分區(qū)的應(yīng)用程序運行,輔mcu運行自身flash區(qū)域的應(yīng)用程序。
13、優(yōu)選的,所述spi通訊機制用于傳輸flashdriver和輔mcu應(yīng)用程序,當(dāng)spi數(shù)據(jù)傳輸時,將所述spi數(shù)據(jù)封裝成更大的封裝數(shù)據(jù),所述封裝數(shù)據(jù)由標(biāo)識組、crc校驗碼和spi數(shù)據(jù)構(gòu)成,所述標(biāo)識組用來確保數(shù)據(jù)傳輸?shù)倪B續(xù)性,所述crc校驗碼用來確保數(shù)據(jù)傳輸?shù)耐暾裕舾纱蝧pi通訊組成一個數(shù)據(jù)包,接受或發(fā)送一個完整的所述數(shù)據(jù)包為一次數(shù)據(jù)交換。
14、優(yōu)選的,所述標(biāo)識組包括正常應(yīng)用程序交互標(biāo)識符和程序刷寫標(biāo)識符,分別用于區(qū)分spi通信幀類別和確保數(shù)據(jù)的連續(xù)性識別。
15、優(yōu)選的,所述crc校驗碼在主mcu和輔mcu之間規(guī)定相同的crc校驗算法,所述crc校驗算法預(yù)先定義一個數(shù)組,使用接收到的所述spi數(shù)據(jù)與所述預(yù)先定義的數(shù)組中與所述標(biāo)識符位置對應(yīng)的數(shù)據(jù)進行相關(guān)運算,并確保輸出與所述crc校驗碼長度相同的計算所得校驗碼,將計算所得校驗碼與所述crc校驗碼進行比較,若校驗碼相同,使用此幀傳輸?shù)臄?shù)據(jù),否則判定為無效。
16、優(yōu)選的,所述數(shù)據(jù)包傳輸刷寫數(shù)據(jù),在刷寫傳輸時,所述數(shù)據(jù)包分為指令字節(jié)和預(yù)留字節(jié),所述指令字節(jié)將主mcu收到的上位機的刷寫指令完整地傳遞給輔mcu,所述指令字節(jié)負責(zé)傳輸診斷id和can標(biāo)準(zhǔn)幀的數(shù)據(jù)場內(nèi)容,輔mcu接收到所述數(shù)據(jù)包,內(nèi)部解析完成處理后,再次通過spi數(shù)據(jù)包的形式將符合主機廠刷寫規(guī)范的can診斷幀反饋給主mcu,主mcu解析完成后,再通過can總線反饋給上位機,完成一次刷寫過程中的診斷請求-反饋操作,重復(fù)上述過程,直至整個刷寫流程完畢。
17、優(yōu)選的,所述回滾刷寫用于在刷寫過程中上位機交互因意外突然中斷情況下,利用主mcu進行的輔mcu回滾刷寫,主mcu的bootloader中設(shè)置輔mcu刷寫失敗標(biāo)志位,在傳輸數(shù)據(jù)時發(fā)生上位機意外斷電等情況時,此時制動系統(tǒng)仍在通電,尚未進行重啟操作,將輔mcu刷寫失敗標(biāo)志位置位,此時主mcu的bootloader自主使用被封存在主mcu的flash區(qū)域的輔mcu應(yīng)用程序進行回滾刷新,此時spi通訊機制和刷寫流程與正常使用上位機刷寫通訊時相同,等待回滾刷新完畢后,主mcu和輔mcu自動復(fù)位,運行刷寫后的程序。
18、基于spi通訊的制動系統(tǒng)雙mcu固件升級系統(tǒng),包括刷寫器、上位機、車輛can總線、主mcu和輔mcu;
19、刷寫器,用于在主mcu和輔mcu的對應(yīng)flash區(qū)域刷寫初始應(yīng)用程序;
20、主mcu,用于刷寫自身flash區(qū)域的應(yīng)用程序、備份輔mcu的flash區(qū)域的應(yīng)用程序以及通過spi通訊和輔mcu同步傳輸數(shù)據(jù);
21、輔mcu,用于通過spi通訊和主mcu之間同步傳輸數(shù)據(jù);
22、上位機,用于執(zhí)行刷寫流程,監(jiān)測刷寫過程;
23、車輛can總線,用于連接上位機和主mcu,確保主mcu與上位機之間的數(shù)據(jù)傳輸。
24、因此,本發(fā)明采用上述基于spi通訊的制動系統(tǒng)雙mcu固件升級方法和系統(tǒng),實現(xiàn)了依托車輛can總線,采用一套上位機和診斷id,依托主輔mcu之間的spi通訊進行輔mcu的軟件更新,同時使用主mcu的flash區(qū)域進行輔mcu的應(yīng)用程序備份,實現(xiàn)輔mcu應(yīng)用程序回滾的操作,保證上位機刷寫失敗時的車輛安全,高效精簡,并且兼容單mcu的診斷刷寫系統(tǒng)。
25、本發(fā)明具有以下有益效果:
26、1、只需要一套上位機和診斷id,相比于傳統(tǒng)的雙mcu診斷刷寫系統(tǒng)需要兩套上位機和診斷id,更加高效精簡,同時也能夠兼容單mcu的診斷刷寫系統(tǒng)。
27、2、實現(xiàn)了輔mcu應(yīng)用程序回滾的操作,保證上位機刷寫失敗時的車輛安全。