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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

XCP总结

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

轉(zhuǎn)載:https://blog.csdn.net/AgingMoon/article/details/78207245

本篇文章主要從以下幾個(gè)方面進(jìn)行對(duì)XCP模塊的講解

1.XCP用來做什么;
2.XCP的工具簡(jiǎn)介;
3.XCP的工作流程;
4.XCP地址映射分析(軟件與硬件方式);
5.XCP的命令簡(jiǎn)介;
6.XCP中的A2L文件簡(jiǎn)介;

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)用的比較少。

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地址映射

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

?

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

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

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

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

大家可以把上面的對(duì)應(yīng)關(guān)系 畫一畫,會(huì)更清楚。

?

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

?

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

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

a.硬件方式

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

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

切換激活頁(yè)為工作頁(yè)時(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)。

還是以上面的例子為例:

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

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

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

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

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

我個(gè)人覺得簡(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)

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

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ī)。

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

6.XCP的A2L文件

為什么將這部分呢,因?yàn)閭€(gè)人覺得,這部分才是應(yīng)用使用的核心。

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

?

[html]?view plain?copy

  • <code?class="language-html">/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)存的分段分頁(yè)管理,類似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</code>??
  • 總結(jié)

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

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