国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于LabVIEW實現(xiàn)Flash Bootloader刷寫方法的研究

2017-09-04 19:08:34曾宇文
科技視界 2017年9期

曾宇文

【摘 要】目前現(xiàn)有的ECU軟件刷寫方法有PE刷寫和Flash Bootloader刷寫兩種,且Flash Bootloader是主流的方法;本文從Flash Bootloader的角度闡述了利用普通USB CAN工具基于LabVIEW軟件如何實現(xiàn)ECU刷寫的方法,同時更好的熟悉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ǎn)品迭代更新速度的加快,ECU的開發(fā)周期也要跟隨著整車開發(fā)周期縮短。從而ECU的軟件更新也要越來越快,主機廠也漸漸的使用自身制定的Flash Bootloader規(guī)范要求供應商或自主開發(fā)的電子零部件按照自己的規(guī)范編程軟件,以使主機廠自己也可對車輛ECU刷寫軟件,提高工作效率,減少供應商的出差成本,縮短整車開發(fā)周期。

1 Flash Bootloader介紹

Flash Bootloader就是一種通過CAN總線診斷服務(wù)來實現(xiàn)刷寫ECU軟件的引導程序。主要應用于研發(fā)、生產(chǎn)、以及售后服務(wù)當中,由硬件設(shè)備相關(guān)的CAN驅(qū)動層、實現(xiàn)ISO15765-2協(xié)議的傳輸層、實現(xiàn)所有下載相關(guān)的診斷服務(wù)層(符合ISO 14229協(xié)議)、Bootloader、用于安全訪問的模塊、Flash驅(qū)動數(shù)據(jù)以及應用下載數(shù)據(jù)組成。

2 USB CAN工具以及LabVIEW軟件的介紹

1)USB CAN工具成本低,體積小巧,即插即用,符合CAN2.0A/B 規(guī)范,支持 5Kbps~1Mbps 之間的任意波特率,并支持LabVIEW軟件進行二次開發(fā),能夠滿足各種應用開發(fā)需求,為工業(yè)通訊 CAN 網(wǎng)絡(luò)提供了可靠性、高效率的解決方案,被開發(fā)者廣泛使用。本文就是基于這些工具作為硬件接口進行的開發(fā)。

2)LabVIEW軟件是一種程序開發(fā)環(huán)境,類似于C/C++和BASIC開發(fā)環(huán)境,但是LabVIEW與其他計算機語言的顯著區(qū)別是:其他計算機語言都是采用基于文本的語言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產(chǎn)生的程序是容易理解的框圖和流程圖的形式。

3 刷寫程序設(shè)計

設(shè)計開始之初,首先需要把整體的設(shè)計思路構(gòu)思出來,才能快速高效的把程序?qū)懗鰜怼?/p>

3.1 USB CAN設(shè)備驅(qū)動集成

把各個USB CAN工具的動態(tài)函數(shù)庫DLL按照Open Device.vi、Send CAN data.vi、Receive CAN data.vi、Close Device.vi封庫起來,保證LabVIEW軟件中CAN驅(qū)動底層的可靠性,穩(wěn)定性。

1)Open Device.vi:用于初始化程序時打開對應的USB CAN設(shè)備

2)Send CAN Data.vi:用于配置文件(Flash Drive,應用數(shù)據(jù)APP)以及由診斷報文形成的FBL數(shù)據(jù)流發(fā)送給ECU,以達到刷寫目的

3)Receive CAN data.vi:用于接收ECU報文,用于判斷下一幀F(xiàn)BL數(shù)據(jù)流的發(fā)送和整體刷寫進度條的確認

4)Close Device.vi:用于關(guān)閉當前使用的USB CAN設(shè)備,以便下次能正常打開運行設(shè)備

3.2 FBL刷寫數(shù)據(jù)流

根據(jù)軟件刷寫的流程規(guī)范把FBL的數(shù)據(jù)按順序排列,形成FBL數(shù)據(jù)流,數(shù)據(jù)流就是一連串的CAN總線診斷報文。

3.3 FBL刷寫數(shù)據(jù)流入發(fā)送隊列

