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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XCP协议系列介绍01-看了就会的XCP协议

發布時間:2024/3/26 编程问答 106 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCP协议系列介绍01-看了就会的XCP协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文框架

  • 0. 前言
  • 1. XCP是什么?
  • 2. XCP用來做什么?
  • 3. XCP一般工作過程
  • 4. XCP命令簡介
    • 4.1 數據包簡介
    • 4.2 數據包報文格式
    • 4.3 數據傳輸方式
  • 5. XCP測量
    • 5.1 異步測量(Poling)
      • 5.1.1 SHORT_UPLOAD命令
      • 5.1.2 SHORT_UPLOAD應答
      • 5.1.3 Poling模式特點
    • 5.2 DAQ測量
    • 5.3 DAQ基本原理
      • 5.3.1DAQ基本原理
      • 5.3.2 動態DAQ
  • 6 XCP標定
    • 6.1 地址映射
      • 6.1.1 硬件方式(Overlay)
      • 6.1.2 軟件方式(Offset偏移)
    • 6.2 TC3xx系列Overlay
  • 7 A2L文件格式
  • 8 XCP的實際應用
    • 8.1 XCP工具簡介
  • 9. XCP系列文章匯總

0. 前言

本文將對XCP是什么?做什么?一般工作過程,測量及標定等基本內容用最直白的語言掰開揉碎詳細介紹,滿足大家對XCP初步的認識,耐心看完本文你就會對XCP有基本掌握,收藏反復看效果更好。

另外,如果你對XCP實戰有更高需求,可移步到XCP實戰專欄,滿足更高進階需求。
實戰系列導讀快速鏈接:XCP實戰系列導讀

1. XCP是什么?

XCP表示“通用測量和校準協議”。“X”代表任意的傳輸層(如CAN、CANFD、FlexRay、Ethernet…)。由ASAM工作委員會(自動化和測量系統標準化協會)標準化。ASAM是汽車OEM,供應商和工具生產商的組織。

XCP是繼CCP(CAN校準協議)之后的協議升級版,基于CAN的部分基本沒有改變。XCP的開發旨在通過不同的傳輸媒介來實現此功能。

2. XCP用來做什么?

XCP的主要應用是內部ECU參數的測量和標定。在汽車軟件開發中,常會遇到需要在實車或者臺架調試時才能確定的變量,例如發動機控制器的點火角等參數,可能根據汽車的負載不一樣需要調整,這個時候就可通過XCP來標定。

XCP主要的用處以下總結為四點:測量、標定、刷新及對ECU進行旁路仿真。

其中主要用測量、標定及刷新功能,旁路功能用的相對較少。

3. XCP一般工作過程

首先XCP是主從的工作結構,主節點(Master)即一個上位機,我們定義它為測試系統,當然也可以理解為我們使用的XCP工具,一個主節點可以連接多個從節點(Slave),整個測試系統的連接如下所示:

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

1).將Master和Slave通過設備連接起來,通過發命令的方式建立連接;
2).通過上位機工具觀測之前定義好的一些變量,例如速度,轉矩,電壓等參數;
3)可進行在線標定,一般是先在一個存儲區(RAM)定義的變量找出一個比較好的參數,然后將這個比較好的參數固化下來,擦除原來的數據寫入到另外一個映射好的存儲區(flash);
4).通過將標定完成的軟件燒錄到ECU中,使用其編程的功能。

4. XCP命令簡介

4.1 數據包簡介

XCP的數據包分為兩類:CTO(Command Transfer Object)與DTO(Data Transfer Object)

如將命令按傳遞方向,可劃分如下:

CMD:指的是上位機下發給下位機的一些命令,比如連接命令FF,解鎖,獲取狀態等一些和下位機交互的命令;
STIM:你可以理解為一種上位機向下位機大量發數據的一種方式,相當于反向的DAQ;用于數據標定時,上位機向下位機修改參數。
Response:肯定應答,指的下位機答復上位機的命令;
Error:否定應答上位機的命令;
Event:事件,指下位機發生某事件時通知上位機;
Service:指下位機在某些情況下,需要上位機執行一些動作,可理解為請求上位機服務。
DAQ:下位機上傳數據給上位機。

