04 Xcp 标定过程介绍
要更改XCP Slave中的參數,XCP Master必須將參數的位置以及值本身發送給Slave。
XCP總是用5個字節定義地址:4個字節用于實際地址,1個字節用于地址擴展。基于CAN傳輸,XCP消息只有7個有用的字節可用。例如,如果標定工具設置了一個4字節的值,并且想要在一個CAN消息中同時發送這兩個信息,那么就沒有足夠的空間來完成這一操作。由于總共需要9個字節來傳輸地址和新值,這個變化不能在一個CAN消息(有用的7個字節)中傳輸。因此,標定請求是由Master向Slave發送兩條信息完成,Slave必須確認這兩個消息。
下圖顯示了Master和Slave之間的通信,需要設置一個參數值。實際信息解釋被隱藏,通過用鼠標“展開”它來顯示。
在Master的第一個消息中,Master發送了SET_MTA命令給Slave,該命令將寫入一個新的地址值。在第二條消息中,Slave對命令表示肯定Ok: SET_MTA。
第三條消息下載傳輸十六進制值以及有效的字節數。在本例中,由于是浮點數,有效的字節數是4。Slave在第四個消息中同意給予了肯定響應。
這就完成了當前的標定過程。在Trace顯示中,您可以識別到最后一個命令SHORT_UPLOAD。,這是Vector的測量和標定工具CANape的一個特殊方面。為了確保標定成功,在標定結束后再次讀出該值,并將顯示更新為讀出值。這可以讓用戶直接識別是否執行了標定命令。這個命令也得到了一個肯定的確認:SHORT_UPLOAD。
當參數在ECU的RAM中發生變化時,應用程序將處理新的值。然而,重新啟動ECU會導致該值被擦除,并用flash中的原始值覆蓋RAM中的值。那么,如何永久保存修改后的參數呢?
基本上有兩種可能:
?
一、保存在ECU中
例如,RAM中改變的數據可以保存在ECU的EEPROM中:當ECU掉電時自動保存,或由用戶手動保存。前提條件是數據可以存儲在Slave的非易失性內存中。在ECU中,這將是EEPROM或flash。然而,具有數千個參數的ECU很少能夠提供這么多未使用的EEPROM內存空間,因此這種方法很少見。
另一種可能是將RAM參數寫回ECU的flash內存。這種方法比較復雜。Flash內存必須先被擦除,然后才能被重寫。反過來,這只能作為一個塊來完成。因此,這不是簡單地回寫單個字節的問題。
二、將參數以文件的形式保存到PC上
更常見的是將參數存儲在PC上。所有參數(或它們的子集)都以文件的形式存儲。不同的格式是可用的;最簡單的情況是ASCII文本文件,它只包含對象的名稱和值。其他格式還允許保存其他信息,例如關于修訂歷史參數的成熟度級別等。
場景:完成工作后,標定員希望享受一個自由的夜晚。因此,標定工具將執行的更改,以參數設置文件的形式保存在ECU的RAM中。第二天,標定員想要繼續他停止的工作。標定工具啟動ECU。在引導時,參數在RAM中初始化。然而,ECU使用存儲在flash中的值來做到這一點。這意味著前一天的變化在ECU中不再可用。為了繼續前一天停止的工作,標定工具使用DOWNLOAD命令通過XCP將參數設置文件的內容傳輸到ECU的RAM中
?
保存參數設置文件Hex文件和刷新
刷新ECU flash是另一種改變flash參數的方法。當ECU啟動時,它們被作為新參數寫入RAM。參數文件也可以被傳輸到C或H文件中,并在運行編譯器/鏈接器時被制成新的flash文件。但是,根據代碼的參數,生成flash十六進制文件的過程可能需要相當長的時間。此外,標定工具可能沒有任何ECU源代碼,這取決于工作過程。
作為一種替代方案,標定工具可以將參數設置文件復制到現有的flash文件中。
?
在flash文件中,有一個包含地址和值的十六進制文件。現在參數文件可以復制到十六進制文件中。為此,CANape從參數文件中獲取地址和值,并在Hex文件的相關位置更新參數值。這將產生一個新的Hex文件,其中包含更改的參數值。現在這個Hex文件現在必須重新寫入flash中,并且在重新啟動后,新的參數值在ECU中是可用的。
總結
以上是生活随笔為你收集整理的04 Xcp 标定过程介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东搜索框的汉语分词技术太牛了!!!--
- 下一篇: 来淘宝的这一年:前篇、生活和工作