【轉(zhuǎn)載】XCP

轉(zhuǎn)載:https://blog.csdn.net/AgingMoon/article/details/78207245 作者:蔚藍忍者

本篇文章主要從以下幾個方面進行對XCP模塊的講解

1.XCP用來做什么漏麦;

2.XCP的工具簡介拴竹;

3.XCP的工作流程俩功;

4.XCP地址映射分析(軟件與硬件方式)枝缔;

5.XCP的命令簡介;

6.XCP中的A2L文件簡介溉苛;

1.XCP用來做什么拍皮?

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

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

a.標定

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

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

d.對ECU功能進行旁路派桩,簡單來說就是模擬ECU的數(shù)據(jù)

其中主要用a,b兩點,其他兩點用的比較少蚌斩。

2.XCP的工具簡介

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


3.XCP的一般工作流程

首先XCP是主從的工作結(jié)構(gòu),主節(jié)點(Master)即一個上位機员魏,我們定義它為測試系統(tǒng)丑蛤,當然你也可以理解為我們使用的XCP工具,一個主節(jié)點可以連接多個從節(jié)點(Slave)撕阎,以XCPOnCAN為例受裹,可以通過CAN ID的方式來識別不同的從節(jié)點,一般從節(jié)點需要兩個CANID虏束,一個源地址棉饶,一個目標地址。那么硬件連接如下所示:

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

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

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

c.第三步可以進行一些在線標定功能冀值,比如在臺架上標定PID的一些參數(shù),標定過程一般是先在一個存儲區(qū)(RAM)定義的變量找出一個比較好的參數(shù)宫屠,然后將這個比較好的參數(shù)固化下來列疗,擦除原來的數(shù)據(jù)寫入到另外一個映射好的存儲區(qū)(flash),這個是標定的一般過程浪蹂;

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

我認為映射關系可能是XCP中較核心的一個部分坤次,下面我們講一講c步驟中的地址映射古劲。

4.XCP地址映射

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


邏輯地址:為了XCP的邏輯應用定義的一塊地址,就像我們給一個變量定義了一個名字一樣缰猴;

物理地址:它是直接對應存儲器上的一塊地址比如RAM上的0x0000~0x0200一塊地址产艾;Flash 0x1000~0x1200;一塊地址;

參考頁: 你可以理解為定義的邏輯地址對應Flash上的一塊地址滑绒,比如邏輯地址0x0000~0x0200對應Flash上一塊0x1000~0x1200這個地址闷堡;那么參考頁的屬性在標定過程是可讀不可寫;

工作頁:你可以理解為定義的邏輯地址對應RAM上的一塊地址疑故,比如邏輯地址0x0000~0x0200對應RAM上一塊0x0000~0x0200這個地址杠览;注意工作頁的屬性是可讀可寫(方便標定修改嘛)

大家可以把上面的對應關系 畫一畫,會更清楚纵势。


激活頁:就是指選擇激活的一個頁倦零,比如激活工作頁 或者激活參考頁等误续。


這里再進一步說一下標定過程:首先激活參考頁(僅可讀),讀取當前的參數(shù)扫茅,比如PID中的比例因子 P蹋嵌,然后呢切換激活頁,激活工作頁(可讀可寫)葫隙,這個時候就可以在線修改參數(shù)栽烂,來獲得較好的PID曲線,從而確定優(yōu)化后的參數(shù)P恋脚,最后腺办,我們還是需要將原來參考頁上的P參數(shù)參數(shù),寫入優(yōu)化后的P參數(shù)糟描,這樣就完成了一個參數(shù)的標定怀喉。

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

a.硬件方式

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

舉個例子 假如Reg1 = 0時,激活頁是參考頁米诉,邏輯地址0x000~0x200 對應的Flash中的0x100~0x300;

切換激活頁為工作頁時菱蔬,Reg1=1,對應邏輯地址0x000~0x200 對應Ram中的0x000~0x200;

是不是超簡單史侣,但是相應芯片價格會貴一點拴泌。

b.軟件方式

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

還是以上面的例子為例:

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

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

同樣也不不復雜惊橱,但是會部分增加軟件的維護工作蚪腐。

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

5.XCP的命令簡介

我個人覺得簡單分類,可能更便于大家快速掌握了解李皇,下面我將進行一定的分類方法來進行介紹;

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

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

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

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

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

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

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

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



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

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

? ? ?DAQ ? ? ? ? ? ? ? ? ? 0x00~0xFB ?//ODT的序號

下面大致解釋一下上面名稱(命令是不要記得宙枷,用的時候去查吧):

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

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

Response:肯定應答哪亿,指的下位機答復上位機的命令粥烁;

