日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XCP协议学习笔记

發(fā)布時(shí)間:2024/3/26 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCP协议学习笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.XCP用來做什么?

在汽車電子軟件開發(fā)中,經(jīng)常會(huì)遇到需要在整車調(diào)試或者臺(tái)架調(diào)試時(shí)才能確定的一些變量,這個(gè)時(shí)候就會(huì)用到XCP,例如電機(jī)控制器的PID參數(shù),可能根據(jù)汽車的負(fù)載不一樣需要調(diào)整,這個(gè)時(shí)候就可通過XCP來標(biāo)定。

那么XCP主要的用處以下總結(jié)為四點(diǎn):

a.標(biāo)定

b.測(cè)量(反饋一些變量的值供上位機(jī)或測(cè)試系統(tǒng)查看,如轉(zhuǎn)速等)

c.編程和刷新(例如更新一部分地址的數(shù)據(jù)值,甚至重編程等,這部分用的較少一般用UDS)

d.對(duì)ECU功能進(jìn)行旁路,簡(jiǎn)單來說就是模擬ECU的數(shù)據(jù)

其中主要用a,b兩點(diǎn),其他兩點(diǎn)用的比較少。

XCP協(xié)議數(shù)據(jù)結(jié)構(gòu)

主、從設(shè)備之間每次傳輸?shù)臄?shù)據(jù)都采用XCP幀的格式,包含一個(gè)XCP報(bào)頭、XCP數(shù)據(jù)包和XCP報(bào)尾。XCP幀支持的傳輸層可將這三個(gè)幀元素映射到相應(yīng)的傳輸幀格式。

XCP數(shù)據(jù)包包含獨(dú)立于所選傳輸機(jī)制的協(xié)議數(shù)據(jù),攜帶標(biāo)識(shí)、時(shí)間戳和實(shí)際數(shù)據(jù)。PID是標(biāo)識(shí)字段的一部分,用于標(biāo)記數(shù)據(jù)包及數(shù)據(jù)包內(nèi)部的數(shù)據(jù)值。

?

2.XCP的工具簡(jiǎn)介

目前XCP主要使用的工具有Vector公司的CANape ?ITAS的INCA,Value CAN等工具。

3.XCP的一般工作流程

首先XCP是主從的工作結(jié)構(gòu),主節(jié)點(diǎn)(Master)即一個(gè)上位機(jī),我們定義它為測(cè)試系統(tǒng),當(dāng)然你也可以理解為我們使用的XCP工具,一個(gè)主節(jié)點(diǎn)可以連接多個(gè)從節(jié)點(diǎn)(Slave),以XCPOnCAN為例,可以通過CAN ID的方式來識(shí)別不同的從節(jié)點(diǎn),一般從節(jié)點(diǎn)需要兩個(gè)CANID,一個(gè)源地址,一個(gè)目標(biāo)地址。那么硬件連接如下所示:

Master(帶上位機(jī)的筆記本)<-->CAN工具<-->Slave(ECU 可多個(gè))

a.第一步我們要將Master和Slave連接起來,當(dāng)然是通過發(fā)命令的方式建立連接,具體命令后面進(jìn)行講解。

b.第二步可以通過上位機(jī)工具監(jiān)控之前定義好的一些變量,例如速度,轉(zhuǎn)矩,電壓等參數(shù);

c.第三步可以進(jìn)行一些在線標(biāo)定功能,比如在臺(tái)架上標(biāo)定PID的一些參數(shù),標(biāo)定過程一般是先在一個(gè)存儲(chǔ)區(qū)(RAM)定義的變量找出一個(gè)比較好的參數(shù),然后將這個(gè)比較好的參數(shù)固化下來,擦除原來的數(shù)據(jù)寫入到另外一個(gè)映射好的存儲(chǔ)區(qū)(flash),這個(gè)是標(biāo)定的一般過程;

d.當(dāng)然也可以通過重新擦寫一個(gè)數(shù)據(jù)區(qū)域,使用其編程的功能。