4.2 數據包報文格式

主、從設備之間每次傳輸的數據都采用XCP幀的格式,包含一個XCP報頭、XCP數據包和XCP報尾。XCP幀支持的傳輸層可將這三個幀元素映射到相應的傳輸幀格式。

PID是標識字段的一部分,用于標記數據包及數據包內部的數據值。

CTO與DTO報文XCP Packet包格式如下:

主結點對從結點進行XCP控制時使用“命令(CMD)”,此時的PID在“0xC0”到“0xFF”的范圍內。從結點對這個命令返回肯定應答的情況下,使用“應答(RES)”,此時PID變為“0xFF”。

4.3 數據傳輸方式


標準傳輸模式
在標準通信模型中,對從機的每個請求都有一個響應。除了 XCP 在 CAN 上,不允許多個從機對主機的命令做出響應。因此,每條 XCP 消息總是可以追溯到一個唯一的從機。這種模式是通信中的標準情況。

塊傳輸模式
塊傳輸模式是可選的,可以節省大量數據傳輸(例如上傳或下載操作)的時間。盡管如此,在這種模式下,性能問題必須朝著從機的方向考慮。因此,必須保持兩個命令之間的最小時間,命令總數必須限制在最大值的上限。

交錯傳輸模式
交錯模式也是出于性能原因而提供的,在典型通訊模式中,主機在收到上一條指令的回復前不會發送下一條指令,為提高通訊的效率,交錯通訊模型可以不等待回復直接再發送下一條指令。但是這種方法也是可選的,并且與塊傳輸模式相反,它在實踐中沒有相關性。

5. XCP測量

參數測量本質上是作為主設備對從設備的請求而實現的:“讀取存儲位置0x1234的值”。按測量方式可分為異步測量與同步測量。

5.1 異步測量(Poling)

即Poling模式,Poling是最簡單的測量方法,它不是基于DTO,而是基于CTO。對需要采集的變量進行挨個輪詢。

主站可以使用SHORT_UPLOAD命令從從站請求測量參數的值。這稱為輪詢。這是最簡單的測量情況:在已接收并執行SHORT_UPLOAD命令時發送測量參數的測量值。

異步測量是使用主結點發送的命令,通過指定的XCP地址來提取從結點的ECU內部的數據,并通過從結點的應答將該數據傳送給主結點,如此循環往復來實現的。為了取出數據,使用PID為“0xF4”的命令“SHORT_UPLOAD”。這個命令和應答的格式如下所述。

5.1.1 SHORT_UPLOAD命令

0字節 指定為PID“0xF4”
1字節 指定為取出字節數。最大為MAX_CTO -1字節
2字節 保留字段
3字節 指定為要讀出的8位擴展地址
4-7字節 指定為要讀出的32位地址

5.1.2 SHORT_UPLOAD應答

CTO 0字節位置,指定為PID“0xFF” CTO 1~MAX_CTO字節位置,指定為取出的數據
Poling模式下的特性:

5.1.3 Poling模式特點

1)Poling模式下的時間戳機制不能使用;
2)不同測量值時間上沒有一致性。
3)包含2條報文(上位機請求和Slave響應),影響總線負載率

5.2 DAQ測量


為了使測量與ECU的控制相匹配,有必要由ECU確定測量時機,并在數據取出來后由從結點發送到主結點。這種數據通信是通過DTO來完成的。

主結點在進行同步測量之前,通過命令指定要取出的數據的XCP地址,從結點在等到同步測量開始命令后,使用DTO發送到主結點。因此,在同步測量的情況下,不是通過命令和應答的組合,而是通過測量周期或事件,由從結點發送DTO報文到主結點。

ODT:同步數據傳輸對象與從機內存之間的映射關系(Object Descriptor Table)
DAQ: 位于從機的數據元素通過數據傳輸對象(Data AcQuisition),傳輸到主機,決定了在一個同步測量的周期或者事件觸發時要測量的內存數量。
每個事件周期(Event)可對應多個DAQ,一個DAQ包括多個ODT List,一個ODT包括多個變量。

5.3 DAQ基本原理

5.3.1DAQ基本原理

主機一次性配置好所有要讀取的變量,并關聯ECU端的不同事件channel,一旦ECU對應的事件發生(例如每隔100ms),主動上傳數據給主機。

5.3.2 動態DAQ

通過增加管理測量目標的DAQ列表中的ODT及其條目的數量,可以增加測量的測量點的數量。而且通過維持與要測量的事件通道數量一樣多的DAQ列表,可以對ECU的所有測量時機進行測量。但是這些數量的增加會增大ECU中的管理緩沖區,因此會消耗ECU的內存。

而且如果ECU具有10ms和20ms的控制周期,有場景下10ms的控制周期中測量的測量點的數量很大,有場景下20ms的控制周期中測量的測量點的數量也很大,即根據測量的場景不同,測量點的數量需求會有不同。對于這樣的應用程序,有一種稱為“動態DAQ”的功能,可以允許從結點動態更改每次測量的DAQ列表、ODT和ODT條目的數量。相反的,如果在集成XCP驅動程序時,這些數量是預先確定的,則稱為“靜態DAQ”。一個從結點將具有靜態或動態DAQ功能。

即同樣ECU內存情況下,可以通過減少10ms的DAQ來增加20ms的數量,在總的內存范圍中動態調整。

動態DAQ分配過程
動態DAQ列表配置使用FREE_DAQ、ALLOC_DAQ、ALLOC_ODT和ALLOC_ODT_ENTRY命令完成。這些命令允許在上述限制范圍內動態分配多個DAQ列表、多個ODT到DAQ列表以及多個ODT list到ODT。如果沒有足夠的內存來分配請求的對象,這些命令會得到一個ERR_MEMORY_溢出作為負響應。如果發生錯誤內存溢出,則完整的DAQ列表配置無效。

在動態DAQ列表配置序列開始時,主機始終首先必須發送一個FREE_DAQ。其次,對于ALLOC_DAQ,主機必須分配可配置DAQ列表的數量。然后,主機必須使用ALLOC_ODT命令將所有ODT分配給所有DAQ列表。最后,主機必須使用ALLOC_ODT_ENTRY命令將所有ODT條目分配給所有DAQ列表的所有ODT。

6 XCP標定

對從站的參數(寫訪問)的標定簡單可理解為:“將地址0x1234的值設置為5”。

在理解標定之前需要對參考頁、工作頁與激活頁有所了解:
參考頁(Reference Page):可以理解為定義的邏輯地址對應Flash上的一塊地址,參考頁的屬性在標定過程是可讀不可寫;
工作頁(Working Page):可以理解為定義的邏輯地址對應RAM上的一塊地址,工作頁的屬性是可讀可寫。
激活頁(Activiting Page):就是指選擇激活的一個頁,比如激活工作頁或者激活參考頁等。

標定過程:激活參考頁(僅可讀),讀取當前的參數,比如PID中的比例因子 P,然后切換激活頁,激活工作頁(可讀可寫),可以在工作頁在線修改參數,來獲得較好標定值,最后,需要將優化后的P參數寫入到原來參考頁上,這樣就完成了一個參數的標定。

6.1 地址映射

下面我們講講兩種地址映射方式:硬件方式與軟件方式

6.1.1 硬件方式(Overlay)

有些芯片是支持硬件地址映射的,比如英飛凌TC系列,其工作方式比較簡單,就是在切換激活的工作頁時,通過操作寄存器完成地址映射。
如當寄存器Reg1 = 0時,激活頁是參考頁,邏輯地址0x000~0x200 對應的Flash中的0x100~0x300;
切換激活頁為工作頁時,寄存器Reg1=1,對應邏輯地址0x000~0x200
對應Ram中的0x000~0x200;

