從研發(fā)到測(cè)試SDV域控制器的調(diào)試日志
在汽車軟件復(fù)雜度不斷攀升的今天,對(duì)不同核或分區(qū)上運(yùn)行的復(fù)雜軟件進(jìn)行調(diào)試或追蹤極具挑戰(zhàn)性,并且在POSIX系統(tǒng)或車輛上的復(fù)雜軟件進(jìn)行分步調(diào)試往往更具挑戰(zhàn)。所以,如何在SDV域控制器開發(fā)測(cè)試環(huán)境中,將應(yīng)用程序、中間件和內(nèi)核日志與時(shí)間戳等信息同步結(jié)合匯聚到同一個(gè)日志流,以便更好服務(wù)軟件工廠或“黑燈”測(cè)試工廠,亦或?yàn)樵贫?a href="http://www.brongaenegriffin.com/tags/ai/" target="_blank">AI平臺(tái)提供日志調(diào)試軟件?AUTOSAR推出的組件DLT,其邏輯已從診斷日志追蹤(DiagnosticLog andTrace)演變?yōu)楦訉挿阂饬x的開發(fā)日志追蹤(DevelopmentLog andTrace)。

圖1 面向SDV平臺(tái)集成DLT調(diào)試日志
通常部分軟件開發(fā)工程師有配置ECU的硬件調(diào)試環(huán)境,但其它工程師幾乎沒(méi)有配置“Debug”ECU問(wèn)題的環(huán)境。DLT作為ECU軟件的模塊匯聚調(diào)試日志并追蹤ECU內(nèi)部問(wèn)題,可以加速問(wèn)題排查和解決。過(guò)往通過(guò)CANoe或CANoe Option AMD/XCP集成不同調(diào)試器或XCP獲取軟件狀態(tài),但是面向研發(fā)環(huán)境表現(xiàn)出廣泛的多樣性:
不同品牌調(diào)試器和調(diào)試器擴(kuò)展模塊
ECU平臺(tái)多樣性和電路連接多樣性
不同軟件配置環(huán)境的License
不同的構(gòu)建設(shè)置(例如,軟件工廠、HIL Farm)

圖2 CANoe Option AMD/XCP集成不同調(diào)試器或XCP獲取日志
通過(guò)統(tǒng)一的DLT作為調(diào)試手段增加軟件測(cè)試的靈活性和效果,允許根據(jù)嚴(yán)重性級(jí)別(例如“致命”、“錯(cuò)誤”或“信息”)對(duì)調(diào)試信息進(jìn)行過(guò)濾。該過(guò)濾器可以通過(guò)外部日志工具發(fā)送的DLT控制消息在運(yùn)行時(shí)進(jìn)行修改。還可以直接通知應(yīng)用程序新的過(guò)濾級(jí)別,以便僅針對(duì)所選的嚴(yán)重性級(jí)別生成調(diào)試信息,運(yùn)行時(shí)將消息分配到另一個(gè)通信總線上,或?qū)⑿薷暮蟮腄LT配置存儲(chǔ)為NV存儲(chǔ)(如果硬件支持的話)。開發(fā)與測(cè)試工程師使用CANoe Option AMD/XCP在支持CCP/XCP的同時(shí),也可直接用其實(shí)現(xiàn)DLT數(shù)據(jù)進(jìn)行在線采集或離線分析。

圖3 CANoe Option AMD/XCP直接獲取XCP或DLT日志
Part 1
DLT應(yīng)用場(chǎng)景和協(xié)議概述
DLT是一個(gè)AUTOSAR基礎(chǔ)軟件模塊。雖然DLT協(xié)議與總線無(wú)關(guān),但建議使用高帶寬總線,如以太網(wǎng)。盡管如此,DLT協(xié)議并不局限于以太網(wǎng)的使用,使得在沒(méi)有調(diào)試器的情況下調(diào)試ECU成為可能,并允許用戶在運(yùn)行時(shí)進(jìn)行配置。
>
使用DLT進(jìn)行常規(guī)日志記錄:
應(yīng)用程序/軟件組件向DLT模塊提供日志消息
日志消息要么被過(guò)濾,要么由DLT模塊創(chuàng)建DLT消息(取決于日志級(jí)別)
DLT模塊將DLT消息發(fā)送到通信總線
外部客戶端接收并存儲(chǔ)DLT消息

圖4 AUTOSAR DLT常規(guī)日志記錄
>
中間件VFB日志:
中間件調(diào)用DLT模塊提供的接口函數(shù),該函數(shù)調(diào)用DLT API生成追蹤消息
DLT模塊將追蹤消息發(fā)送到DLT通信模塊接口
DLT通信模塊將追蹤消息轉(zhuǎn)發(fā)到網(wǎng)絡(luò)
外部客戶端接收并存儲(chǔ)追蹤消息