我認(rèn)為映射關(guān)系可能是XCP中較核心的一個(gè)部分,下面我們講一講c步驟中的地址映射。

4.XCP地址映射

首先我們講一講 參考頁/工作頁/激活頁/邏輯地址/物理地址的一些概念

邏輯地址:為了XCP的邏輯應(yīng)用定義的一塊地址,就像我們給一個(gè)變量定義了一個(gè)名字一樣;

物理地址:它是直接對(duì)應(yīng)存儲(chǔ)器上的一塊地址比如RAM上的0x0000~0x0200一塊地址;Flash 0x1000~0x1200一塊地址;

參考頁: 你可以理解為定義的邏輯地址對(duì)應(yīng)Flash上的一塊地址,比如邏輯地址0x0000~0x0200對(duì)應(yīng)Flash上一塊0x1000~0x1200這個(gè)地址;那么參考頁的屬性在標(biāo)定過程是可讀不可寫;

工作頁:你可以理解為定義的邏輯地址對(duì)應(yīng)RAM上的一塊地址,比如邏輯地址0x0000~0x0200對(duì)應(yīng)RAM上一塊0x0000~0x0200這個(gè)地址;注意工作頁的屬性是可讀可寫(方便標(biāo)定修改嘛)

激活頁:就是指選擇激活的一個(gè)頁,比如激活工作頁或者激活參考頁等。

這里再進(jìn)一步說一下標(biāo)定過程:首先激活參考頁(僅可讀),讀取當(dāng)前的參數(shù),比如PID中的比例因子 P,然后切換激活頁,激活工作頁(可讀可寫),這個(gè)時(shí)候就可以在線修改參數(shù),來獲得較好的PID曲線,從而確定優(yōu)化后的參數(shù)P,最后,我們還是需要將原來參考頁上的P參數(shù),寫入優(yōu)化后的P參數(shù),這樣就完成了一個(gè)參數(shù)的標(biāo)定。

下面我們講講兩種地址映射方式:

a.硬件方式

有些芯片是支持硬件地址映射的,比如我們現(xiàn)在使用的英飛凌TC27X系列,它的工作方式比較簡(jiǎn)單,就是在你切換激活的工作頁時(shí),操作寄存器,硬件完成地址映射。

舉個(gè)例子 假如Reg1 = 0時(shí),激活頁是參考頁,邏輯地址0x000~0x200 對(duì)應(yīng)的Flash中的0x100~0x300;

切換激活頁為工作頁時(shí),Reg1=1,對(duì)應(yīng)邏輯地址0x000~0x200 對(duì)應(yīng)Ram中的0x000~0x200;

是不是超簡(jiǎn)單,但是相應(yīng)芯片價(jià)格會(huì)貴一點(diǎn)。

b.軟件方式

其實(shí)就是加入一個(gè)offset偏移量來實(shí)現(xiàn)。

還是以上面的例子為例:

激活頁->參考頁 ??邏輯地址 0x000~0x200 ?-> Offset=0x100 ?Flash地址0x100~0x300 =(邏輯地址+Offset)

激活頁->工作頁 ??邏輯地址 0x000~0x200 ?->?Offset=0x000 ?Flash地址0x000~0x200 =(邏輯地址+Offset)

同樣也不不復(fù)雜,但是會(huì)部分增加軟件的維護(hù)工作。

激活頁->參考頁 ??邏輯地址 0x000~0x200 ?->?Offset=0x100 ?Flash地址0x100~0x300 =(邏輯地址+Offset)

5.XCP的命令簡(jiǎn)介

下面我將進(jìn)行一定的分類方法來進(jìn)行介紹;

Master->Slave (上位機(jī)到下位機(jī))總共0xFF條

?????名稱 ???????????????????PID范圍

?????CMD ?????????????????0xC0~0xFF

?????STIM ?????????????????0x00~0xBF

Slave?->Master(下位機(jī)到上位機(jī))總共0xFF條

?????名稱 ???????????????????PID范圍

?????Response ????????????0xFF

?????Error ????????????????????0xFE

? ? ?Event ???????????????????0xFD

?????Service ????????????????0xFC

?????DAQ ??????????????????0x00~0xFB ?//ODT的序號(hào)

下面大致解釋一下上面名稱:

CMD:指的是上位機(jī)下發(fā)給下位機(jī)的一些命令,比如連接命令FF,解鎖,獲取狀態(tài)等一些和下位機(jī)交互的命令;

STIM:你可以理解為一種上位機(jī)向下位機(jī)大量發(fā)數(shù)據(jù)的一種方式,相當(dāng)于反向的DAQ;

Response:肯定應(yīng)答,指的下位機(jī)答復(fù)上位機(jī)的命令;

Error:否定應(yīng)答上位機(jī)的命令;

Event:事件,指下位機(jī)發(fā)生某事件時(shí)通知上位機(jī);

Service:指下位機(jī)在某些情況下,需要上位機(jī)執(zhí)行一些動(dòng)作,你可以理解為請(qǐng)求上位機(jī)服務(wù)。

DAQ:很顯然,就是下位機(jī)上傳數(shù)據(jù)給上位機(jī)。

XCP數(shù)據(jù)包有兩種類型CTO和DTO。

命令傳輸對(duì)象(CTO:Command Transfer Object)被用來傳輸一般的控制命令:控制命令(CMD),命令響應(yīng)(RES),錯(cuò)誤包(ERR)事件包(EV)以及服務(wù)請(qǐng)求數(shù)據(jù)包(SERV)。

數(shù)據(jù)傳輸對(duì)象(DTO:Data Transfer Object)被用于傳輸同步數(shù)據(jù)采集數(shù)據(jù)(DAQ)和同步數(shù)據(jù)激勵(lì)數(shù)據(jù)(STIM)。

CMD: Command

RES: Response

ERR: Error

EV: Event

SERV: Service Request Processor

DAQ: Data Acquisition

STIM: Stimulation

6.XCP的A2L文件

ASAP2標(biāo)準(zhǔn)是ASAM組織制定的一套標(biāo)準(zhǔn),該標(biāo)準(zhǔn)規(guī)定了上位機(jī)(Master)和ECU(Slave)之間的通訊所需要的所有信息(可以是XCPonCAN,XCPonUSB等,也可以是CCP,還可以是UDS),而A2L文件就是ASAP2標(biāo)準(zhǔn)的表現(xiàn)形式。

符合ASAP2標(biāo)準(zhǔn)的A2L文件主要含有兩部分內(nèi)容:ECU的描述信息和通訊方式的描述信息。

首先A2L文件是采用ASAP2指定的一套類XML語言的描述性語言(采用開標(biāo)簽和關(guān)標(biāo)簽來描述信息)書寫的文件,它里邊包含了某個(gè)特定的ECU中的軟件和系統(tǒng)信息,還包含了上位機(jī)和ECU通訊方式的約定,它用來指導(dǎo)上位機(jī)和ECU的通訊交互過程,讓他們對(duì)交互的信息有一致的認(rèn)識(shí),從而是上位機(jī)工具準(zhǔn)確且友好的將ECU中的信息展現(xiàn)給用戶。

A2L文件是啥呢?它其實(shí)就是一種方便XCP進(jìn)行工作的描述性一個(gè)文件,你可以理解為一個(gè)通訊矩陣,包含了項(xiàng)目信息、ECU信息、標(biāo)定變量信息、測(cè)量變量信息等等如下所示。

