在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 【DLT學(xué)習(xí)筆記2】-- 什么是DLT?(Diagnostic Log and Trace)

            【DLT學(xué)習(xí)筆記2】-- 什么是DLT?(Diagnostic Log and Trace)

            發(fā)布人:電子禪石 時(shí)間:2023-11-17 來源:工程師 發(fā)布文章

            DLTGENIVI項(xiàng)目下的log軟件工程

            automotive-dlt: /home/pfefferz/dlt-daemon/include/dlt/dlt_user.h Source File

            DLT包括:DLT daemon DTL viewer兩個(gè)子工程。


            DLT daemon運(yùn)行在ECU上,DTLviewer運(yùn)行在調(diào)試PC上。


            github地址:dlt-viewer


            一、DLT使用場景

            1.1 DLT的通用場景

            在這里插入圖片描述

            應(yīng)用或SW-C產(chǎn)生日志消息

            日志消息發(fā)送到DLT模塊

            DLT模塊將日志消息發(fā)送到總線

            外部DLT客戶端記錄日志消息

            1.2 VFB追蹤(tracing of VFB)

            在這里插入圖片描述

            RTE調(diào)用由DLT提供的宏,該宏可以調(diào)用DLT應(yīng)用接口產(chǎn)生追蹤消息(trace message)

            DLT模塊發(fā)送跟蹤消息到DLT通訊模塊(黃色模塊)

            DLT通訊模塊轉(zhuǎn)發(fā)跟蹤消息到網(wǎng)絡(luò)

            外部客戶端接收并存儲跟蹤消息

            1.3 DLT運(yùn)行配置

            在這里插入圖片描述

            外部dlt客戶端發(fā)送日志和跟蹤等級變更到dlt模塊

            dlt模塊根據(jù)收到的變更消息改變自己的過濾器設(shè)置配置

            dlt模塊通知應(yīng)用新的日志等級

            1.4 非冗余模式(non-verbose mode)

            為了減少總線上的運(yùn)輸量,我們可以避免發(fā)送通訊總線上的變量元數(shù)據(jù)。

            相反,一個(gè)外部FIBEX文件保存如何解釋有效負(fù)載的信息。

            外部Dlt客戶機(jī)使用接收到的參數(shù)值合并和存儲這些元數(shù)據(jù)。

            在這里插入圖片描述


            dlt模塊以非冗余模式來傳送dlt消息

            dlt模塊過濾和產(chǎn)生dlt消息

            dlt模塊發(fā)送dlt消息到通訊總線

            外部dlt客戶端獲取外部FIBEX文件里的元信息

            外部dlt客戶存儲合并的消息

            二、DLT協(xié)議介紹

            DLT消息包含三個(gè)部分:標(biāo)準(zhǔn)頭、擴(kuò)展頭、有效載荷。如下圖

            在這里插入圖片描述


            2.1 標(biāo)準(zhǔn)頭

            標(biāo)準(zhǔn)頭有16個(gè)字節(jié)大小,分為6個(gè)部分。它們之間的名稱和順序如下圖所示

            在這里插入圖片描述


            Byte0:Header Type,這里用來配置DLT的可選項(xiàng),比如帶不帶ECU ID、Session ID、時(shí)間戳等,DLT協(xié)議版本號、大端優(yōu)先。具體如下圖所示:

            在這里插入圖片描述

            1為采用,0為不采用

            如果使用冗余模式,則UEH位必須為1

            Byte1:Message Counter,從0開始最大255,可以在一定程度上識別丟失的消息。

            Byte2-3:Length,這個(gè)字段指示整個(gè)DLT消息的長度,包括標(biāo)準(zhǔn)頭、擴(kuò)展頭、有效載荷

            Byte4-7:ECU ID,可選的ECU ID用于識別哪個(gè)ECU發(fā)送了Dlt消息。因此,強(qiáng)烈建議ECU ID在車輛內(nèi)是唯一的。

            Byte8-11:Session ID,可選的Session ID用于標(biāo)識ECU中的日志或跟蹤消息的來源。

            Byte12-15:Timestamp,對產(chǎn)生的DLT消息添加時(shí)間信息。

            2.2 擴(kuò)展頭

            擴(kuò)展頭字段是緊跟在標(biāo)準(zhǔn)頭后面的,如果標(biāo)準(zhǔn)頭中‘UEH’位位1,則表示該DLT消息有擴(kuò)展頭。擴(kuò)展圖的結(jié)構(gòu)如下圖所示:

            在這里插入圖片描述

            -Byte0:Message Info,該字節(jié)的字段非常重要,設(shè)計(jì)到dlt消息的類型分類,用來區(qū)分是日志消息、跟蹤消息、網(wǎng)絡(luò)消息、控制消息。字段結(jié)構(gòu)如下圖所示:

            在這里插入圖片描述

            VERB為1時(shí)表示有效載荷必須按冗余模式傳輸

            MSTP表示DLT的類型,一共分四種:日志消息、跟蹤消息、網(wǎng)絡(luò)消息、控制消息

            MTIN表示不同類型DLT消息各自的下級分類

            一圖勝千言

            在這里插入圖片描述


            Byte1:Number of Arguments:參數(shù)數(shù)量表示一條Dlt消息的有效負(fù)載段中連續(xù)參數(shù)的數(shù)量。在冗余模式有效,非冗余模式此字段因?yàn)?x00

            Byte2-5:Application ID,應(yīng)用程序ID是應(yīng)用程序的縮寫,它生成Dlt消息。

            Byte6-9:Context ID,Context ID是用戶定義的ID,用于(邏輯上)對應(yīng)用程序生成的Dlt消息進(jìn)行分組。

            2.3 有效載荷

            2.3.1 非冗余模式

            非冗余模式下的的有效載荷就比較簡單,只傳輸參數(shù)值(不需要任何關(guān)于它們的元信息),以及其他屬性(如參數(shù)名稱或類型),為了允許在接收到的Dlt消息中正確地分解所包含的參數(shù)值,將向有效負(fù)載添加專用的message ID。非冗余模式需要外部解析文件,用來解析Message ID通過消息ID和外部描述的組合,以下信息應(yīng)該是可恢復(fù)的:

            類型信息:Type Length、Data Type、String Coding 、Variable Info 、Fixed Point

            考慮到MCU的處理能力,非冗余模式只傳送dlt消息中的非靜態(tài)數(shù)據(jù),而每條dlt消息中的靜態(tài)數(shù)據(jù)通過外部解析文件與Message ID進(jìn)行關(guān)聯(lián),非冗余模式DLT消息結(jié)構(gòu)如下:

            在這里插入圖片描述

            2.3.1.1 非冗余模式dlt消息示例

            通過下面的例子,我們來看下非靜態(tài)數(shù)據(jù)是如何組裝,傳輸和解析的。


            假設(shè)下面這條日志消息將要傳送給外部DLT客戶端:


            靜態(tài)文本:“Temperature measurement”

            8位uint:measurement_point = 1 (no unit)

            32位浮點(diǎn)型:reading = 22.1 Kelvin

            在源代碼中的這個(gè)特定位置上有一個(gè)唯一的消息ID,用來表示這個(gè)日志消息調(diào)用。以下信息與這個(gè)消息ID相關(guān)聯(lián):

            源碼位置:source file “temp_meas.c”, line number 42

            靜態(tài)文本:“Temperature measurement”

            值位8位無符號整數(shù)。變量名=“measurement_point” , 單位 = “”

            值位32位浮點(diǎn)型,變量名= “reading”,單位=“Kelvin”

            所有的靜態(tài)數(shù)據(jù)已經(jīng)與message ID關(guān)聯(lián)了,所以只用傳輸非靜態(tài)數(shù)據(jù),

            這條dlt消息的非靜態(tài)數(shù)據(jù)如下所示:

            在這里插入圖片描述

            根據(jù)消息ID,接收方可以重新組合此Dlt消息的所有靜態(tài)數(shù)據(jù)(源代碼中的位置、靜態(tài)文本、變量名和單元)。非靜態(tài)數(shù)據(jù)將被一致地打包傳輸。可以通過使用與消息ID相關(guān)聯(lián)的信息進(jìn)行解釋。此外,參數(shù)的順序與消息ID相關(guān)聯(lián)。

            2.3.1.2 非冗余模式被傳輸數(shù)據(jù)的解析格式

            外部文件像ASAM Fibex文件,保存著如何解析有效載荷的信息。應(yīng)用程序或中間件的軟件供應(yīng)商應(yīng)提供此描述文件。由于Dlt可以有多個(gè)日志或跟蹤消息源(多個(gè)應(yīng)用程序或診斷模塊),因此可以將提供的描述文件合并到給定ECU的一個(gè)文件中。

            每個(gè)用于描述非詳細(xì)消息的Fibex描述文件只對應(yīng)于一個(gè)ECU的日志或跟蹤消息。這是因?yàn)槊總€(gè)ECU的消息id是唯一的。此外,ECU的軟件版本號必須由描述文件提供。

            原則上,每個(gè)日志或跟蹤消息都相當(dāng)于某些網(wǎng)絡(luò)協(xié)議中已知的PDU。在這里,日志或跟蹤消息的描述應(yīng)該等同于Fibex指定的CAN-Frame。來自Extended Header的信息被另外放入FRAME-TYPE xml元素中的xml元素中。非靜態(tài)數(shù)據(jù)由PDU和SIGNAL xml元素描述。

            從用戶的角度來看,日志或跟蹤消息有幾個(gè)參數(shù)。這些參數(shù)可以是靜態(tài)文本或非靜態(tài)變量。只傳輸非靜態(tài)變量的數(shù)據(jù)。為了用所有參數(shù)重新組合整個(gè)消息,一個(gè)FRAME xml元素應(yīng)該包含一些空的PDU xml元素,這些元素用靜態(tài)文本表示參數(shù)。此文本應(yīng)置于PDU xml元素的DESC xml元素中。


            一條日志或追蹤消息必須是一個(gè)Fibex XML元素框架表示

            消息ID必須是<FRAME>XML元素的ID屬性

            下面的示例顯示了FIBEX XML中示例Dlt消息的描述。

            <fx:FRAME ID="ID_1"> <ho:SHORT-NAME>Dlt Message with ID_1</ho:SHORT-NAME> <fx:BYTE-LENGTH>1</fx:BYTE-LENGTH> <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE> <fx:PDU-INSTANCES> <fx:PDU-INSTANCE ID="P_1_0"> <fx:PDU-REF ID-REF="PDU_1_0"/> <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER> </fx:PDU-INSTANCE> <fx:PDU-INSTANCE ID="P_1_1"> <fx:PDU-REF ID-REF="PDU_1_1"/> <fx:SEQUENCE-NUMBER>1</fx:SEQUENCE-NUMBER> </fx:PDU-INSTANCE> <fx:PDU-INSTANCE ID="P_1_2"> <fx:PDU-REF ID-REF="PDU_1_2"/> <fx:SEQUENCE-NUMBER>2</fx:SEQUENCE-NUMBER> </fx:PDU-INSTANCE> </fx:PDU-INSTANCES> <fx:MANUFACTURER-EXTENSION> <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE> <MESSAGE_INFO>DLT_LOG_DEBUG</MESSAGE_INFO> <APPLICATIONID>APPI</APPLICATIONID> <CONTEXTID>CONI</CONTEXTID> <MESSAGE_SOURCE_FILE>demo.c</MESSAGE_SOURCE_FILE> <MESSAGE_LINE_NUMBER>72</MESSAGE_LINE_NUMBER> </fx:MANUFACTURER-EXTENSION> </fx:FRAME> 

            <!--=============== 1. Parameter ==================-->

            <fx:PDU ID="PDU_1_0"> <ho:SHORT-NAME></ho:SHORT-NAME> <ho:DESC>Temperature measurement</ho:DESC> <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH> <fx:PDU-TYPE>OTHER</fx:PDU-TYPE> </fx:PDU>

            <!--=============== 2. Parameter ==================--> 

            <fx:PDU ID="PDU_1_1"> <ho:SHORT-NAME>measurement_point</ho:SHORT-NAME> <fx:BYTE-LENGTH>1</fx:BYTE-LENGTH> <fx:PDU-TYPE>OTHER</fx:PDU-TYPE> <fx:SIGNAL-INSTANCES> <fx:SIGNAL-INSTANCE ID="S_1_0"> <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER> <fx:SIGNAL-REF ID-REF="S_UINT8"/> </fx:SIGNAL-INSTANCE> </fx:SIGNAL-INSTANCES> </fx:PDU> 

            <!--=============== 3. Parameter ==================--> 

            <fx:PDU ID="PDU_1_2"> <ho:SHORT-NAME>reading</ho:SHORT-NAME> <fx:BYTE-LENGTH>1</fx:BYTE-LENGTH> <fx:PDU-TYPE>OTHER</fx:PDU-TYPE> <fx:SIGNAL-INSTANCES> <fx:SIGNAL-INSTANCE ID="S_1_0"> <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER> <fx:SIGNAL-REF ID-REF="FLOA32"/> </fx:SIGNAL-INSTANCE> </fx:SIGNAL-INSTANCES> </fx:PDU>


            2.3.2 冗余模式

            DLT的冗余模式相對于非冗余模式,顯而易見,傳遞的數(shù)據(jù)更加全面完整,

            如果ECU的內(nèi)存和帶寬都夠,建議使用冗余模式傳輸DLT消息。


            冗余模式下的DLT消息結(jié)構(gòu)如下圖所示:

            在這里插入圖片描述

            數(shù)據(jù)負(fù)載包含變量的值(即應(yīng)用程序或中間件的調(diào)試信息),它將在通信總線上傳輸。除了變量值本身之外,還需要提供變量的大小和類型等信息。該信息包含在Type Info字段中。

            -Type Info:32位,表示元數(shù)據(jù)信息。

            在這里插入圖片描述

            從上圖可以看出,Type Info主要描述“Data payload”類型信息。


            Type Length(TYLE):Type Length指定標(biāo)準(zhǔn)數(shù)據(jù)類型的長度。比如:規(guī)定BOOL型為8位,SINT和UINT為8位、16位、32位、64位、128位,F(xiàn)LOA型為16位、32位、64位、128位。

            Variable Info(VARI): 如果設(shè)置了變量信息(VARI),則可以添加變量的名稱和單位。兩者都包含一個(gè)長度信息字段和一個(gè)帶有文本(名稱或單元)的字段。長度字段包含關(guān)聯(lián)的名稱或單元字段的字符數(shù)。只在某些數(shù)據(jù)類型中添加單元信息。

            Fixed Point(FIXP):如果使用定點(diǎn)值,則應(yīng)設(shè)置定點(diǎn)(FIXP)位。比數(shù)據(jù)字段表示一個(gè)固定點(diǎn)變量的物理值。為了解釋不動點(diǎn)變量,必須計(jì)算這個(gè)變量的邏輯值。邏輯值由不動點(diǎn)變量的物理值、量化值q和偏移量o來計(jì)算。

            邏輯值Lv和物理值Pv之間的關(guān)系是Lv=Pv*q + O

            不動點(diǎn)必須是整型數(shù)據(jù)

            String Coding(SCOD): String Coding 僅對String 類型(STRG)的字符串?dāng)?shù)據(jù)進(jìn)行編碼。所有其他字符串,如參數(shù)名稱、單元和描述都是用8位ASCII格式編碼的。

            Bool:如果數(shù)據(jù)是布爾型,1就代表True,0代表False。

            Signed and Unsigned:整型和無符號整型數(shù)據(jù)。該位設(shè)置時(shí),代表Data payload里的數(shù)據(jù)是整型和無符號整型數(shù)據(jù)。

            FLOA:浮點(diǎn)型,該位置1時(shí),代表Data payload里的數(shù)據(jù)時(shí)浮點(diǎn)型數(shù)據(jù)

            String(STRG):字符串,該位置1時(shí),代表Data payload里的數(shù)據(jù)是字符串

            Array(ARAY): 該位置1時(shí),代表Data payload里的數(shù)據(jù)是數(shù)組。

            Struct(STRU):該位置1時(shí),代表Data payload里的數(shù)據(jù)是數(shù)組。

            Raw(RAWD):該位置1時(shí),代表Data payload里的數(shù)據(jù)是原始數(shù)據(jù)。

            Trace Info(TRAI):該位置1時(shí),跟蹤信息(如模塊名/函數(shù))應(yīng)在參數(shù)中傳遞。在數(shù)據(jù)有效負(fù)載的起始,一個(gè)16位無符號整數(shù)應(yīng)指定跟蹤數(shù)據(jù)字符串的長度,以字節(jié)為單位,包括終止字符。

            介紹了那么多,來個(gè)示例解釋下自然數(shù)據(jù)類型參數(shù)是如何表示的吧下面這個(gè)示例展示了如何在冗余模式VARI置1的情況下,將一個(gè)8位無符號整型數(shù)據(jù)組裝起來。

            Type Info是描述數(shù)據(jù)的32位字段。

            在這個(gè)例子中,它定義了變量類型(無符號整數(shù))、

            它的長度(8位)和描述變量名稱和單位的variable Info (VARI)的存在。

            Variable Info后面跟著兩個(gè)16位無符號整數(shù),描述變量的Name和Unit的長度。

            后面跟著兩個(gè)以空結(jié)束的字符串,它們描述了Name和Unit。最后,變量值緊隨其后。

            Data字段的長度是8位。

            在這里插入圖片描述

            Type Info字段各個(gè)位之間的組合表

            在這里插入圖片描述

            下表顯示了根據(jù)使用的變量類型的強(qiáng)制(標(biāo)記x)和可選(標(biāo)記o)設(shè)置:

            在這里插入圖片描述

            為了識別日志或跟蹤消息的來源,需要在Dlt消息中添加一些在源代碼中找到位置的信息。

            因此,Dlt消息中的前兩個(gè)參數(shù)應(yīng)為:


            源文件的名稱(字符串)

            代碼行(無符號整數(shù))

            日志或跟蹤消息的第一個(gè)參數(shù)應(yīng)該是一個(gè)字符串參數(shù),其中字段“Name”(在Variable Info中)包含字符串“source_file”,數(shù)據(jù)字段包含源文件的URL。


            日志或跟蹤消息的第二個(gè)參數(shù)應(yīng)該是UINT參數(shù)(32位),其中字段“Name”(在Variable Info中)包含字符串“l(fā)ine_number”,數(shù)據(jù)字段包含發(fā)送日志或跟蹤消息的源文件中的行號。


            2.4 DLT服務(wù)(命令)

            以下章節(jié)將介紹已定義的Dlt命令,包括唯一標(biāo)識(Service ID)、格式和所需參數(shù)。

            下面的表格表示DLT支持的服務(wù)命令:

            在這里插入圖片描述

            建議定義的Dlt命令可以通過接收相應(yīng)的Dlt控制消息和/或通過單獨(dú)的C api觸發(fā)


            三、時(shí)序圖

            DLT 數(shù)據(jù)消息傳輸時(shí)序圖(Transmission of Dlt Data Message)

            在這里插入圖片描述

            設(shè)置日志登記過濾器(Set LogLevel Filter)

            在這里插入圖片描述

            緩存溢出(Buffer Overflow)

            在這里插入圖片描述

            四、術(shù)語解析

            術(shù)語名稱 解釋

            SW-C Software Component的縮寫,即軟件組件,它是組成應(yīng)用軟件的基本單元

            VFB VFB(Virtual Function Bus),也就是虛擬功能總線,而RTE是它的具體實(shí)現(xiàn)

            RTE 運(yùn)行時(shí)環(huán)境(RTE)是AUTOSAR ECU體系結(jié)構(gòu)的核心。RTE是AUTOSAR中VFB的接口實(shí)現(xiàn),特定于每個(gè)ECU生成的。RTE提供基礎(chǔ)的通信服務(wù),支持軟件構(gòu)件間和軟件構(gòu)件到基礎(chǔ)軟件模塊的通信,并提供AUTOSAR軟件組件訪問基本軟件模塊(包括OS和通信服務(wù))的服務(wù)。

            Metadata 元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù)(參考3)

            Log and trace message 一條日志和追蹤消息里包含所有描述軟件中的日志和事件追蹤的數(shù)據(jù)和選項(xiàng)。它們由消息頭和有效載荷組成

            Dlt User DLT用戶是指產(chǎn)生Dlt消息的源頭。它們可以是應(yīng)用,RTE或者軟件模塊

            Log message 日志消息包含調(diào)試信息,如狀態(tài)變化或值變化。

            Trace Message 跟蹤消息包含通過VFB傳遞的信息

            FIBEX 現(xiàn)場總線交換格式是一種通用的XML基礎(chǔ)描述格式。

            ECU ID ECU ID是一個(gè)ECU的名稱,由4個(gè)8位ASCII字符(如ABS0、COMB)組成

            Session 會話是日志或跟蹤消息源的邏輯實(shí)體。如果一個(gè)SW-C /應(yīng)用程序被實(shí)例化多次,則使用具有全局唯一會話ID的每個(gè)實(shí)例的一個(gè)會話。

            Session ID 會話ID是日志或跟蹤會話的標(biāo)識號

            Application ID “應(yīng)用ID”是SW-C / Application的縮寫。它標(biāo)識日志和跟蹤消息產(chǎn)生的SW-C /應(yīng)用程序。

            Context ID 上下文ID是用戶自定義ID,四個(gè)8位ASCII字符組成上下文ID。用于對swc /應(yīng)用程序生成的日志和跟蹤消息進(jìn)行分組。具有以下使用規(guī)則:1. 每個(gè)應(yīng)用ID可以擁有幾個(gè)上下文ID 2.上下文ID由應(yīng)用ID進(jìn)行分組 3. 一個(gè)應(yīng)用ID里的上下文ID必須是唯一的 4. 使用元組“應(yīng)用程序ID”和“上下文ID”標(biāo)識日志和跟蹤消息的源

            Message ID 消息ID是標(biāo)識信息的ID,信息由消息本身傳輸。消息ID唯一地標(biāo)識日志或跟蹤消息。它可以用來標(biāo)識消息的源(在源代碼中),也可以用來描述消息的有效負(fù)載。消息ID是在開發(fā)或配置時(shí)靜態(tài)固定的。

            Log level 日志級別定義了日志消息的嚴(yán)重級別的分類。

            Trace status 跟蹤狀態(tài)提供了是否應(yīng)該發(fā)送跟蹤消息的信息

            Log Channel 一種用于傳輸Dlt消息的物理通信總線

            External client 外部客戶端是使用Dlt模塊控制、監(jiān)視和存儲ecu提供的日志/跟蹤信息的工具。

            PDU Protocol Data Unit,PDU包含SDU和PCI,PCI包含源地址和目標(biāo)地址信息,SDU是數(shù)據(jù)信息

            五、參考

            1.AUTOSAR虛擬功能總線-VFB

            2.DLT協(xié)議(AutoSAR官方)

            3.元數(shù)據(jù)

            ————————————————

            版權(quán)聲明:本文為CSDN博主「黃水生」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

            原文鏈接:https://blog.csdn.net/jackhh1/article/details/122740788


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



            關(guān)鍵詞: DLT

            技術(shù)專區(qū)

            關(guān)閉