汽車總線與診斷 | 如何使用流程腳本機制實現刷新

在汽車電子開發、測試和售後診斷中,我們經常需要對ECU進行固件升級,即“刷新”。


當前市面上的主流方案是通過硬編碼的方式實現,但這種方式的缺點也顯而易見:只有懂編程的工程師才能做,一般工程師無法勝任;當需要修改刷新流程的時候,刷新工具必須重新編譯生成軟件。這對於刷新工具的維護極為不便。


針對這一痛點,勤壯提供了一套通過腳本實現的方案。由於採用圖形化配置界面,任何類型的工程師都可以輕鬆勝任;當需要修改的時候也只需修改腳本本身,無需重新編譯生成整個軟件,相比其他方案更方便、更靈活、更容易上手。


接下來我們按照步驟一一解析:


1.如何配置腳本?



首先我們有必要了解下兩個專有名詞:刷新規範和QzTitan。


刷新規範



刷新規範一般由整車廠制定,詳細定義了刷新的具體步驟。一般分為刷新前、刷新中、刷新後。

刷新前:切換會話、安全訪問等;

刷新中:34/36/37服務執行具體刷新動作;

刷新後:完整性校驗、兼容性校驗等。


QzTitan



QzTitan是一款簡單易用的、圖形化的、綜合流程配置工具,文件後綴為ttn和ttb。


QzTitan可用於各種功能的開發,如刷新、IMMO等,同時可用於基礎軟件測試用例的開發,如:診斷測試用例、NM測試用例等,能夠滿足絕大多數汽車電子開發中的開發和測試場景。


由於使用圖形化的配置方式,QzTitan相比於使用硬編碼具有更強的靈活性,使得非軟件開發人員也能輕鬆使用。


流程由語句和語句之間的關係組成。語句採用基礎加擴展的基本方式,軟件預定義了一些常用的語句,如:If、delay、assign、math、service、sendmsg。若預定義語句無法滿足要求,可以通過usercall機制調用外部自定義函數。


由於腳本文件是二進制的,所以可以在各種軟硬件平臺上使用。軟件平臺包括:windows、linux、無操作系統環境,硬件平臺包括:PC、MCU等。

汽車總線與診斷 | 如何使用流程腳本機制實現刷新


用Titan實現刷新規範


通過不同語句的組合形成一個刷新流程,下面以1001為例來說明如何配置服務:

1.從左側選中10服務;


汽車總線與診斷 | 如何使用流程腳本機制實現刷新


2.拖放到中間的畫布;

汽車總線與診斷 | 如何使用流程腳本機制實現刷新


3.在右側屬性窗口配置該服務的屬性。


汽車總線與診斷 | 如何使用流程腳本機制實現刷新


注意:1.什麼是FastSA?SA一般由兩條服務組成:RequestSeed和ResponseKey,FastSA指的就是這兩條服務的組合。系統會自動根據配置調用SADLL,計算Key。2. 添加語句的方式:拖放。


ttn與ttb的關係

ttn是ttb的源文件,ttn可生成ttb,ttb不可以反向生成ttn,所以需要注意保存ttn。

汽車總線與診斷 | 如何使用流程腳本機制實現刷新


2.如何執行腳本?


我們首先會用到QzSaturn這個工具,QzSaturn是一款總線和診斷測試工具,是整個工具鏈中的主軟件,文件後綴為:*.stn。


QzSaturn的主要功能包括:報文監控、圖形監控、總線記錄與回放、全車診斷、工程面板、流程、診斷、刷新、網報報文發送等,覆蓋了汽車電子開發與測試中最常用的功能。刷新是其功能之一。


汽車總線與診斷 | 如何使用流程腳本機制實現刷新


汽車總線與診斷 | 如何使用流程腳本機制實現刷新

刷新步驟:


1.導入ttb文件

將配置完成的腳本導入到QzSaturn刷新子窗口中。


2.導入刷新數據文件

指的是要刷的數據文件,支持HEX、S19和BIN。


3.基本參數的配置

對ECU基本參數進行配置,如:RequestID、ResponseID。


4.SA算法庫的導入

刷新前一般需要解鎖SA,解鎖算法由SA算法庫實現。在windows平臺的文件後綴為*.dll,DLL本身的製作方法見下文。


5.CRC配置

選擇相應的CRC類型及相關信息,並點擊按鈕計算CRC。


6.開始刷新。


如何製作SA算法庫?


本質是製作一個特定接口的動態鏈接庫*.dll。

製作工具:Visual Studio 2015

開發語言:C/C++

接口函數: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)


參數說明:


P_seed:Seed

Seed_length:Seed長度,一般為4;

Level:SA level.以2701為例,應填01

Param:用戶自定義

P_key:Key Buffer,用於存儲函數返回的Key

Key_length:Key Buffer的指定長度,

Key_size:Key實際長度,一般跟Seed長度一致


兩種方式:源碼封裝方式、二次封裝方式。


源碼封裝方式:直接在圖示位置寫代碼實現SA算法。


二次封裝方式:在圖示位置調用外部算法庫。一般用於整車廠需要對算法保密的場景。


通過以上操作,可以實現適應不同場景、靈活和高效的刷新。


汽車總線與診斷 | 如何使用流程腳本機制實現刷新


關於勤壯:

上海勤壯汽車科技有限公司成立於2016年,致力於成為國內頂級的汽車電子開發服務商,為國內汽車主機廠和零部件供應商提供本土化、定製化的優質服務。為國內汽車主機廠和零部件供應商提供包括汽車電子基礎協議棧軟件開發服務、汽車電子總線和診斷專用測試工具、以及汽車診斷相關的定製化開發服務。2019年勤壯正式併入上海艾拉比智能科技有限公司,雙方整合優勢資源,為客戶提供更優質的服務。


分享到:


相關文章: