XCP概念和基本原理介绍
XCP概念和基本原理介紹
ASAM接口模型描述了Slave和Master之間發送和接收命令和數據。為了獨立于特定的物理傳輸層,XCP被細分為協議層和傳輸層。
根據傳輸層的不同,可分為XCP ON CAN、XCP ON Ethernet等。早在2005年XCP ON FlexRay首次亮相時,對新傳輸層的可擴展性就得到了證明。XCP協議的當前版本是1.3版本,于2015年獲得批準。
在設計該協議時優先考慮遵守以下原則:
?
- ECU 中的資源使用最少
- 高效溝通
- 簡單的從機實現
- 即插即用配置,只需少量參數
- 可擴展性
XCP的一個關鍵功能是允許對Slave的內存進行讀寫訪問。
讀訪問讓用戶測量一個內部 ECU 參數的時間響應。ECU 是具有離散時間行為的系統,其參數僅在特定的時間間隔內發生變化:僅當處理器重新計算值并在 RAM 中更新它時。XCP 在于獲取測量值???從同步變化的RAM到ECU中處理流程或事件,相關機制將在后面詳細說明。
寫訪問允許用戶在Slave中優化算法參數。訪問是面向地址的,即內存中主引用地址和從引用地址之間的通信。所以,一個參數的測量本質上是作為一個Master向Slave的請求實現的:“給我內存位置0x1234的值”。參數的校準—寫訪問—到Slave,意味著:“將地址0x9876的值設置為5”
XCP Slave并不一定需要在ecu中使用。它可以在不同的環境中實現:從基于模型的開發環境到hardware-in-the-loop 和software-in-the-loop件環境,再到通過JTAG、NEXUS和DAP等調試接口訪問ECU內存的硬件接口。
?
如何通過對ECU的讀寫訪問來優化算法?這樣做有什么好處?為了能夠在ECU運行時修改單個參數,必須有訪問它們的權限。并不是每種類型的內存都允許這個過程。只可能對RAM中的內存地址執行讀寫訪問(這里有意排除EEPROM)。以下是個人記憶技術之間的差異的簡要總結:對它們的知識是非常重要的理解在本書的進一步過程。
Memory基本原理
如今,flash內存存通常集成在ecu的微控制器芯片中,即使沒有電源供應,也能長期存儲代碼和數據。Flash內存的特殊之處在于,對單個字節的讀訪問確實可以在任何時候進行,但對新內容的寫入只能以塊的方式進行,通常是以相當大的塊進行。
Flash內存的壽命是有限的,這是指定的擦除周期的最大數量(取決于具體的技術,最大可達100萬個周期)。這也是寫周期的最大數量,因為在再次寫入內存之前,必須始終將內存擦除。
當這種擦除程序重復多次時,絕緣層(“隧道氧化膜”)可能會損壞。這意味著電子會慢慢泄漏,隨著時間的推移,一些信息會從1變為0。因此,在ECU中允許的閃存周期的數量受到嚴重限制。在生產ECU中,它往往只在個位數的順序上。這個限制由Flash Boot Loader監控,它使用一個計數器來跟蹤已經執行了多少Flash操作。當超過指定的數量時,Flash Boot Loader拒絕另一個Flash請求。
隨機存取存儲器(RAM)需要一個永久的電源供應;否則它會丟失內容。Falsh內存用于應用程序的長期存儲,而RAM用于緩沖計算數據和其他臨時信息。關閉電源會導致RAM內容丟失。與flash內存相比,RAM很容易讀取和寫入。
這個事實很清楚:如果需要在運行時更改參數,必須確保它們位于RAM中。理解這種情況是非常重要的。這就是為什么我們將基于下面的例子來看看ECU中應用程序的執行:
在應用程序中,y參數是從傳感器值x計算出來的。
/ Pseudo-code representation
a = 5;
b = 2;
y = a * x + b;
果應用程序在ECU中閃爍,控制器在啟動后按如下方式處理該代碼:x參數的值對應傳感器的值。因此,在某些時候,應用程序必須輪詢傳感器值,然后將該值存儲在分配給x參數的內存位置中。因為這個值總是需要在運行時重寫,所以內存位置只能位于RAM中。
計算參數y。a和b,作為因子和偏移量,存儲在flash內存中。它們被存儲為常量。y的值必須存儲在RAM中,因為這是唯一可以進行寫訪問的地方。在運行編譯器/鏈接器時,會設置參數x和y在RAM中的位置,以及a和b在flash中的位置。這就是對象被分配到唯一地址的地方。對象名稱、數據類型和地址之間的關系記錄在鏈接器映射文件中。鏈接映射文件是由編譯器運行生成的,可以以不同的格式存在。然而,所有格式的共同點是,它們至少包含對象名稱和地址。
在這個例子中,如果偏移量b和因子a依賴于特定的車輛,那么a和b的值必須單獨適應車輛的特定條件。這意味著算法保持不變,但參數值會隨著車輛的不同而改變。
在ECU的正常工作模式下,應用程序從flash內存運行。它不允許對單個對象進行任何寫訪問。這意味著位于flash區域的參數值不能在運行時修改。如果在運行時可以更改參數值,則要修改的參數必須位于RAM中,而不是閃存中。現在,參數和它們的初始值是如何進入內存的呢?如何解決需要修改更多的參數,而不能同時存儲在RAM中的問題?這些問題將我們引向標定概念的話題。
可以通過XCP協議的機制對內存內容進行讀寫訪問。訪問是以面向地址的方式進行的。讀訪問允許測量RAM中的參數,而寫訪問允許校準RAM中的參數。XCP允許與ECU中的事件同步執行測量。這確保了測量值相互關聯。每次重新開始測量時,可自由選擇要測量的信號。對于寫訪問,需要校準的參數必須存儲在RAM中。這需要一個標定概念。
總結
以上是生活随笔為你收集整理的XCP概念和基本原理介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝湖、Cutterman使用方法
- 下一篇: php如何生成一年的日历表_使用php动