曾宇文
【摘 要】目前現(xiàn)有的ECU軟件刷寫方法有PE刷寫和Flash Bootloader刷寫兩種,且Flash Bootloader是主流的方法;本文從Flash Bootloader的角度闡述了利用普通USB CAN工具基于LabVIEW軟件如何實(shí)現(xiàn)ECU刷寫的方法,同時(shí)更好的熟悉Flash Bootloader的流程。
【關(guān)鍵詞】Flash Bootloader;車載電控單元
【Abstract】Currently existing ECU brush method have PE parts and Flash Bootloader, and Flash Bootloader is the mainstream method; This paper describes that how to realize the ECU brush method by using ordinary USB CAN Device based on LabVIEW software from the perspective of?Flash Bootloader, at the same time, be familiar with the process of Flash Bootloader better.
【Key words】Flash Bootloader; ECU
0 引言
隨著汽車市場(chǎng)新產(chǎn)品迭代更新速度的加快,ECU的開發(fā)周期也要跟隨著整車開發(fā)周期縮短。從而ECU的軟件更新也要越來越快,主機(jī)廠也漸漸的使用自身制定的Flash Bootloader規(guī)范要求供應(yīng)商或自主開發(fā)的電子零部件按照自己的規(guī)范編程軟件,以使主機(jī)廠自己也可對(duì)車輛ECU刷寫軟件,提高工作效率,減少供應(yīng)商的出差成本,縮短整車開發(fā)周期。
1 Flash Bootloader介紹
Flash Bootloader就是一種通過CAN總線診斷服務(wù)來實(shí)現(xiàn)刷寫ECU軟件的引導(dǎo)程序。主要應(yīng)用于研發(fā)、生產(chǎn)、以及售后服務(wù)當(dāng)中,由硬件設(shè)備相關(guān)的CAN驅(qū)動(dòng)層、實(shí)現(xiàn)ISO15765-2協(xié)議的傳輸層、實(shí)現(xiàn)所有下載相關(guān)的診斷服務(wù)層(符合ISO 14229協(xié)議)、Bootloader、用于安全訪問的模塊、Flash驅(qū)動(dòng)數(shù)據(jù)以及應(yīng)用下載數(shù)據(jù)組成。
2 USB CAN工具以及LabVIEW軟件的介紹
1)USB CAN工具成本低,體積小巧,即插即用,符合CAN2.0A/B 規(guī)范,支持 5Kbps~1Mbps 之間的任意波特率,并支持LabVIEW軟件進(jìn)行二次開發(fā),能夠滿足各種應(yīng)用開發(fā)需求,為工業(yè)通訊 CAN 網(wǎng)絡(luò)提供了可靠性、高效率的解決方案,被開發(fā)者廣泛使用。本文就是基于這些工具作為硬件接口進(jìn)行的開發(fā)。
2)LabVIEW軟件是一種程序開發(fā)環(huán)境,類似于C/C++和BASIC開發(fā)環(huán)境,但是LabVIEW與其他計(jì)算機(jī)語言的顯著區(qū)別是:其他計(jì)算機(jī)語言都是采用基于文本的語言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產(chǎn)生的程序是容易理解的框圖和流程圖的形式。
3 刷寫程序設(shè)計(jì)
設(shè)計(jì)開始之初,首先需要把整體的設(shè)計(jì)思路構(gòu)思出來,才能快速高效的把程序?qū)懗鰜怼?/p>
3.1 USB CAN設(shè)備驅(qū)動(dòng)集成
把各個(gè)USB CAN工具的動(dòng)態(tài)函數(shù)庫DLL按照Open Device.vi、Send CAN data.vi、Receive CAN data.vi、Close Device.vi封庫起來,保證LabVIEW軟件中CAN驅(qū)動(dòng)底層的可靠性,穩(wěn)定性。
1)Open Device.vi:用于初始化程序時(shí)打開對(duì)應(yīng)的USB CAN設(shè)備
2)Send CAN Data.vi:用于配置文件(Flash Drive,應(yīng)用數(shù)據(jù)APP)以及由診斷報(bào)文形成的FBL數(shù)據(jù)流發(fā)送給ECU,以達(dá)到刷寫目的
3)Receive CAN data.vi:用于接收ECU報(bào)文,用于判斷下一幀F(xiàn)BL數(shù)據(jù)流的發(fā)送和整體刷寫進(jìn)度條的確認(rèn)
4)Close Device.vi:用于關(guān)閉當(dāng)前使用的USB CAN設(shè)備,以便下次能正常打開運(yùn)行設(shè)備
3.2 FBL刷寫數(shù)據(jù)流
根據(jù)軟件刷寫的流程規(guī)范把FBL的數(shù)據(jù)按順序排列,形成FBL數(shù)據(jù)流,數(shù)據(jù)流就是一連串的CAN總線診斷報(bào)文。
3.3 FBL刷寫數(shù)據(jù)流入發(fā)送隊(duì)列
創(chuàng)建用于臨時(shí)存放的FBL數(shù)據(jù)流的隊(duì)列,利用LabVIEW隊(duì)列的生產(chǎn)者-消費(fèi)者模式,有時(shí)序的把需要發(fā)送的診斷服務(wù)報(bào)文、Flash驅(qū)動(dòng)文件和應(yīng)用數(shù)據(jù)文件按照規(guī)范處理成可CAN診斷報(bào)文,并按照FBL刷寫數(shù)據(jù)流的先后順序封裝入列到發(fā)送隊(duì)列中。
3.4 FBL刷寫數(shù)據(jù)流出發(fā)送隊(duì)列
把已經(jīng)入發(fā)送隊(duì)列的FBL刷寫數(shù)據(jù)流按時(shí)序出發(fā)送列到Send CAN Data.vi中,時(shí)序是根據(jù)Receive CAN data.vi發(fā)送出來的診斷響應(yīng)報(bào)文來判斷的,以防FBL刷寫數(shù)據(jù)流發(fā)送過快,被刷ECU來不及響應(yīng)造成刷寫失敗。
3.5 Flash驅(qū)動(dòng)文件與應(yīng)用數(shù)據(jù)文件解析
軟件刷寫最為關(guān)鍵的就是要把Flash驅(qū)動(dòng)文件與應(yīng)用數(shù)據(jù)文件寫入到ECU中去,而Flash文件與應(yīng)用文件都是十六進(jìn)制文本,同時(shí)經(jīng)過軟件組同事加密,使用文本打開是一連串長(zhǎng)長(zhǎng)的16進(jìn)制,同時(shí)只能以CAN總線診斷報(bào)文形式寫入ECU,所以需要按照規(guī)范解析,解析的過程就是用LabVIEW軟件把文本的16進(jìn)制進(jìn)行折分組合形成CAN報(bào)文的過程,同時(shí)需要校驗(yàn)提取數(shù)據(jù)的完整性和正確性。
3.6 安全算法DLL的制作
在下載Flash驅(qū)動(dòng)文件之前需要使ECU進(jìn)行安全訪問模式,因?yàn)楦鱾€(gè)ECU出于安全考慮都會(huì)設(shè)置安全訪問算法,以防被惡意程序篡改軟件,對(duì)車輛來說是非常致命的??紤]到本刷寫程序是支持多個(gè)ECU Flash Bootloader刷寫的工具,則制作了安全算法DLL接口,來對(duì)應(yīng)不同的ECU安全算法。
3.7 報(bào)文呈現(xiàn)
由于整車總線上的存在有多個(gè)ECU節(jié)點(diǎn),每個(gè)ECU節(jié)點(diǎn)都有很多CAN報(bào)文ID發(fā)出,為了防止程序處理時(shí)出現(xiàn)檢索不到正在進(jìn)行刷寫ECU的診斷響應(yīng)報(bào)文ID,需要在軟件里把其它報(bào)文ID過濾掉,只接收響應(yīng)ID。同時(shí)為了更好的界面顯示,把診斷請(qǐng)求ID與診斷響應(yīng)ID按照先后順序排列,相同ID只顯示最新狀態(tài),并統(tǒng)計(jì)ID的出現(xiàn)次數(shù)。
3.8 刷寫進(jìn)度顯示
刷寫進(jìn)度條非常直觀的體現(xiàn)了刷寫的速度與完成度,所以也是設(shè)計(jì)的重點(diǎn)之一,程序編序時(shí)的思路是把診斷服務(wù)的總數(shù)與診斷肯定響應(yīng)的總計(jì)數(shù)器相比得到刷寫進(jìn)度百分比,當(dāng)100%時(shí)結(jié)果指示燈亮綠燈,F(xiàn)lash Bootloader刷寫成功,當(dāng)刷寫過程中診斷響應(yīng)ID回復(fù)否定響應(yīng)或者超時(shí)不回復(fù),結(jié)果指示燈亮紅燈,F(xiàn)BL刷寫失敗。
4 驗(yàn)證總結(jié)
按照思路設(shè)計(jì),并經(jīng)過多次的調(diào)試優(yōu)化后,程序終于完成。同時(shí)在臺(tái)架與整車上對(duì)自主開發(fā)的不同ECU進(jìn)行多次實(shí)驗(yàn)驗(yàn)證,并在刷寫過程中故意制造干擾,經(jīng)過100多次不完全統(tǒng)計(jì),成功率高達(dá)98%。從而驗(yàn)證了基于LabVIEW設(shè)計(jì)刷寫程序的可行性與穩(wěn)定性。
【參考文獻(xiàn)】
[1]阮奇楨.我和LabVIEW:一個(gè)NI工程師的十年編程經(jīng)驗(yàn)[M].北京:北京航空航天大學(xué)出版社,2012.
[2]ISO 14229,統(tǒng)一診斷服務(wù)--規(guī)范和需求[S].
[3]ISO 15765-2,基于控制器局域網(wǎng)的診斷--第2部分:網(wǎng)絡(luò)層服務(wù)[S].
[4]ISO 15765-3,基于控制器局域網(wǎng)的診斷--第3部分:統(tǒng)一診斷服務(wù)的應(yīng)用[S].
[責(zé)任編輯:朱麗娜]endprint