Error:否定應答上位機的命令;

Event:事件蝇棉,指下位機發(fā)生某事件時通知上位機讨阻;

Service:指下位機在某些情況下,需要上位機執(zhí)行一些動作篡殷,你可以理解為請求上位機服務钝吮。

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

具體的一些命令大家可以去參考協(xié)議進行進一步的了解奇瘦。

6.XCP的A2L文件

為什么將這部分呢,因為個人覺得劲弦,這部分才是應用使用的核心耳标。

A2L文件是啥呢?它其實就是一種方便XCP進行工作的描述性一個文件邑跪,你可以理解為一個通訊矩陣,包含了項目信息呀袱、ECU信息贸毕、標定變量信息、測量變量信息等等如下所示夜赵。

/begin?PROJECT?/*表示一整個項目明棍,一個文件一個項目*/??


????/begin?HEADER?/*描述項目信息,包括項目編號寇僧,項目版本等信息*/???

????/end?HEADER??


????/begin?MODULE?Device/*描述ECU需要的所有信息摊腋,一個ECU對應一個MODULE塊*/??


?????????/begin?MOD_PAR?/*管理ECU的數(shù)據(jù),CPU?客戶?編號等等嘁傀,最重要的是內(nèi)存的分段分頁管理兴蒸,類似DSP中的CMD文件*/??

?????????/end???MOD_PAR???


?????????/begin?MOD_COMMON/*一般性描述信息,比如大小端细办,數(shù)據(jù)的對齊方式*/??

?????????/end???MOD_COMMON??


?????????/begin?CHARACTERISTIC/*定義標定變量橙凳,包含被標定的變量的名字,地址笑撞,長度岛啸,計算公式,精度茴肥,最大最小值等信息*/??

?????????/end???CHARACTERISTIC?/*可定義多個*/??


?????????/begin?AXIS_PTS??

?????????/end?AXIS_PTS??


?????????/begin?MEASUREMENT/*定義測量變量坚踩,包含了被測量的變量的名字,地址瓤狐,長度瞬铸,計算公式批幌,精度,最大最小值等信息*/??

?????????/end?MEASUREMENT/*可定義多個*/??


?????????/begin?COMPU_METHOD/*定義計算公式嗓节,及原始值和物理值之前的轉(zhuǎn)換關系?如phy?=?ax+b*/??

?????????/end?COMPU_METHOD??


?????????/begin?COMPU_TAB?/*定義原始值和物理值的映射關系?一般是枚舉變量*/??

?????????/end?COMPU_TAB??


?????????/begin?FUNCTION??

?????????/end?FUNCTION??


?????????/begin?GROUP??

?????????/end?GROUP??


?????????/begin?RECORD_LAYOUT/*定義標定變量的物理存儲結(jié)構(gòu)(一維荧缘,二維表,三維表等)*/??

?????????/end?RECORD_LAYOUT??


????/end??MODULE?Device??

/end?PROJECT??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赦政,一起剝皮案震驚了整個濱河市胜宇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恢着,老刑警劉巖桐愉,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掰派,居然都是意外死亡从诲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門靡羡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來系洛,“玉大人,你說我怎么就攤上這事略步∶璩叮” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵趟薄,是天一觀的道長绽诚。 經(jīng)常有香客問我,道長杭煎,這世上最難降的妖魔是什么恩够? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮羡铲,結(jié)果婚禮上蜂桶,老公的妹妹穿的比我還像新娘。我一直安慰自己也切,他們只是感情好扑媚,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雷恃,像睡著了一般疆股。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褂萧,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天押桃,我揣著相機與錄音葵萎,去河邊找鬼导犹。 笑死唱凯,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的谎痢。 我是一名探鬼主播磕昼,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼节猿!你這毒婦竟也來了票从?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滨嘱,失蹤者是張志新(化名)和其女友劉穎峰鄙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體太雨,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡吟榴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了囊扳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吩翻。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锥咸,靈堂內(nèi)的尸體忽然破棺而出狭瞎,到底是詐尸還是另有隱情,我是刑警寧澤搏予,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布熊锭,位于F島的核電站,受9級特大地震影響缔刹,放射性物質(zhì)發(fā)生泄漏球涛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一校镐、第九天 我趴在偏房一處隱蔽的房頂上張望亿扁。 院中可真熱鬧,春花似錦鸟廓、人聲如沸从祝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牍陌。三九已至,卻和暖如春员咽,著一層夾襖步出監(jiān)牢的瞬間毒涧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工贝室, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留契讲,地道東北人仿吞。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像捡偏,于是被迫代替她去往敵國和親唤冈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容