/begin PROJECT /*表示一整個(gè)項(xiàng)目,一個(gè)文件一個(gè)項(xiàng)目*//begin HEADER /*描述項(xiàng)目信息,包括項(xiàng)目編號(hào),項(xiàng)目版本等信息*/ /end HEADER/begin MODULE Device/*描述ECU需要的所有信息,一個(gè)ECU對(duì)應(yīng)一個(gè)MODULE塊*//begin MOD_PAR /*管理ECU的數(shù)據(jù),CPU 客戶 編號(hào)等等,最重要的是內(nèi)存的分段分頁管理,類似DSP中的CMD文件*//end MOD_PAR /begin MOD_COMMON/*一般性描述信息,比如大小端,數(shù)據(jù)的對(duì)齊方式*//end MOD_COMMON/begin CHARACTERISTIC/*定義標(biāo)定變量,包含被標(biāo)定的變量的名字,地址,長(zhǎng)度,計(jì)算公式,精度,最大最小值等信息*//end CHARACTERISTIC /*可定義多個(gè)*//begin AXIS_PTS/end AXIS_PTS/begin MEASUREMENT/*定義測(cè)量變量,包含了被測(cè)量的變量的名字,地址,長(zhǎng)度,計(jì)算公式,精度,最大最小值等信息*//end MEASUREMENT/*可定義多個(gè)*//begin COMPU_METHOD/*定義計(jì)算公式,及原始值和物理值之前的轉(zhuǎn)換關(guān)系 如phy = ax+b*//end COMPU_METHOD/begin COMPU_TAB /*定義原始值和物理值的映射關(guān)系 一般是枚舉變量*//end COMPU_TAB/begin FUNCTION/end FUNCTION/begin GROUP/end GROUP/begin RECORD_LAYOUT/*定義標(biāo)定變量的物理存儲(chǔ)結(jié)構(gòu)(一維,二維表,三維表等)*//end RECORD_LAYOUT/end MODULE Device /end PROJECT

A2L文件結(jié)構(gòu)及內(nèi)容

