謝江浩 彭憶強(qiáng) 朱麗 羅青松
摘 要:針對(duì)汽車總線多樣化以及汽車ECU之間數(shù)據(jù)交互量大的問(wèn)題,設(shè)計(jì)一款以32位微處理器為硬件內(nèi)核、以AUTOSAR為軟件架構(gòu),符合MISRA-C嵌入式編程規(guī)范,適用于多種通信總線的XCP標(biāo)定系統(tǒng)。在該標(biāo)定系統(tǒng)數(shù)據(jù)交互中,為增加標(biāo)定系統(tǒng)通用性和代碼可重用性,采用符合AUTOSAR通信協(xié)議棧的標(biāo)準(zhǔn)接口,實(shí)現(xiàn)與AUTOSAR其他協(xié)議棧的無(wú)縫連接。同時(shí)對(duì)XCP代碼進(jìn)行QAC檢測(cè),提高標(biāo)定系統(tǒng)代碼閱讀性。編寫Vector CANoe的CAPL腳本程序,進(jìn)行自動(dòng)功能測(cè)試,檢測(cè)標(biāo)定系統(tǒng)功能的完整性。測(cè)試結(jié)果表明:所設(shè)計(jì)的標(biāo)定系統(tǒng)數(shù)據(jù)交互實(shí)時(shí)性高、可靠性強(qiáng)。
關(guān)鍵詞:XCP;AUTOSAR;標(biāo)定系統(tǒng);QAC
文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-5124(2017)12-0113-06
Abstract: With regard to the diversified automobile bus and the amount of data exchange between ECU, a XCP calibration system that takes 32-bit microprocessor as the core of hardware and AUTOSAR as the software architecture, complies with MISRA-C standard and applicable to various communication buses is designed. In the data exchange of the calibration system, this system uses a standard port suitable for AUTOSAR protocol stack to improve the universality of the system and the reusability of the code, and realizes the seamless connection with other AUTOSAR protocol stacks. Meanwhile, the XCP systems code is detected with QAC method to improve the code readability of the calibration system. A CAPL script program is written based on Vector CANoe, and the automate testing of functional integrity of calibration system is carried out. The test results show that the designed calibration system has high real-time data and strong reliability.
Keywords: XCP; AUTOSAR; calibration system; QAC
0 引 言
標(biāo)定系統(tǒng)在汽車發(fā)動(dòng)機(jī)控制系統(tǒng)、變速器控制系統(tǒng)、底盤控制系統(tǒng)、剎車防抱死系統(tǒng)、車身電子控制系統(tǒng)等電子模塊的開(kāi)發(fā)中都具有重要作用,可以通過(guò)修改ECU控制軟件參數(shù)來(lái)提高車輛安全和舒適性能[1-2]。目前,隨著汽車智能化程度越來(lái)越高,汽車電子控制單元的數(shù)目越來(lái)越多,各電控單元之間的通信速度越來(lái)越快,通信采用的總線形式也趨于多樣化。但是,國(guó)外開(kāi)發(fā)的XCP標(biāo)定軟件不僅價(jià)格昂貴,而且不提供原代碼,而國(guó)內(nèi)大部分汽車廠商的標(biāo)定軟件都是基于CAN總線的CCP(CAN calibration protocol)標(biāo)定協(xié)議[3-4],所以開(kāi)發(fā)一款可以兼容不同通信總線的XCP標(biāo)定系統(tǒng)勢(shì)在必行。但是,由于汽車電子控制單元的多樣性,使得對(duì)不同的汽車電子控制單元,代碼都需重新開(kāi)發(fā),代碼重用性低、開(kāi)發(fā)成本高。為解決上述問(wèn)題,縮短研發(fā)周期,需開(kāi)發(fā)一款可重用的標(biāo)定軟件。
為此,本文開(kāi)發(fā)了一款基于AUTOSAR架構(gòu)的XCP標(biāo)定系統(tǒng)。該系統(tǒng)融入AUTOSAR軟件架構(gòu),使用通信標(biāo)準(zhǔn)接口進(jìn)行數(shù)據(jù)交互,實(shí)現(xiàn)XCP協(xié)議的模塊化開(kāi)發(fā),同時(shí)XCP協(xié)議可以實(shí)現(xiàn)不同總線上的數(shù)據(jù)傳輸,適用于不同硬件平臺(tái),提高通信能力,解決了使用其他汽車總線實(shí)現(xiàn)標(biāo)定的難題。最后,通過(guò)對(duì)所開(kāi)發(fā)的標(biāo)定系統(tǒng)進(jìn)行代碼QAC檢測(cè)及功能測(cè)試,結(jié)果顯示該標(biāo)定系統(tǒng)軟件功能完整、實(shí)時(shí)性高、性能穩(wěn)定。
1 AUTOSAR架構(gòu)簡(jiǎn)介
隨著汽車電子控制系統(tǒng)復(fù)雜性的不斷增加,軟件代碼量急劇上升,且嵌入式系統(tǒng)不支持硬件抽象,導(dǎo)致處理器型號(hào)更換以后,代碼的重用性差,軟件往往需要重新編寫,這就使得軟件系統(tǒng)開(kāi)發(fā)周期長(zhǎng)、成本高,不能滿足汽車電子技術(shù)高速發(fā)展的要求。于是AUTOSAR(automotive open system architecture)架構(gòu)應(yīng)運(yùn)而生[5],它是汽車制造商和供應(yīng)商共同合作開(kāi)發(fā)、建立的符合汽車電子開(kāi)放式E/E架構(gòu)行業(yè)標(biāo)準(zhǔn)。
AUTOSAR架構(gòu)整體分為3層,分別是應(yīng)用層、運(yùn)行環(huán)境抽象層、基礎(chǔ)軟件層。應(yīng)用層包括傳感器軟件組件、執(zhí)行器軟件組件以及應(yīng)用軟件組件。運(yùn)行環(huán)境抽象層是應(yīng)用軟件和基礎(chǔ)軟件層的通信橋梁,可以為應(yīng)用層提供一個(gè)統(tǒng)一的通信環(huán)境?;A(chǔ)軟件層是協(xié)議棧的實(shí)現(xiàn),包括標(biāo)準(zhǔn)通信棧、網(wǎng)絡(luò)管理模塊、診斷協(xié)議棧、存儲(chǔ)棧、操作系統(tǒng)、微控制器抽象層MCAL(microcontroller abstraction layer)驅(qū)動(dòng)軟件模塊。
本文所述標(biāo)定系統(tǒng)屬于基礎(chǔ)軟件層,它提供了一種符合AUTOSAR標(biāo)準(zhǔn)通信接口的標(biāo)定軟件模塊解決方案。
2 XCP標(biāo)定系統(tǒng)設(shè)計(jì)方案
本系統(tǒng)以飛思卡爾32位MPC5644作為微處理器。該微處理器最高總線時(shí)鐘頻率可達(dá)到150 MHz,內(nèi)部192 KB RAM,4 MB片內(nèi)Flash,滿足多標(biāo)定數(shù)據(jù)要求。其系統(tǒng)設(shè)計(jì)方案如圖1所示。
在此系統(tǒng)中,標(biāo)定工具支持Vector公司的CANape軟件、ETAS公司的INCA軟件以及普華I-CAL軟件,PC端標(biāo)定軟件與標(biāo)定工具對(duì)應(yīng),通信驅(qū)動(dòng)模塊可以是CAN總線、FlexRay總線、USB等,本系統(tǒng)使用CAN總線。
本系統(tǒng)的工作原理是:安裝于PC端的標(biāo)定軟件,通過(guò)GUI界面發(fā)送指令,標(biāo)定工具將命令轉(zhuǎn)換為通信數(shù)據(jù),發(fā)送給微處理器MPC5644通信驅(qū)動(dòng)模塊,XCP標(biāo)定協(xié)議棧根據(jù)命令要求進(jìn)行相應(yīng)操作。其通信命令包括標(biāo)準(zhǔn)命令組、標(biāo)定命令組、頁(yè)切換命令組、DAQ基本命令組、Flash刷寫組。XCP標(biāo)定協(xié)議棧響應(yīng)命令返回給PC標(biāo)定軟件,確認(rèn)操作是否成功。
3 符合AUTOSAR架構(gòu)的XCP協(xié)議實(shí)現(xiàn)
在AUTOSAR軟件架構(gòu)中,通信模塊通過(guò)Interface(接口)模塊與驅(qū)動(dòng)模塊進(jìn)行連接。本系統(tǒng)使用CAN總線傳輸標(biāo)定數(shù)據(jù),通過(guò)Can Interface模塊嵌入AUTOSAR軟件架構(gòu)。符合AUTOSAR軟件架構(gòu)要求,可以提高代碼重用性,更換處理器型號(hào)后,代碼不需要重新編寫,減少軟件系統(tǒng)研發(fā)成本、縮短開(kāi)發(fā)周期。
AUTOSAR通信協(xié)議棧一般抽象為總線驅(qū)動(dòng)模塊、總線接口模塊、網(wǎng)絡(luò)管理模塊、通信管理模塊、傳輸層模塊以及內(nèi)部數(shù)據(jù)交互模塊等。其中,總線驅(qū)動(dòng)模塊實(shí)現(xiàn)硬件通信驅(qū)動(dòng);總線接口模塊提供協(xié)議層數(shù)據(jù)路由;協(xié)議層數(shù)據(jù)路由,通過(guò)診斷協(xié)議與診斷模塊通信實(shí)現(xiàn)診斷功能;網(wǎng)絡(luò)管理模塊通過(guò)網(wǎng)絡(luò)管理協(xié)議實(shí)現(xiàn)其功能;內(nèi)部數(shù)據(jù)交互模塊實(shí)現(xiàn)ECU之間數(shù)據(jù)交互。同時(shí)運(yùn)行環(huán)境抽象層與通信管理模塊連接,實(shí)現(xiàn)與應(yīng)用層之間的通信[6]。圖2顯示XCP協(xié)議在AUTOSAR軟件架構(gòu)中的位置,可以基于CAN總線、FlexRay總線或以太網(wǎng),通過(guò)總線接口接入AUTOSAR軟件架構(gòu)。
XCP協(xié)議實(shí)現(xiàn)數(shù)據(jù)標(biāo)定與測(cè)量,通過(guò)AUTOSAR軟件架構(gòu)的總線接口實(shí)現(xiàn)數(shù)據(jù)發(fā)送與接收,嵌入式操作系統(tǒng)的任務(wù)調(diào)度實(shí)現(xiàn)不同通道DAQ周期上傳。
在圖2中,AUTOSAR XCP模塊在總線接口模塊上方,如FlexRay或CAN總線,并通過(guò)總線接口實(shí)現(xiàn)XCP協(xié)議獨(dú)立標(biāo)定數(shù)據(jù)的傳輸。
3.1 XCP協(xié)議數(shù)據(jù)發(fā)送過(guò)程分析
XCP協(xié)議通過(guò)CAN接口模塊的CanIf_Transmit函數(shù)發(fā)送數(shù)據(jù),發(fā)送成功后,調(diào)用CanIf_TxIndication回調(diào)函數(shù)確認(rèn)數(shù)據(jù)發(fā)送成功,圖3詳細(xì)說(shuō)明數(shù)據(jù)發(fā)送成功后的處理過(guò)程。
3.2 XCP協(xié)議數(shù)據(jù)接收響應(yīng)過(guò)程分析
XCP協(xié)議通過(guò)CAN接口模塊的CanIf_RxIndication函數(shù)接收測(cè)量數(shù)據(jù),并對(duì)其進(jìn)行處理,圖4詳細(xì)說(shuō)明數(shù)據(jù)接收成功后處理機(jī)制。具體實(shí)現(xiàn)了XCP獨(dú)有Block傳輸響應(yīng)機(jī)制,包含DAQ和STIM處理流程以及事件錯(cuò)誤與命令錯(cuò)誤的處理機(jī)制。由于CAN報(bào)文每幀最多8Byte數(shù)據(jù),未滿8Byte數(shù)據(jù)需用0xFF填充,所以完成數(shù)據(jù)接收后,需先對(duì)報(bào)文長(zhǎng)度進(jìn)行檢查,然后再判斷接收命令是否正確,再進(jìn)行相關(guān)處理。在Block模式下,進(jìn)行DOWNLOAD和PROGRAM命令處理,需先將命令數(shù)據(jù)包存入緩存池,判斷當(dāng)前標(biāo)定或刷寫命令的總字節(jié)長(zhǎng)度是否大于6,如果否,則將狀態(tài)置為接收;如果大于6,則狀態(tài)置為模塊接收,并將緩存池ID設(shè)置為DNLOAD_NEXT或PROGRAM_NEXT命令,并結(jié)束接收過(guò)程。
3.3 XCP協(xié)議分析
XCP協(xié)議通過(guò)主從模式進(jìn)行通信。其中主機(jī)一般指PC端標(biāo)定軟件,從機(jī)一般指包含XCP協(xié)議的ECU模塊。主機(jī)通過(guò)標(biāo)準(zhǔn)命令組中的CONNECT命令進(jìn)行與從機(jī)的連接;建立連接后,主機(jī)就可以發(fā)送標(biāo)定命令組的DOWNLOAD與UPLOAD命令進(jìn)行數(shù)據(jù)的標(biāo)定與測(cè)定,發(fā)送頁(yè)切換組命令SET_CAL_PAGE,實(shí)現(xiàn)RAM與Flash不同區(qū)域切換,發(fā)送DAQ/STIM命令組的WRITE_DAQ等命令實(shí)現(xiàn)標(biāo)定數(shù)據(jù)的實(shí)時(shí)上傳,同時(shí)也可以發(fā)送Flash刷寫命令組的PROGRAM命令實(shí)現(xiàn)數(shù)據(jù)儲(chǔ)存[7]。
XCP協(xié)議接受到命令后,首先判斷前期接收到的命令是否處理完成,是否處于空閑狀態(tài),再判斷接收到的命令是否有效,如果是則進(jìn)行相應(yīng)的命令處理。以標(biāo)準(zhǔn)命令處理過(guò)程為例,進(jìn)行說(shuō)明。
3.4 標(biāo)準(zhǔn)命令分析
在XCP協(xié)議中,標(biāo)準(zhǔn)命令主要用于主機(jī)與從機(jī)建立連接,數(shù)據(jù)的上傳與下載以及數(shù)據(jù)解鎖等。其包含的部分命令見(jiàn)表1。
通過(guò)CONNECT命令主機(jī)與從機(jī)建立連接。如果上傳與下載數(shù)據(jù)需要解鎖,必須通過(guò)GET_SEED命令獲取密鑰,并使用UNLOCK命令進(jìn)行解鎖;解鎖成功后,通過(guò)SET_MTA命令指定工作地址,之后才可以通過(guò)DOWNLOAD命令下載數(shù)據(jù)到該地址或通過(guò)UPLOAD命令上傳該地址對(duì)應(yīng)的數(shù)據(jù)。當(dāng)完成數(shù)據(jù)的傳輸后,可以通過(guò)DISCONNECT命令斷開(kāi)主機(jī)與從機(jī)之間的連接。表中的DOWNLOAD_NEXT命令用于Block功能傳輸中。
4 XCP軟件測(cè)試
XCP軟件測(cè)試主要是針對(duì)代碼的QAC掃描和功能測(cè)試,其中QAC掃描用于檢測(cè)編程規(guī)范是否滿足MISRA-C規(guī)范,增強(qiáng)代碼閱讀性以及減少代碼存在的風(fēng)險(xiǎn);功能測(cè)試用于檢測(cè)XCP軟件功能是否正確和完善。
4.1 QAC靜態(tài)掃描分析
代碼的QAC靜態(tài)掃描主要包括最大嵌套值STMIF、路徑復(fù)雜度STCYC、靜態(tài)路徑計(jì)數(shù)值STPTH、單一函數(shù)的行數(shù)STLIN、聲明靜態(tài)全局變量和函數(shù)STSCT、注釋密度STCDN。其中最大嵌套值需小于5,值過(guò)大會(huì)導(dǎo)致黑盒測(cè)試比較困難;路徑復(fù)雜度需小于15,值過(guò)大會(huì)增大代碼復(fù)雜度。另外,靜態(tài)路徑計(jì)數(shù)值需小于300,單一函數(shù)的行數(shù)需小于200,聲明靜態(tài)全局變量和函數(shù)需小于30,這3個(gè)數(shù)值均會(huì)影響代碼的可讀性及可靠性[9]。
本文以最大嵌套值舉例進(jìn)行說(shuō)明,如圖5所示。圖中有一個(gè)函數(shù)的最大嵌套值超過(guò)最大值,其原因是在實(shí)際代碼中,該函數(shù)需要支持多種刷寫方式,且檢查地址時(shí)需要對(duì)多種情況進(jìn)行考慮,為了功能的完整性以及不影響代碼可讀性,可以接受。
4.2 功能測(cè)試分析
在進(jìn)行功能測(cè)試之前,首先需要將XCP標(biāo)定軟件集成到AUTOSAR軟件架構(gòu)中,其中包括OSEK OS:實(shí)現(xiàn)周期性任務(wù)的調(diào)度; 通信模塊:由于該系統(tǒng)基于CAN總線實(shí)現(xiàn)數(shù)據(jù)的傳輸,所以主要包括CAN模塊相關(guān)的程序;存儲(chǔ)模塊:主要是Flash程序的刷寫,實(shí)現(xiàn)數(shù)據(jù)的保存與讀取。
本文中,XCP標(biāo)定軟件的功能測(cè)試工具為Vector的CANoe。通過(guò)對(duì)其編寫CAPL腳本程序,可以模擬主機(jī)發(fā)送各種命令同時(shí)接受響應(yīng)數(shù)據(jù),將響應(yīng)數(shù)據(jù)與期望數(shù)據(jù)進(jìn)行比較,就可以自動(dòng)實(shí)現(xiàn)標(biāo)定軟件功能測(cè)試[10-11],圖6是功能測(cè)試過(guò)程中搭建的硬件環(huán)境。圖中左邊為MPC5644開(kāi)發(fā)板,作為XCP標(biāo)定系統(tǒng)的下位機(jī);右上角為CANoe工具,實(shí)現(xiàn)數(shù)據(jù)的傳輸;右下角為PE下載器,實(shí)現(xiàn)對(duì)XCP系統(tǒng)程序刷寫及調(diào)試。
圖7顯示了測(cè)試腳本界面,通過(guò)添加TestCase與TestFunction完成XCP系統(tǒng)功能性測(cè)試。然后對(duì)連接命令的測(cè)試進(jìn)行說(shuō)明,圖8顯示了連接命令的3種不同測(cè)試用例。圖8(a)表示:發(fā)送正常連接命令,正常響應(yīng);圖8(b)表示:重復(fù)發(fā)送正常連接命令,第1次正常響應(yīng),第2次響應(yīng)已連接錯(cuò)誤;圖8(c)表示:第1次發(fā)送正常連接命令后,正常響應(yīng),再發(fā)送錯(cuò)誤地址連接命令,響應(yīng)超出范圍錯(cuò)誤。圖9顯示測(cè)試結(jié)果,從圖中可以看出測(cè)試結(jié)果都通過(guò),說(shuō)明所研制的XCP系統(tǒng)標(biāo)定、測(cè)量、存儲(chǔ)等功能都滿足要求。
5 結(jié)束語(yǔ)
基于飛思卡爾32位微處理器MPC5644,完成了所研制的XCP標(biāo)定系統(tǒng)的功能測(cè)試。通過(guò)在該微處理器中刷寫基于AUTOSAR架構(gòu)的XCP系統(tǒng),并通過(guò)CANoe工具編寫CAPL腳本,實(shí)現(xiàn)XCP功能的自動(dòng)測(cè)試。其中涉及嵌入到AUTOSAR架構(gòu),主要體現(xiàn)在通信模塊接口規(guī)范,用于實(shí)現(xiàn)數(shù)據(jù)的傳輸。由于該系統(tǒng)基于CAN總線通信,所以使用CAN 接口模塊嵌入AUTOSAR架構(gòu)中。嵌入到AUTOSAR架構(gòu)中,可以增強(qiáng)代碼的重用性,對(duì)于后期基于FlexRay與以太網(wǎng)通信,只需要修改與硬件相關(guān)的驅(qū)動(dòng)模塊,就能夠完成XCP基于FlexRay或以太網(wǎng)通信的移植,減少軟件的開(kāi)發(fā)周期,從而節(jié)約開(kāi)發(fā)成本,提供汽車總線多樣化的解決方案。
參考文獻(xiàn)
[1] 蘇瑜,周文華,竺春狄. 一種適用不同通信方式基于XCP協(xié)議的ECU標(biāo)定工具的開(kāi)發(fā)[J]. 汽車工程,2010,32(1):81-85.
[2] HILTON J. New AUTOSAR adaptive platform on its way[J]. Automotive Industries,2015,194(3):52-53.
[3] 陰曉峰,劉武東.汽車電子系統(tǒng)軟件開(kāi)發(fā)新標(biāo)準(zhǔn)AUTOSAR[J]. 西華大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,29(2):102-106.
[4] 郭晞文. 參照AUTOSAR標(biāo)準(zhǔn)的汽車電子通信與應(yīng)用[D].杭州:浙江大學(xué),2008.
[5] 馮占軍,丁鋒,譚啟寅. 基于XCP協(xié)議的ECU控制器標(biāo)定系統(tǒng)開(kāi)發(fā)[J]. 上海汽車,2013(11):16-18.
[6] 程馳. FlexRay通訊網(wǎng)絡(luò)在新一代動(dòng)力系統(tǒng)控制器上的應(yīng)用研究[D]. 北京:清華大學(xué),2013.
[7] 李巖. 基于XCP協(xié)議的標(biāo)定系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 長(zhǎng)春:吉林大學(xué),2012.
[8] 徐柯. 嵌入式軟件測(cè)試的研究[D]. 成都:電子科技大學(xué),2006.
[9] 徐澤南. 軟件自動(dòng)化測(cè)試框架的設(shè)計(jì)與應(yīng)用[D]. 上海:復(fù)旦大學(xué),2011.
[10] 劉正升,萬(wàn)程亮,蔣志忠,等. 自動(dòng)測(cè)試系統(tǒng)中新技術(shù)的發(fā)展及應(yīng)用[J]. 中國(guó)測(cè)試,2009,35(4):58-61.
[11] 王安軍,蔣建春,陳培然. 符合AUTOSAR規(guī)范的底層驅(qū)動(dòng)軟件開(kāi)發(fā)[J]. 計(jì)算機(jī)工程,2011,37(9):62-64,67.
(編輯:商丹丹)