6.1.2 軟件方式(Offset偏移)

通過加入一個offset偏移量來實現,還是以上面的例子為例:
激活頁->參考頁
邏輯地址 0x000~0x200 -> Offset=0x100 Flash地址0x100~0x300
=(邏輯地址+Offset)
激活頁->工作頁
邏輯地址 0x000~0x200 -> Offset=0x000 Flash地址0x000~0x200
=(邏輯地址+Offset)

6.2 TC3xx系列Overlay

將數據訪問從原始目標內存(“目標Flash地址”)重定向到Overlay內存(“重定向地址”)的原理如下所示:
數據訪問Overlay使用Overlay范圍(“Overlay Blocks”)定義。每個Overlay Block定義一個地址空間的連續范圍,訪問被重定向到該范圍。每個Overlay Block都配置有以下內容參數:
Overlay Block目標Base地址-要重定向的目標地址范圍的起始地址;
Overlay Block大小-要重定向的地址范圍的大小;
Overlay Block重定向Base地址-重定向的起始地址。

在AURIX TM中,每個TriCore實例最多可使用32個Overlay范圍。Overlay內存Block的大小可以是2nx32字節,n=0到12。這使Block大小的范圍從32字節到128 KB。

每個Overlay Block有3個相關寄存器,用于獨立配置這些參數。Overlay參數的配置如下所示:
目標Base地址在OTARx寄存器中進行配置,
OverlayBlock大小用OMAKX寄存器進行配置,
重定向Base地址使用RABRx寄存器進行配置。

7 A2L文件格式

相對A2L文件格式有詳細了解可以去博主另一篇專門介紹A2L文件的文章(博文名稱:XCP-A2L文件解析)中查看,下面部分僅做簡單概述。

A2L文件是采用ASAP2指定的一套類XML語言的描述性語言(采用開標簽和關標簽來描述信息)書寫的文件,是一種方便XCP進行工作的描述性文件,可以將其理解為一個通訊矩陣,包含了通訊接口(CAN,USB等,項目信息、ECU信息、標定變量信息、測量變量信息等。

一般A2l框架如下:

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

以上信息塊可分為兩類:

8 XCP的實際應用

8.1 XCP工具簡介

CANape、INCA、SPY等。

9. XCP系列文章匯總

  • XCP實戰系列介紹01-測量與標定底層邏輯介紹
  • XCP實戰系列介紹02-A2L文件詳盡解析
  • XCP實戰系列介紹03-英飛凌TC3xx芯片Overlay概述及開發過程介紹
  • XCP實戰系列介紹04-CANape工程配置超詳細介紹
  • XCP實戰系列介紹05-CANape觀測功能手把手教學
  • XCP實戰系列介紹06-CANape標定及標定后hex生成操作指導
  • XCP實戰系列介紹07-使用ASAP2 Editor生成A2l文件詳解
  • XCP實戰系列介紹08-基于Vehicle Spy進行XCP測量的工程配置詳解
  • XCP實戰系列介紹09-基于Vehicle Spy進行XCP測量步驟詳解
  • XCP實戰系列介紹10-基于CANoe實現XCP測量功能詳細介紹
  • XCP實戰系列介紹11-幾個常用的XCP命令解析
  • XCP實戰系列介紹12-基于Vector_Davinci工具的XCP配置介紹(一)
  • XCP實戰系列介紹13-基于Vector_Davinci工具的XCP配置介紹(二)
  • XCP實戰系列介紹14-基于Vector_Davinci工具的XCP配置介紹(三)
  • XCP實戰系列介紹15-XCP故障排查指導
  • 總結

    以上是生活随笔為你收集整理的XCP协议系列介绍01-看了就会的XCP协议的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。