怎樣對(duì)ECU進(jìn)行固件升級(jí)
在汽車電子開發(fā)、測(cè)試和售后診斷中,我們經(jīng)常需要對(duì)ECU進(jìn)行固件升級(jí),即“刷新”。
當(dāng)前市面上的主流方案是通過(guò)硬編碼的方式實(shí)現(xiàn),但這種方式的缺點(diǎn)也顯而易見:只有懂編程的工程師才能做,一般工程師無(wú)法勝任;當(dāng)需要修改刷新流程的時(shí)候,刷新工具必須重新編譯生成軟件。這對(duì)于刷新工具的維護(hù)極為不便。
針對(duì)這一痛點(diǎn),勤壯提供了一套通過(guò)腳本實(shí)現(xiàn)的方案。由于采用圖形化配置界面,任何類型的工程師都可以輕松勝任;當(dāng)需要修改的時(shí)候也只需修改腳本本身,無(wú)需重新編譯生成整個(gè)軟件,相比其他方案更方便、更靈活、更容易上手。
接下來(lái)我們按照步驟一一解析:
1.如何配置腳本?
首先我們有必要了解下兩個(gè)專有名詞:刷新規(guī)范和QzTitan。
刷新規(guī)范
刷新規(guī)范一般由整車廠制定,詳細(xì)定義了刷新的具體步驟。一般分為刷新前、刷新中、刷新后。
刷新前:切換會(huì)話、安全訪問(wèn)等;
刷新中:34/36/37服務(wù)執(zhí)行具體刷新動(dòng)作;
刷新后:完整性校驗(yàn)、兼容性校驗(yàn)等。
QzTItan
QzTItan是一款簡(jiǎn)單易用的、圖形化的、綜合流程配置工具,文件后綴為ttn和ttb。
QzTItan可用于各種功能的開發(fā),如刷新、IMMO等,同時(shí)可用于基礎(chǔ)軟件測(cè)試用例的開發(fā),如:診斷測(cè)試用例、NM測(cè)試用例等,能夠滿足絕大多數(shù)汽車電子開發(fā)中的開發(fā)和測(cè)試場(chǎng)景。
由于使用圖形化的配置方式,QzTItan相比于使用硬編碼具有更強(qiáng)的靈活性,使得非軟件開發(fā)人員也能輕松使用。
流程由語(yǔ)句和語(yǔ)句之間的關(guān)系組成。語(yǔ)句采用基礎(chǔ)加擴(kuò)展的基本方式,軟件預(yù)定義了一些常用的語(yǔ)句,如:If、delay、assign、math、service、sendmsg。若預(yù)定義語(yǔ)句無(wú)法滿足要求,可以通過(guò)usercall機(jī)制調(diào)用外部自定義函數(shù)。
由于腳本文件是二進(jìn)制的,所以可以在各種軟硬件平臺(tái)上使用。軟件平臺(tái)包括:windows、linux、無(wú)操作系統(tǒng)環(huán)境,硬件平臺(tái)包括:PC、MCU等。
如
用Titan實(shí)現(xiàn)刷新規(guī)范
通過(guò)不同語(yǔ)句的組合形成一個(gè)刷新流程,下面以1001為例來(lái)說(shuō)明如何配置服務(wù):
1.從左側(cè)選中10服務(wù);
2.拖放到中間的畫布;
3.在右側(cè)屬性窗口配置該服務(wù)的屬性。
注意:1.什么是FastSA?SA一般由兩條服務(wù)組成:RequestSeed和ResponseKey,F(xiàn)astSA指的就是這兩條服務(wù)的組合。系統(tǒng)會(huì)自動(dòng)根據(jù)配置調(diào)用SADLL,計(jì)算Key。2. 添加語(yǔ)句的方式:拖放。
ttn與ttb的關(guān)系
ttn是ttb的源文件,ttn可生成ttb,ttb不可以反向生成ttn,所以需要注意保存ttn。
2.如何執(zhí)行腳本?
我們首先會(huì)用到QzSaturn這個(gè)工具,QzSaturn是一款總線和診斷測(cè)試工具,是整個(gè)工具鏈中的主軟件,文件后綴為:*.stn。
QzSaturn的主要功能包括:報(bào)文監(jiān)控、圖形監(jiān)控、總線記錄與回放、全車診斷、工程面板、流程、診斷、刷新、網(wǎng)報(bào)報(bào)文發(fā)送等,覆蓋了汽車電子開發(fā)與測(cè)試中最常用的功能。刷新是其功能之一。
刷新步驟:
1.導(dǎo)入ttb文件
將配置完成的腳本導(dǎo)入到QzSaturn刷新子窗口中。
2.導(dǎo)入刷新數(shù)據(jù)文件
指的是要刷的數(shù)據(jù)文件,支持HEX、S19和BIN。
3.基本參數(shù)的配置
對(duì)ECU基本參數(shù)進(jìn)行配置,如:RequestID、ResponseID。
4.SA算法庫(kù)的導(dǎo)入
刷新前一般需要解鎖SA,解鎖算法由SA算法庫(kù)實(shí)現(xiàn)。在windows平臺(tái)的文件后綴為*.dll,DLL本身的制作方法見下文。
5.CRC配置
選擇相應(yīng)的CRC類型及相關(guān)信息,并點(diǎn)擊按鈕計(jì)算CRC。
6.開始刷新。
如何制作SA算法庫(kù)?
本質(zhì)是制作一個(gè)特定接口的動(dòng)態(tài)鏈接庫(kù)*.dll。
制作工具:Visual Studio 2015
開發(fā)語(yǔ)言:C++/C++
接口函數(shù):extern “C” __declspec(dllexport) UINT32 saturn_key_generate(UINT8* p_seed,
UINT32 seed_length,
UINT32 level,
UINT8* param,
UINT8* p_key,
UINT32 key_length,
UINT32& key_size)
參數(shù)說(shuō)明:
P_seed:Seed
Seed_length:Seed長(zhǎng)度,一般為4;
Level:SA level.以2701為例,應(yīng)填01
Param:用戶自定義
P_key:Key Buffer,用于存儲(chǔ)函數(shù)返回的Key
Key_length:Key Buffer的指定長(zhǎng)度,
Key_size:Key實(shí)際長(zhǎng)度,一般跟Seed長(zhǎng)度一致
兩種方式:源碼封裝方式、二次封裝方式。
源碼封裝方式:直接在圖示位置寫代碼實(shí)現(xiàn)SA算法。
二次封裝方式:在圖示位置調(diào)用外部算法庫(kù)。一般用于整車廠需要對(duì)算法保密的場(chǎng)景。
通過(guò)以上操作,可以實(shí)現(xiàn)適應(yīng)不同場(chǎng)景、靈活和高效的刷新。