圖5 中間件通過(guò)DLT記錄日志
>
運(yùn)行時(shí)配置DLT日志:
外部客戶端設(shè)置日志和追蹤級(jí)別,并將更改發(fā)送至DLT模塊
通過(guò)DLT控制消息將更改發(fā)送到DLT模塊
DLT模塊相應(yīng)地調(diào)整其過(guò)濾設(shè)置的配置
DLT模塊通知應(yīng)用程序新的日志級(jí)別

圖6 運(yùn)行時(shí)配置DLT日志
>
非冗長(zhǎng)模式(Non-verbose)傳輸日志:使用外部解析文件的方式來(lái)高效解析有效數(shù)據(jù)載荷,從而避免在通信總線上發(fā)送關(guān)于變量的元素?cái)?shù)據(jù),達(dá)到節(jié)省總線通信開銷的目的。外部DLT客戶端將這些元數(shù)據(jù)與接收到的參數(shù)值合并存儲(chǔ)。
應(yīng)用程序/軟件組件向DLT模塊提供Non-verbose的日志數(shù)據(jù)
DLT模塊過(guò)濾并生成DLT消息
DLT模塊將DLT消息發(fā)送到通信總線
外部客戶端從外部文件中獲取元信息
合并的信息由外部客戶端存儲(chǔ)

圖7 Non-verbose模式日志
DLT協(xié)議是一種高層協(xié)議,與具體使用哪種總線無(wú)關(guān)。AUTOSAR規(guī)范中的DLT協(xié)議目前定義了v1和v2兩個(gè)版本,并在Log and Trace Protocol Specification中隨AUTOSAR各個(gè)Release逐步演進(jìn)和規(guī)范化,例如在AUTOSAR FO R19-11及后續(xù)R24-11(PRS)中對(duì)相關(guān)能力進(jìn)行了完善和擴(kuò)展。在AUTOSAR發(fā)布的早期階段(約2010年前后),Vector在ECU軟件與工具鏈中對(duì)日志與追蹤機(jī)制進(jìn)行了大量工程實(shí)踐,用于開發(fā)調(diào)試和問(wèn)題分析,并隨著AUTOSAR 規(guī)范的演進(jìn)持續(xù)支持和實(shí)現(xiàn)DLT協(xié)議,最終發(fā)展到當(dāng)前廣泛使用的v2版本。
DLT v1版本包頭簡(jiǎn)單、報(bào)文開銷小,因而在帶寬受限或資源受限的ECU上能夠?qū)崿F(xiàn)低成本部署。

圖8 DLT v1版本標(biāo)準(zhǔn)報(bào)頭

圖9 DLT v1版本擴(kuò)展報(bào)頭
DLT v2支持可變長(zhǎng)度ID(動(dòng)態(tài)ID)、高精度時(shí)間戳、分段傳輸(即報(bào)文超過(guò)單幀長(zhǎng)度可切分并重組),更適合大載荷的場(chǎng)景。

圖10 DLT v2版本標(biāo)準(zhǔn)報(bào)頭

圖11 DLT v2版本擴(kuò)展報(bào)頭
協(xié)議中還定義了兩種模式,分別是Verbose和Non-verbose模式,兩種模式在日志消息的嚴(yán)重性等級(jí)均提供:FATAL、ERROR、WARNING、INFO、DEBUG和VERBOSE。兩種模式的區(qū)別為:
>
Verbose模式:發(fā)送包含所有參數(shù)/文本的完整消息,便于閱讀與分析,但會(huì)消耗更多帶寬。
>
Non-verbose模式:可發(fā)送更緊湊的消息(例如僅發(fā)送參數(shù)或ID),消息結(jié)構(gòu)可以通過(guò)FIBEX或ARXML數(shù)據(jù)庫(kù)文件解析,適合在帶寬受限場(chǎng)景降低開銷。
Part 2
日志追蹤“利器”
– 帶有DLT功能的CANoe Option AMD/XCP
通過(guò)收集日志信息來(lái)驗(yàn)證ECU的正確功能,捕獲ECU的追蹤數(shù)據(jù)確保狀態(tài)流的正確變化,檢測(cè)ECU是否報(bào)告了錯(cuò)誤(例如,配置錯(cuò)誤或基礎(chǔ)軟件BSW錯(cuò)誤),驗(yàn)證從ECU生成的事件順序是否正確。針對(duì)如上需求,ECU需要集成對(duì)應(yīng)的DLT軟件模塊:
>
基于XCP的DLT集成:現(xiàn)有XCP協(xié)議棧上只需將DLT API調(diào)用添加到定義事件中,配置中啟用相關(guān)功能則DET和DEM事件將自動(dòng)傳輸,DEM事件支持按需過(guò)濾。
>
基于AUTOSAR的DLT集成:作為XCP DLT的替代方案,允許API更改DLT的日志級(jí)別,滿足整車廠集成DLT的功能要求。根據(jù)AUTOSAR日志定義控制日志級(jí)別(致命、錯(cuò)誤、警告、調(diào)試、信息、詳細(xì)),將所有日志和追蹤聚集到集中式AUTOSAR服務(wù)組件中,基于軟件的時(shí)間信息、多核和分區(qū)日志。如AUTOSAR AP中ara::log提供每個(gè)階段的日志信息API,日志通過(guò)配置發(fā)送到特定日志接收器,若需要可通過(guò)DLT實(shí)現(xiàn)遠(yuǎn)程調(diào)試。
CANoe Option AMD/XCP支持在開發(fā)與調(diào)試過(guò)程中加載A2L文件到CANoe中,并支持DaVinci工具在配置協(xié)議棧時(shí)可額外配置測(cè)量代碼,直接生成測(cè)試代碼用于CPU負(fù)載、任務(wù)執(zhí)行等信息用于后續(xù)自動(dòng)化驗(yàn)證。

