席剛剛,解友華,曾曉松,解光耀,張圣洋,單淼剛
(1.201821 上海市 博世華域轉(zhuǎn)向系統(tǒng)有限公司;2.201800 湖北省 武漢市 博世華域轉(zhuǎn)向系統(tǒng)(武漢)有限公司)
智能駕駛發(fā)展要求EPS 的失效率達(dá)到100 fit(109h 內(nèi)出現(xiàn)1 次故障為1 fit)及以上,為降低單點(diǎn)失效率,EPS 系統(tǒng)設(shè)計(jì)了雙冗余結(jié)構(gòu)[1](如圖1 所示)。2 個(gè)系統(tǒng)之間通過IPC(Inter-Processor Communication)進(jìn)行同步通信,實(shí)現(xiàn)驅(qū)動(dòng)扭矩協(xié)調(diào)分配和關(guān)鍵信息共享。在系統(tǒng)設(shè)計(jì)中,當(dāng)2 個(gè)系統(tǒng)之間IPC 通信丟失后,系統(tǒng)會(huì)切換至物理最大半助力狀態(tài),從而避免實(shí)際助力輸出超出請(qǐng)求的輸出水平而導(dǎo)致危險(xiǎn)。更為嚴(yán)重的是系統(tǒng)無法在本駕駛循環(huán)恢復(fù)到正常狀態(tài),該設(shè)計(jì)方案對(duì)刷新本身產(chǎn)生了嚴(yán)重影響,尤其是當(dāng)終端客戶在進(jìn)行OTA 刷新后發(fā)現(xiàn)系統(tǒng)無助力,進(jìn)而產(chǎn)生恐慌。
圖1 冗余EPS 系統(tǒng)結(jié)構(gòu)Fig.1 Redundant EPS system structure
一種比較簡(jiǎn)單的解決方案是主從刷新,通過EPS1 刷新EPS2,此時(shí)EPS1 除了實(shí)現(xiàn)EPS1 本身的刷新功能外,在對(duì)EPS2 進(jìn)行刷新時(shí)作為診斷儀對(duì)EPS2 進(jìn)行數(shù)據(jù)傳輸,在EPS2 刷新完畢后對(duì)EPS1 本身和EPS2 進(jìn)行同步重啟,從而解決不同步問題。但該方法具有刷新時(shí)間長(zhǎng)、實(shí)現(xiàn)邏輯復(fù)雜、刷新工具復(fù)雜等缺點(diǎn)。
基于以上刷新背景,對(duì)比其他方案的優(yōu)缺點(diǎn),再結(jié)合以往對(duì)單系統(tǒng)刷新的方法及雙系統(tǒng)在總線的可見性,本文設(shè)計(jì)了一種單獨(dú)刷新的實(shí)現(xiàn)方案,能夠?qū)崿F(xiàn)快捷刷新,并保證刷新完成后無系統(tǒng)異常情況,保證EPS 系統(tǒng)正確的助力輸出。
如圖2 所示,刷新過程一般分為3 個(gè)階段:刷新前準(zhǔn)備、刷新過程和刷新后處理[2-5]。
圖2 一般刷新過程Fig.2 Generic flashing process
(1)在刷新準(zhǔn)備階段,會(huì)檢查整車的刷新條件(如對(duì)EPS 刷新而言,車速必須小于設(shè)定值),之后會(huì)通過28 服務(wù)關(guān)閉普通通信和DTC 檢測(cè)。除此之外,一般會(huì)涉及刷新安全認(rèn)證。當(dāng)這些所有步驟均成功完成后,軟件會(huì)跳轉(zhuǎn)到刷新模式。
(2)刷新過程中,程序運(yùn)行環(huán)境與正常運(yùn)行模式做對(duì)應(yīng),主要包含對(duì)設(shè)定區(qū)域的擦除、解析總線數(shù)據(jù)并做校驗(yàn)。校驗(yàn)通過后,調(diào)用相關(guān)的Flash 驅(qū)動(dòng),完成相應(yīng)區(qū)域的數(shù)據(jù)刷新。數(shù)據(jù)刷新完畢后,一般還會(huì)回讀設(shè)定刷新區(qū)域的數(shù)據(jù)進(jìn)行完整性校驗(yàn),以保證數(shù)據(jù)被正確刷新成功后才會(huì)退出刷新模式。
(3)成功退出刷新模式后,一般會(huì)進(jìn)行相關(guān)的后勤數(shù)據(jù)更新,如刷新時(shí)間和刷新診斷相關(guān)信息等。
上述刷新過程比較耗時(shí),主要體現(xiàn)在2 個(gè)方面:一是擦除對(duì)應(yīng)的flash 和寫入新數(shù)據(jù)本身比較耗時(shí);二是目前越來越多的整車廠都集成了刷新的正當(dāng)性校驗(yàn),即保證刷新數(shù)據(jù)經(jīng)過整車廠授權(quán)且其本身并未被篡改,這其中會(huì)涉及相關(guān)的數(shù)字簽名和哈希函數(shù)[6]計(jì)算或校驗(yàn),其計(jì)算過程本身比較耗時(shí)。此外,現(xiàn)階段的EPS 需要實(shí)現(xiàn)的功能較多,需要傳輸?shù)臄?shù)據(jù)量大,導(dǎo)致數(shù)據(jù)傳輸需要一定時(shí)間,如果等待給EPS1 傳輸完數(shù)據(jù)后再進(jìn)行EPS2 數(shù)據(jù)傳輸會(huì)占用大量時(shí)間,包括數(shù)據(jù)傳輸時(shí)間、等待EPS 響應(yīng)的時(shí)間等。
因此,在刷新前準(zhǔn)備階段要求上位機(jī)對(duì)部分共性的診斷服務(wù)進(jìn)行功能尋址請(qǐng)求,并以較小的時(shí)間間隔請(qǐng)求EPS1 和EPS2 分別進(jìn)入boot 模式。刷新過程中穿插傳送EPS1 和EPS2 需要寫入的數(shù)據(jù),進(jìn)而減少總的刷新時(shí)間。最后在刷新后處理階段寫入后勤數(shù)據(jù)時(shí)同樣穿插進(jìn)行,能夠極大縮短任務(wù)處理的等待時(shí)間。
結(jié)合上述刷新過程,考慮到在刷新模式下EPS本身并不需要支持其相應(yīng)的應(yīng)用功能,在此情況下,如果能確保EPS1 和EPS2 在刷新過程完畢后同步進(jìn)入到APP 模式(正常工作模式),則可以解決二者不同步導(dǎo)致的系統(tǒng)狀態(tài)異常。實(shí)際中,以UDS 刷新為例,在上位機(jī)獲知各個(gè)ECU 已經(jīng)刷新完畢后(如獲得了ECU 針對(duì)37 服務(wù)給出的肯定響應(yīng)),上位機(jī)一般會(huì)發(fā)出10 01 指令通過各ECU退出刷新模式,進(jìn)而進(jìn)入APP 模式。需要指出的是,對(duì)EPS 而言,EPS1 和EPS2 本身初始化過程并不完全相同,其初始化時(shí)間也不可能完全相同,在底層驅(qū)動(dòng)軟件中,會(huì)對(duì)二者的初始化過程有容錯(cuò)處理,即二者允許一定的時(shí)間差,這對(duì)后續(xù)的同步處理機(jī)制比較關(guān)鍵。
在不同的軟件刷寫場(chǎng)景下,特別是在整車產(chǎn)線的刷新場(chǎng)合,為了降低通信異常,在刷新階段結(jié)束后,一般盡量使得各個(gè)被刷新的EPS 同步進(jìn)入正常模式,此時(shí)上位機(jī)的退出指令一般采用功能尋址的方式,確保所連接總線的各個(gè)ECU 均可以收到,進(jìn)而同步進(jìn)入到工作模式。以下是幾種不同的刷寫情況,需要考慮EPS1 和EPS2 的同步情況:
(1)由圖1 可知EPS1 和EPS2 均對(duì)刷新診斷儀可見,即診斷儀在刷新完畢后的退出指令二者均可以收到,當(dāng)正常完成刷新后,EPS1 和EPS2 同步進(jìn)入APP 模式,系統(tǒng)在不需要進(jìn)行額外操作(如整車休眠)的情況下恢復(fù)到正常系統(tǒng)狀態(tài)和助力狀態(tài),此時(shí)自然滿足客戶產(chǎn)線或售后刷新,特別是OTA 的應(yīng)用場(chǎng)景。
(2)假定EPS1 和EPS2 在第一次刷新過程中有失敗而進(jìn)行重新刷新,此時(shí)分2 種情況,一是EPS1 和EPS2 均刷新失敗了,二者均需要重新刷新,從同步的角度與第一次刷新情況相同;二是只有EPS1 或EPS2 刷新失敗了,重新刷新的過程中,刷新診斷儀一般情況下只會(huì)對(duì)失敗的EPS 進(jìn)行刷新,刷新完畢后,上位機(jī)仍然會(huì)發(fā)送10 01 指令,理論上EPS1 和EPS2 均可以收到,此時(shí)之前刷新成功的EPS 可以主動(dòng)進(jìn)行reset,從而與處于Boot模式下EPS 進(jìn)行同步。
如圖3 所示,在軟件策略中有一個(gè)決定EPS系統(tǒng)是否進(jìn)入APP模式或Boot模式的軟件模塊——Boot Manager,一般情況下此部分代碼在程序啟動(dòng)后首先執(zhí)行來判斷系統(tǒng)是否應(yīng)進(jìn)入APP 模式或Boot 模式。
圖3 Boot Manager 基本邏輯Fig.3 Boot Manager basic workflow
如圖4 所示,Boot Manager 中對(duì)APP 完整性校驗(yàn)和刷新請(qǐng)求檢查二者可以不分先后。一般的刷新過程即系統(tǒng)軟件在APP 模式下,收到刷新請(qǐng)求并確認(rèn)后,置位相應(yīng)的標(biāo)志位觸發(fā)程序重啟,Boot Manager 再檢測(cè)到這些標(biāo)志位后,會(huì)進(jìn)入刷新模式。
圖4 部分刷新跳轉(zhuǎn)模式Fig.4 Transition mode of partly flashed
因此,為保證在刷寫結(jié)束后EPS1 和EPS2 能夠?qū)崿F(xiàn)同步,刷寫診斷儀的進(jìn)入APP 模式指令要求通過功能尋址請(qǐng)求。
可見上述同步過程以上位機(jī)的刷新結(jié)束命令為起點(diǎn),處于APP 模式的EPS1 或EPS2 主動(dòng)重啟以達(dá)到同步的目的。其中,嚴(yán)格設(shè)定處于APP 模式下的EPS1 或EPS2 進(jìn)行重啟前提條件是優(yōu)化的核心,以減少對(duì)其正常功能的影響。圖5 所示為EPS 重啟功能的設(shè)定條件,包含禁用非診斷通信、關(guān)閉DTC 記錄、相應(yīng)的安全認(rèn)證、不同的診斷儀地址等。在滿足圖5 所有的條件之后調(diào)用HWLI_ShutdownTaskContainer 函數(shù),HWLib 軟件控制2 個(gè)ASIC 芯片進(jìn)行重啟。MCU(Micro-Controller Unit)芯片由ASIC 芯片供電,因此2 個(gè)MCU 同樣發(fā)生復(fù)位重啟,在初始化完成后由于CAN 收發(fā)器在持續(xù)接收總線信息,此時(shí)收發(fā)器通知ASIC 芯片工作并給MCU 芯片供電激活MCU 工作。在完成一系列重啟工作后,整個(gè)EPS 系統(tǒng)的2 個(gè)子系統(tǒng)保持在相同的模式下,此時(shí)系統(tǒng)狀態(tài)正常且能夠輸出期望的助力。
圖5 軟件重啟條件判定Fig.5 Software reset condition
在EPS 設(shè)計(jì)階段,定義了表1 所示的系統(tǒng)狀態(tài)。
表1 EPS 系統(tǒng)狀態(tài)定義Tab.1 Defination of EPS system state
在沒有前文同步機(jī)制的情況下,利用原始的刷寫步驟及EPS 軟件測(cè)試,對(duì)EPS2 進(jìn)行單獨(dú)刷寫后出現(xiàn)讀取故障,如圖6(a)所示。圖6(a)中EPS 從40 s 左右開始進(jìn)入Boot 刷新模式,142 s 時(shí)跳出Boot 模式,之后完成信息寫入。在167 s 時(shí)觀察EPS 的狀態(tài)和故障碼,ECU1 觸發(fā)了同步失調(diào)故障碼并且為當(dāng)前故障。EPS1 的系統(tǒng)狀態(tài)變量顯示為半助力狀態(tài),此時(shí)助力降級(jí)。用于觸發(fā)儀表顯示故障的標(biāo)志位也被置位,此時(shí)儀表顯示 “轉(zhuǎn)向助力減弱” 字樣,從而影響整車下線。在售后OTA應(yīng)用場(chǎng)景下,還可能會(huì)造成駕駛員恐慌。
圖6 2 種方案刷寫結(jié)果對(duì)比Fig.6 Comparison of the flashing results of two schemes
在集成了同步機(jī)制的新軟件中,重復(fù)原有的刷寫步驟,在EPS1 軟件不刷的情況下,只對(duì)EPS2進(jìn)行刷寫,結(jié)束后讀取故障如圖6(b)所示。軟件大概在65 s 時(shí)進(jìn)入Boot 刷新模式,158 s 左右跳出Boot 模式。隨后觀察ECU 的系統(tǒng)狀態(tài)和故障碼,發(fā)現(xiàn)ECU 當(dāng)前只有歷史故障碼(歷史同步超時(shí)),EPS1 和EPS2 均恢復(fù)到正常工作模式,觸發(fā)儀表亮燈標(biāo)志位也沒有置位??梢钥闯觯诓贿M(jìn)行額外重新上下電操作的情況下,系統(tǒng)恢復(fù)了正常。
結(jié)合實(shí)際項(xiàng)目,本文提出了一種針對(duì)雙ECU 冗余EPS 系統(tǒng)的單獨(dú)刷新方案。通過這種方案,最大限度地減少刷新時(shí)間,實(shí)測(cè)達(dá)到了客戶對(duì)刷新時(shí)間的要求;同時(shí)設(shè)計(jì)了一種有效的同步機(jī)制,保證了冗余系統(tǒng)的同步特性,刷新完畢后系統(tǒng)能自行恢復(fù)正常,在售后OTA 應(yīng)用場(chǎng)景下發(fā)揮重要作用。目前應(yīng)用項(xiàng)目已經(jīng)進(jìn)入批產(chǎn)狀態(tài),實(shí)際測(cè)試結(jié)果很好地證明該方案的可行性和可靠性。