創(chuàng)建用于臨時存放的FBL數(shù)據(jù)流的隊列,利用LabVIEW隊列的生產(chǎn)者-消費者模式,有時序的把需要發(fā)送的診斷服務(wù)報文、Flash驅(qū)動文件和應用數(shù)據(jù)文件按照規(guī)范處理成可CAN診斷報文,并按照FBL刷寫數(shù)據(jù)流的先后順序封裝入列到發(fā)送隊列中。

3.4 FBL刷寫數(shù)據(jù)流出發(fā)送隊列

把已經(jīng)入發(fā)送隊列的FBL刷寫數(shù)據(jù)流按時序出發(fā)送列到Send CAN Data.vi中,時序是根據(jù)Receive CAN data.vi發(fā)送出來的診斷響應報文來判斷的,以防FBL刷寫數(shù)據(jù)流發(fā)送過快,被刷ECU來不及響應造成刷寫失敗。

3.5 Flash驅(qū)動文件與應用數(shù)據(jù)文件解析

軟件刷寫最為關(guān)鍵的就是要把Flash驅(qū)動文件與應用數(shù)據(jù)文件寫入到ECU中去,而Flash文件與應用文件都是十六進制文本,同時經(jīng)過軟件組同事加密,使用文本打開是一連串長長的16進制,同時只能以CAN總線診斷報文形式寫入ECU,所以需要按照規(guī)范解析,解析的過程就是用LabVIEW軟件把文本的16進制進行折分組合形成CAN報文的過程,同時需要校驗提取數(shù)據(jù)的完整性和正確性。

3.6 安全算法DLL的制作

在下載Flash驅(qū)動文件之前需要使ECU進行安全訪問模式,因為各個ECU出于安全考慮都會設(shè)置安全訪問算法,以防被惡意程序篡改軟件,對車輛來說是非常致命的。考慮到本刷寫程序是支持多個ECU Flash Bootloader刷寫的工具,則制作了安全算法DLL接口,來對應不同的ECU安全算法。

3.7 報文呈現(xiàn)

由于整車總線上的存在有多個ECU節(jié)點,每個ECU節(jié)點都有很多CAN報文ID發(fā)出,為了防止程序處理時出現(xiàn)檢索不到正在進行刷寫ECU的診斷響應報文ID,需要在軟件里把其它報文ID過濾掉,只接收響應ID。同時為了更好的界面顯示,把診斷請求ID與診斷響應ID按照先后順序排列,相同ID只顯示最新狀態(tài),并統(tǒng)計ID的出現(xiàn)次數(shù)。

3.8 刷寫進度顯示

刷寫進度條非常直觀的體現(xiàn)了刷寫的速度與完成度,所以也是設(shè)計的重點之一,程序編序時的思路是把診斷服務(wù)的總數(shù)與診斷肯定響應的總計數(shù)器相比得到刷寫進度百分比,當100%時結(jié)果指示燈亮綠燈,F(xiàn)lash Bootloader刷寫成功,當刷寫過程中診斷響應ID回復否定響應或者超時不回復,結(jié)果指示燈亮紅燈,F(xiàn)BL刷寫失敗。

4 驗證總結(jié)

按照思路設(shè)計,并經(jīng)過多次的調(diào)試優(yōu)化后,程序終于完成。同時在臺架與整車上對自主開發(fā)的不同ECU進行多次實驗驗證,并在刷寫過程中故意制造干擾,經(jīng)過100多次不完全統(tǒng)計,成功率高達98%。從而驗證了基于LabVIEW設(shè)計刷寫程序的可行性與穩(wěn)定性。

【參考文獻】

[1]阮奇楨.我和LabVIEW:一個NI工程師的十年編程經(jīng)驗[M].北京:北京航空航天大學出版社,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ù)的應用[S].

[責任編輯:朱麗娜]endprint

富川| 孝昌县| 鹤庆县| 渝北区| 金寨县| 张掖市| 舒兰市| 文昌市| 达尔| 全椒县| 陆丰市| 从江县| 雷山县| 凭祥市| 莱阳市| 上杭县| 安吉县| 克什克腾旗| 扶绥县| 诏安县| 河北省| 贺州市| 连山| 栾川县| 祁连县| 竹山县| 张家界市| 泌阳县| 丹阳市| 宜良县| 准格尔旗| 当阳市| 德格县| 左云县| 信宜市| 永川市| 遵义市| 石棉县| 延津县| 唐海县| 宣汉县|