李巖,張曉謙,孫忠剛,劉超
(中國第一汽車股份有限公司技術(shù)中心汽車電子部,吉林長春130011)
車用電子控制器分頁標(biāo)定軟件技術(shù)研究與實(shí)現(xiàn)
李巖,張曉謙,孫忠剛,劉超
(中國第一汽車股份有限公司技術(shù)中心汽車電子部,吉林長春130011)
近年來,車用電子控制器在開發(fā)階段需要調(diào)試和優(yōu)化的標(biāo)定量大量增加。由于控制算法和標(biāo)定數(shù)據(jù)都需占用大量的存儲(chǔ)空間,標(biāo)定軟件在設(shè)計(jì)時(shí)不僅要滿足數(shù)據(jù)測(cè)量、在線標(biāo)定、數(shù)據(jù)下載等基本功能,還要兼顧控制器芯片的RAM資源情況。根據(jù)XCP協(xié)議規(guī)范,在MPC5644硬件平臺(tái)上設(shè)計(jì)了基于CAN總線的分頁標(biāo)定軟件,具有較好的通用性和可靠性。該技術(shù)通過內(nèi)存管理單元對(duì)標(biāo)定區(qū)的地址進(jìn)行切換,有效解決了標(biāo)定大量數(shù)據(jù)時(shí)單片機(jī)RAM資源緊缺的問題,同時(shí)優(yōu)化了數(shù)據(jù)下載功能。該標(biāo)定軟件目前已應(yīng)用于某汽車公司研發(fā)的產(chǎn)品ECU上,取得了良好的效果。
電子控制器;分頁標(biāo)定;XCP協(xié)議
標(biāo)定軟件是車用電子控制器平臺(tái)軟件的重要組成部分,在產(chǎn)品開發(fā)階段,應(yīng)用軟件設(shè)計(jì)人員通過該軟件來動(dòng)態(tài)修改和優(yōu)化控制器內(nèi)部的參數(shù)。隨著電控系統(tǒng)控制邏輯復(fù)雜度和控制變量數(shù)量的增加,控制器內(nèi)部的RAM資源難以滿足大量標(biāo)定數(shù)據(jù)進(jìn)行在線標(biāo)定的需求。出于成本和性能的考慮,作者采用分頁標(biāo)定技術(shù),利用一塊標(biāo)定RAM區(qū)支持多塊標(biāo)定ROM區(qū)域的標(biāo)定,同時(shí)對(duì)分頁后的標(biāo)定數(shù)據(jù)刷寫功能做了優(yōu)化。該方法通過單片機(jī)本身的地址切換機(jī)制實(shí)現(xiàn),支持在臺(tái)架和實(shí)車的環(huán)境下進(jìn)行標(biāo)定工作,對(duì)于大量數(shù)據(jù)的標(biāo)定無須增加外擴(kuò)RAM,節(jié)省了控制器的開發(fā)成本。
標(biāo)定模塊工作的系統(tǒng)環(huán)境如圖1所示,上位機(jī)工具通過ECU描述文件來獲得ECU內(nèi)部變量的地址、長度、數(shù)據(jù)類型等信息,再通過CAN總線與ECU控制器進(jìn)行命令和數(shù)據(jù)傳輸,從而實(shí)現(xiàn)對(duì)控制器變量測(cè)量和在線標(biāo)定等功能[1]。
圖1 標(biāo)定模塊的系統(tǒng)環(huán)境
在車用電子控制器開發(fā)的過程中,除了控制算法本身復(fù)雜度逐步提高以外,某些控制器對(duì)數(shù)據(jù)融合、功能安全的要求也越來越高,需要觀測(cè)的變量數(shù)大幅增加。與此同時(shí),電子控制器的開發(fā)對(duì)于觀測(cè)數(shù)據(jù)的采集速度也提出了更高的要求,而XCP協(xié)議的通用性使得它具備針對(duì)其他通信速率更快的總線的可移植性,比如FlexRay、以太網(wǎng)等[2]。因此,基于該協(xié)議的研究和軟件實(shí)現(xiàn)不僅可以滿足當(dāng)前ECU的產(chǎn)品開發(fā)需求,對(duì)于未來高速標(biāo)定技術(shù)的應(yīng)用也有著重要意義。
XCP協(xié)議是目前標(biāo)定軟件中常用的規(guī)范,它最早是由自動(dòng)化和測(cè)量系統(tǒng)標(biāo)準(zhǔn)化協(xié)會(huì)(ASAM)提出的。為了兼顧標(biāo)定的速度和標(biāo)定軟件的可重用性,XCP協(xié)議被設(shè)計(jì)成協(xié)議層和傳輸層完全獨(dú)立開,XCP中的X就代表該協(xié)議所支持的總線。這使得XCP成為一種更為通用的標(biāo)定和測(cè)量協(xié)議,因?yàn)樗膶?shí)現(xiàn)可以獨(dú)立于具體的物理層傳輸。根據(jù)XCP協(xié)議層規(guī)范,協(xié)議中所有通信的數(shù)據(jù)包都叫作XCP傳輸包,在標(biāo)定的過程中,主從節(jié)點(diǎn)所發(fā)送和接收的傳輸包分為兩種:命令傳輸包(Command Transfer Object,CTO)和同步數(shù)據(jù)包(Data Transfer Object,DTO)[3]。XCP的報(bào)文格式(如圖2所示)由報(bào)文頭、數(shù)據(jù)包和XCP報(bào)文尾三部分組成,這種結(jié)構(gòu)適用于不同網(wǎng)絡(luò)上的數(shù)據(jù)傳輸,保證消息傳遞不受物理層的影響。
圖2 XCP傳輸包格式
2.1 標(biāo)定模塊軟件架構(gòu)
采用32位單片機(jī)MPC564A80作為控制器硬件平臺(tái),該型號(hào)芯片有192 kB RAM資源和4 MB Flash資源,其中預(yù)留64 kB RAM作為在線標(biāo)定使用、128 kB ROM作為標(biāo)定數(shù)據(jù)的存儲(chǔ)區(qū)域。為了提高標(biāo)定模塊程序的復(fù)用性,整個(gè)系統(tǒng)軟件的實(shí)現(xiàn)主要由應(yīng)用程序?qū)?、XCP協(xié)議實(shí)現(xiàn)層、CAN傳輸層和底層模塊驅(qū)動(dòng)幾部分組成。APP層實(shí)現(xiàn)應(yīng)用的控制策略,XCP協(xié)議實(shí)現(xiàn)層包括初始化任務(wù)、數(shù)據(jù)采集周期任務(wù)、錯(cuò)誤處理、XCP標(biāo)準(zhǔn)協(xié)議棧實(shí)現(xiàn)、通信服務(wù)子程序?qū)崿F(xiàn)和用于分頁標(biāo)定的頁切換模塊。由于傳輸層和協(xié)議層的分離,使得XCP協(xié)議可以應(yīng)用于不同的總線,所以將協(xié)議棧與通信層相關(guān)的接口提取出來,方便在其他芯片上進(jìn)行移植。從平臺(tái)化的角度考慮,底層FLASH驅(qū)動(dòng)和CAN驅(qū)動(dòng)的實(shí)現(xiàn)均采用標(biāo)準(zhǔn)的AUTOSAR接口,增加了標(biāo)定組件這部分代碼的可重用性,為將來標(biāo)定軟件應(yīng)用在其他控制器提供了方便。
2.2 在線分頁標(biāo)定
為了在可靠性、經(jīng)濟(jì)性等方面提高控制器的性能,開發(fā)人員需要在臺(tái)架和實(shí)車環(huán)境中實(shí)時(shí)地調(diào)整和修正ECU內(nèi)部的控制變量。在軟件設(shè)計(jì)上,這些變量被存放在Flash上的固定區(qū)域內(nèi),程序運(yùn)行時(shí),將這部分?jǐn)?shù)據(jù)的內(nèi)容拷貝到相應(yīng)的RAM區(qū)域,再利用芯片的MMU(內(nèi)存管理單元)模塊將這些需要實(shí)時(shí)修改的控制變量進(jìn)行地址切換,從而實(shí)現(xiàn)了動(dòng)態(tài)修改標(biāo)定量的功能。對(duì)ECU系統(tǒng)的標(biāo)定分在線標(biāo)定和離線標(biāo)定[4]。文中提出的軟件實(shí)現(xiàn)方式支持在線和離線兩種標(biāo)定模式,開發(fā)人員可以在上位機(jī)工具上預(yù)先修改后標(biāo)定數(shù)據(jù),這些數(shù)值和地址信息保存在標(biāo)定工具內(nèi),重新建立連接后,可以將標(biāo)定數(shù)據(jù)更新到ECU的鏡像區(qū)域內(nèi),或者將保存好的二進(jìn)制數(shù)據(jù)文件下載到Flash區(qū)域。
利用64 kB的RAM區(qū)域來標(biāo)定128 kB的數(shù)據(jù),首先定義兩個(gè)標(biāo)定ROM區(qū)域,對(duì)標(biāo)定數(shù)據(jù)分別進(jìn)行定位,定位的方法如下:
#pragma ghs section rodata = ".Cal_Flash_Rom1"
const volatile uint8 cal_download = 1;
#pragma ghs section rodata = default
#pragma ghs section rodata= ".Cal_Flash_Rom2"
const volatile uint8 cal_download2 = 0;
#pragma ghs section rodata = default
每個(gè)分頁標(biāo)定ROM區(qū)大小為64 kB,通過對(duì)MMU的操作進(jìn)行標(biāo)定區(qū)地址的映射[5]。文中利用MMU來實(shí)現(xiàn)標(biāo)定區(qū)的分頁功能。MPC5644擁有16個(gè)TLB(Translation Lookaside Buffer)地址入口,支持從1 kB到4 GB的地址空間映射。通過對(duì)MMU編程來實(shí)現(xiàn)從虛擬地址(Virtual Address)向物理地址(Real Address)的轉(zhuǎn)化,MMU虛擬地址到物理地址的映射過程如圖3所示。TLB的作用是保存虛擬頁和物理頁之間的對(duì)應(yīng)關(guān)系,當(dāng)標(biāo)定軟件做頁切換操作時(shí),實(shí)際上是芯片MMU模塊更新了TLB的記錄,包括地址信息、分頁區(qū)大小等信息,使得單片機(jī)內(nèi)存中虛擬地址和實(shí)際地址的映射關(guān)系發(fā)生了改變。
同一時(shí)刻,只有一個(gè)分頁ROM區(qū)可以映射到標(biāo)定RAM區(qū),所以分布在不同分頁區(qū)的標(biāo)定量不允許被同時(shí)標(biāo)定,分頁標(biāo)定的切換機(jī)制如圖4所示。調(diào)和有限的MCU內(nèi)部RAM資源和逐步增加的系統(tǒng)標(biāo)定數(shù)據(jù)之間的矛盾,用一塊RAM完成兩塊以上ROM數(shù)據(jù)的標(biāo)定,節(jié)省MCU外擴(kuò)RAM的投入。文中沒有依賴XCP命令包中的相關(guān)頁切換命令來實(shí)現(xiàn),而是根據(jù)所選芯片的特點(diǎn),將標(biāo)定頁切換的具體切換過程融合到XCP的標(biāo)準(zhǔn)命令包中,將頁切換開關(guān)做成一個(gè)標(biāo)定量,通過修改標(biāo)定開關(guān)來切換不同的標(biāo)定區(qū)域。操作過程與單頁標(biāo)定的操作過程一致,方便程序開發(fā)人員使用,同時(shí)進(jìn)一步提高了XCP模塊的可移植性和對(duì)上位機(jī)工具的兼容性。
圖3 虛擬地址與物理地址映射關(guān)系
圖4 標(biāo)定分頁區(qū)域?qū)?yīng)關(guān)系
2.3 數(shù)據(jù)觀測(cè)和下載
對(duì)于數(shù)據(jù)采集功能,此軟件支持靜態(tài)DAQ采集和動(dòng)態(tài)DAQ采集兩種方式[6],能夠在不同周期任務(wù)中實(shí)現(xiàn)數(shù)據(jù)傳輸。對(duì)于標(biāo)定數(shù)據(jù)下載,該模塊除了支持標(biāo)準(zhǔn)的XCP協(xié)議外,還具備掉電下載功能,即通過下載數(shù)據(jù)開關(guān)實(shí)現(xiàn)當(dāng)前標(biāo)定RAM內(nèi)數(shù)據(jù)的刷寫,兩種數(shù)據(jù)刷寫方式如圖5所示。
第一種方式通過上位機(jī)工具和ECU交互,基于PROGRAM_START、SET_MTA、PROGRAM_CLEAR、PROGRAM、PROGRAM_NEXT等XCP協(xié)議命令進(jìn)行數(shù)據(jù)下載,需要將標(biāo)定RAM區(qū)域的數(shù)據(jù)保存到上位機(jī),再進(jìn)行下載。第二種方式通過標(biāo)定量開關(guān),標(biāo)定軟件將當(dāng)前的標(biāo)定RAM區(qū)數(shù)據(jù)下載到對(duì)應(yīng)的分頁ROM區(qū)域中,下載過程沒有數(shù)據(jù)交互,也不需要將標(biāo)定數(shù)據(jù)保存到上位機(jī),簡(jiǎn)化了操作步驟,同時(shí)節(jié)省了數(shù)據(jù)下載時(shí)間。
圖5 標(biāo)定數(shù)據(jù)刷寫
通過上述研究,提出的ECU端標(biāo)定軟件實(shí)現(xiàn)方案具備了數(shù)據(jù)測(cè)量、分頁標(biāo)定等功能,達(dá)到了設(shè)計(jì)目的,實(shí)際使用的效果滿足預(yù)期的要求。除實(shí)現(xiàn)了標(biāo)準(zhǔn)的XCP-On-CAN協(xié)議外,還具備以下特點(diǎn):
占用芯片資源少。采用分頁技術(shù),將128 kB的標(biāo)定數(shù)據(jù)映射到64 kB RAM區(qū)域,通過分頁機(jī)制實(shí)現(xiàn)了對(duì)全部數(shù)據(jù)進(jìn)行在線修改,節(jié)省了單片機(jī)RAM資源。
通用性強(qiáng)。該標(biāo)定軟件采用國際通用的XCP協(xié)議實(shí)現(xiàn)了數(shù)據(jù)測(cè)量、在線標(biāo)定和數(shù)據(jù)下載等功能。軟件架構(gòu)層次清晰,可在不同芯片平臺(tái)上進(jìn)行移植。標(biāo)定分頁功能通過一個(gè)標(biāo)定量作為切換開關(guān),不依賴上位機(jī)工具的選取。
可靠性高。對(duì)整個(gè)標(biāo)定系統(tǒng)在實(shí)驗(yàn)室、臺(tái)架和實(shí)車環(huán)境下進(jìn)行測(cè)試,并且已在某汽車公司開發(fā)的電控系統(tǒng)中得到應(yīng)用。
【1】邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法[M].北京:清華大學(xué)出版社,2004:51-90.
【2】SCHUERMANS R,ZAISER R,HEPPERLE F,et al.XCP-Part2:Protocol Layer Specification-1.0[M].Association for Standardization of Automation and Measuring Systems,2003.
【3】SCHUERMANS R,ZAISER R,HEPPERLE F,et al.XCP-Part3:Transport Layer Specification XCP on CAN-1.0[M].Association for Standardization of Automation and Measuring Systems,2003.
【4】熊婉儀,吳宏志,朱元.基于CAN總線的XCP標(biāo)定協(xié)議研究[J].信息通信,2015(9):19-20. XIONG W Y,WU H Z,ZHU Y.Research of Based on CAN Bus XCP Calibration Protocol[J].Information & Communications,2015(9):19-20.
【5】程春桃.XCP協(xié)議在電控柴油機(jī)標(biāo)定系統(tǒng)中的應(yīng)用研究[D].西安:長安大學(xué),2011.
【6】肖亞迪,肖兵.基于XCP協(xié)議的ECU標(biāo)定系統(tǒng)開發(fā)[J].計(jì)算機(jī)測(cè)量與控制,2015,23(2):600-603. XIAO Y D,XIAO B.Development of ECU Calibration System Based on XCP Protocol[J].Computer Measurement & Control,2015,23(2):600-603.
Research and Implementation of Paging Calibration Software Technology on Automotive Electronic Controller
LI Yan, ZHANG Xiaoqian, SUN Zhonggang, LIU Chao
(Research & Development Center, FAW Group Corporation,Changchun Jilin 130011,China)
In recent years, values required debugging and optimization in development phase for automotive electronic controller are increased more and more. Since the control algorithm and calibrated data are required to take up a lot of storage space, not only calibration software should have the data measuring, on-line calibration, data download and other basic functions, but also RAM resources of the controller should be considered. The paging calibration software was designed on the MPC5644 platform, which had good universality and reliability. The calibration area was switched through the memory management unit. So RAM resources shortage problem when a large number of data were needed to calibrate was solved, at the same time, the data download function was optimized. The calibration software has been applied to a product ECU of some company, and good results have be achieved.
Electronic controller; Paging calibration; XCP protocol
2016-08-29
李巖(1986—),男,工程師,從事嵌入式軟件開發(fā)工作。E-mail:liyan6@rdc.faw.com.cn。
10.19466/j.cnki.1674-1986.2017.02.006
U463.6
B
1674-1986(2017)02-025-03