圖12 CANoe支持A2L集成用于DLT與運(yùn)行測(cè)量
CANoe支持在線和離線分析DLT數(shù)據(jù),可通過(guò)總線接口卡連接真實(shí)ECU獲取調(diào)試日志,對(duì)虛擬機(jī)如WSL中的vECU可通過(guò)集成SIL Kit來(lái)獲取調(diào)試日志。

圖13 真實(shí)ECU或虛擬ECU可通過(guò)CANoe實(shí)現(xiàn)DLT調(diào)試日志
CANoe支持Non-verbose和Verbose兩種模式,支持一鍵生成對(duì)應(yīng)FIBEX中變量到CANoe工程,也可在配置工程節(jié)點(diǎn)后導(dǎo)入對(duì)應(yīng)變量。

圖14 CANoe中DLT配置流程
對(duì)于Non-verbose模式消息的解析,插件根據(jù)FIBEX文件自動(dòng)生成的變量,DLT變量緊隨每幀Ethernet Packet,直接被解析并顯示在Trace窗口,并可在Graphics窗口中以動(dòng)態(tài)曲線方式顯示DLT日志信息。

圖15 CANoe解析Non-verbose模式日志
對(duì)于Verbose模式消息的解析,具體的Payload會(huì)直接被解析成結(jié)構(gòu)體,并在Trace窗口顯示。

圖16 CANoe解析Verbose模式日志
同時(shí)CANoe支持發(fā)送DLT Control Message,如Set Log Level命令。

圖17 使用CANoe發(fā)送DLT Control Message
Part 3
總結(jié)和展望
SDV發(fā)展迭代必然需要更豐富的調(diào)試手段。AUTOSAR DLT作為調(diào)試器之外的另一種獲取調(diào)試日志的方式,將更好服務(wù)車輛開發(fā)各環(huán)節(jié)。CANoe Option AMD/XCP配合DLT功能提供更加全面的功能,在獲取CCP/XCP數(shù)據(jù)日志信息的同時(shí),助力工程師更好地通過(guò)DLT分析和調(diào)試ECU。當(dāng)然在車輛生產(chǎn)時(shí),DLT應(yīng)當(dāng)關(guān)閉以滿足網(wǎng)絡(luò)安全需求。DLT技術(shù)也在迭代,CANoe也將更好支持“軟調(diào)試”技術(shù),進(jìn)一步提升便利性。
-
測(cè)試
+關(guān)注
關(guān)注
9文章
6111瀏覽量
131031 -
控制器
+關(guān)注
關(guān)注
114文章
17715瀏覽量
191372 -
SDV
+關(guān)注
關(guān)注
0文章
92瀏覽量
7522 -
DLT
+關(guān)注
關(guān)注
0文章
17瀏覽量
5503
發(fā)布評(píng)論請(qǐng)先 登錄
分布式日志追蹤ID實(shí)戰(zhàn)
請(qǐng)問(wèn)SDV1.0 SDV2.0 MMC是什么區(qū)別啊!
光線追蹤技術(shù)的作用
基于機(jī)器學(xué)習(xí)的日志解析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
淺談東軟睿馳推出的SDV產(chǎn)品與解決方案
Log4Net日志存儲(chǔ)
Advanced Host Monitor軟件包輔助組件之日志分析器
解析Linux系統(tǒng)日志
Spring Boot如何實(shí)現(xiàn)日志鏈路追蹤
DLT Support in CANape
模組日志功能技術(shù)概覽
SDV域控器日志追蹤與解析技術(shù) – DLT
評(píng)論