一個(gè)A2L文件只能有一個(gè)Project(項(xiàng)目),而項(xiàng)目中至少要有一個(gè)Module,A2L文件的注釋和C語言的注釋方式是一樣的,支持/**/和//兩種方式。
上邊文件結(jié)構(gòu)中,不同的文件塊的意義:

  • HEADER這個(gè)塊里邊包含了項(xiàng)目信息,包括項(xiàng)目編號(hào),項(xiàng)目版本等信息
  • MODULE這個(gè)塊里邊包含了在標(biāo)定測(cè)量層面來描述ECU需要的所有信息,一個(gè)ECU對(duì)應(yīng)一個(gè)MODULE塊,MODULE由許多子塊來組成1MOD_PAR這個(gè)塊里包含了用于管理ECU的數(shù)據(jù),例如客戶名,編號(hào),CPU類型,ECU的內(nèi)存分配等,其中最重要的就是ECU的內(nèi)存分配,開發(fā)人員需要根據(jù)ECU內(nèi)存分段情況定義MEMORY SEGMENT和SEGMENT里邊的PAGE,這里的SEGMENT/PAGE的概念和在線標(biāo)定中的概念是一致的,請(qǐng)參考在線標(biāo)定篇章,一個(gè)MODULE里邊只能出現(xiàn)一次。
  • MOD_COMMON這個(gè)塊用來指定ECU的一些標(biāo)準(zhǔn)的一般性描述信息,比如大小端,數(shù)據(jù)的對(duì)齊方式,FLOAT變量的處理方式等,一個(gè)MODULE里邊只能出現(xiàn)一次。
  • CHARACTERISTIC這個(gè)塊用來定義標(biāo)定變量,里邊包含了可以被標(biāo)定的變量的名字,地址,長(zhǎng)度,計(jì)算公式,精度,最大最小值等信息,一個(gè)MODULE里邊可以出現(xiàn)很多次這樣的塊,也就是說一個(gè)ECU可以有很多的標(biāo)定變量。
  • AXIS_PTS這個(gè)塊用來定義數(shù)組或查表變量對(duì)應(yīng)的軸的類型,它將被RECORD_LAYOUT塊來引用,一個(gè)ECU里邊可以有很多種不同的軸類型,用于實(shí)現(xiàn)查表和插值。
  • MEASUREMENT這個(gè)塊用來定義測(cè)量變量,里邊包含了可以被測(cè)量的變量的名字,地址,長(zhǎng)度,計(jì)算公式,精度,最大最小值等信息,一個(gè)MODULE里邊可以出現(xiàn)很多次這樣的塊,也就是說一個(gè)ECU可以有很多的測(cè)量變量。
  • COMPU_METHOD用于定義計(jì)算公式,及原始值和物理值之前的轉(zhuǎn)換關(guān)系,這些公司可以被標(biāo)定變量和測(cè)量變量來引用,從而將原始值轉(zhuǎn)換成便于用戶閱讀和使用的物理值。
  • COMPU_TAB這個(gè)塊用來定義原始值和物理值的映射關(guān)系,是一種特殊的轉(zhuǎn)換關(guān)系,它一般應(yīng)用于枚舉變量,例如我們想采集一個(gè)代表XCP狀態(tài)機(jī)的變量,分別為0對(duì)應(yīng)DISCONNECTED,1對(duì)應(yīng)CONNECTED,2對(duì)應(yīng)RESUME,那么我們就可以把這樣的映射關(guān)系定義層一個(gè)COMPU_TAB,然后關(guān)聯(lián)到對(duì)應(yīng)的變量上,這時(shí)候如果上位機(jī)采集到1這樣的原始值,它就可以將當(dāng)前的狀態(tài)顯示成“CONNECTED”字樣,方便用于閱讀和使用。
  • FUNCTION這個(gè)塊不是必須。
  • GROUPS這個(gè)塊這個(gè)把標(biāo)定變量和測(cè)量變量按照一定的邏輯(比如功能模塊)組織起來,在上位機(jī)工具中形成一個(gè)下拉菜單,使得用于可以從中選擇變量,這個(gè)塊不是必須的。
  • RECORD_LAYOUT這個(gè)塊用來定義標(biāo)定變量的物理存儲(chǔ)結(jié)構(gòu)(單個(gè)變量,二維表,三維表等)。
  • 上述的這些信息塊可以分為兩類:

    • 一類是隨著ECU和XCP實(shí)施完成以后就確定的,這類信息一經(jīng)確定以后再后續(xù)的使用過程中是不需要修改的,例如大小端,MEMORY SEGMENT內(nèi)存分配等,上述HEADER/MOD_PAR/MOD_COMMON屬于這一類,另外一類是當(dāng)ECU軟件有所調(diào)整的時(shí)候就會(huì)變化的,例如已有的標(biāo)定變量和測(cè)量變量的地址,甚至變量名,或者可能會(huì)新增變量,上述CHARACTERISTIC/AXIS_PTS/MEASUREMENT/COMPU_METHOD/COMPU_TAB/FUNCTION
      /GROUPS/RECORD_LAYOUT屬于這一類。
    • 在第二類中改動(dòng)最多的尤其是CHARACTERISTIC和MEASUREMENT快中的變量地址信息,因?yàn)槊看诬浖兓匦戮幾g都會(huì)造成這部分信息的更新,地址更新導(dǎo)致的塊信息更新需要手動(dòng)的更改A2L文件才能使得A2L和當(dāng)前的軟件配置起來,只有兩者相匹配才能實(shí)現(xiàn)正確的標(biāo)定和測(cè)量。

    ?A2L塊示例

    測(cè)量變量vechicle_speed可以進(jìn)行如下定義,該變量處于RAM中,對(duì)應(yīng)的地址是0xD0001234,它的范圍是[0-230] ,它在ECU中以一個(gè)UWORD類型來表示,原始值和物理值的轉(zhuǎn)換關(guān)系為:Phy = 0.003 X Raw ,即Ax+B中A=0.003,B=0;

    測(cè)量變量xcp_state代表XCP的狀態(tài),可以進(jìn)行如下定義,它處于RAM中,在ECU中的地址是0xD0005678,它是一個(gè)枚舉量,0對(duì)應(yīng)DISCONNECTED,1對(duì)應(yīng)CONNECTED,2對(duì)應(yīng)RESUME;

    標(biāo)定變量Current_threshold可以進(jìn)行如下定義,它處在FLASH標(biāo)定區(qū)域,在ECU中的地址是0x00012345,它的范圍是[-20,20],是一個(gè)有符號(hào)量,精度為0.125,即Phy = 0.125 X Raw我們前邊提到的,在每次軟件有更新重新編譯以后,會(huì)導(dǎo)致這些變量在ECU中的地址有變化,

    那么上邊這些變量對(duì)應(yīng)的ECU ADDRESS條目的內(nèi)容就需要隨著改變,變量的地址信息可以從編譯生成的MAP文件中獲得,然后手動(dòng)更新到A2L中。

    總結(jié)

    以上是生活随笔為你收集整理的XCP协议学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲午夜免费视频 | 亚洲国产欧美日韩 | 成人免费国产 | 天堂伊人 | 日日草夜夜草 | 欧美一级视频免费观看 | 日本欧美国产 | 日本黄色录像片 | 日本三级韩国三级三级a级按摩 | 精品中文字幕在线播放 | 久久久精品影院 | 嫩草免费视频 | 午夜大片在线观看 | 中国av毛片 | 永久免费观看av | 国产刺激对白 | 伦理自拍 | 免费看黄色三级 | 日韩久久一级片 | 国产福利在线看 | 看久久| 美女被草视频在线观看 | 国产在线观看免费网站 | 亚洲欧美国产高清va在线播放 | 无码人妻丰满熟妇区五十路 | 天堂网www. | 岛国视频一区 | 51av在线| 青娱乐国产盛宴 | 久久五月天综合 | 久久久久久久久久99 | 午夜小视频在线播放 | 中文字幕18页 | 69xx欧美 | 最新一区二区三区 | 青青青在线视频观看 | 国产成人av在线 | 日韩伦理视频 | 欧美黄色性生活 | 韩国电影大尺度在线观看 | 91视| 青青在线播放 | 欧美一区二区三区观看 | 亚洲一区二区三区免费观看 | 久久久综合网 | 91在线精品一区二区 | 国产黄色精品网站 | 欧美成人免费在线 | 爱情岛亚洲首页论坛小巨 | 日韩中文字幕影院 | 视频一区在线免费观看 | 国内一级视频 | 欧美色999 | 日本激情在线 | 丰满熟妇肥白一区二区在线 | 中文字幕偷拍 | 欧洲色av| 五月婷婷丁香久久 | 久草视频国产 | 被绑在床强摁做开腿呻吟 | 日本aⅴ在线观看 | av天天有| 高清国产一区二区三区四区五区 | 一出一进一爽一粗一大视频 | japanese强行粗暴| 欧美激情片一区二区 | 一区二区三区精品国产 | 日韩在线观看不卡 | 一本之道久久 | 国产精品自拍偷拍视频 | 爱爱免费视频 | 极度诱惑香港电影完整 | 国产cao | 精品无码免费视频 | 欧美亚洲国产一区二区三区 | 久久免费在线观看 | 插插影视 | 91中文视频| 免费在线播放视频 | 日日摸夜夜添狠狠添久久精品成人 | 日本特级淫片 | 久久久久久影视 | 丁香色欲久久久久久综合网 | 爱爱免费视频网站 | 亚洲午夜精品久久久久久浪潮 | 亚洲av首页在线 | 99热最新在线| 懂色一区二区三区免费观看 | va在线视频 | 亚欧精品在线观看 | 国产不卡av在线播放 | 中文字幕亚洲综合 | 在线观看视频91 | 好吊色在线观看 | 久久人人爱 | 日日操av | 青青草一区二区 | 91国自啪| 色婷婷基地 |