【Cite this paper】HANY D, GAO Z T, YU Z, et al. Domain controller software development method based on AUTOSAR for vehicular application [J]. Automotive Digest (Chinese), 2023(XX):1-6(待定).
【摘要】AUTOSAR逐漸成為各整車廠和零部件供應商的主流開發架構并應用于車載域控制器應用軟件開發中,但其開發流程還不夠完善,缺少通用、全面且高效的應用軟件開發方法。為了解決該問題,基于AUTOSAR的基本理論,闡述了AUTOSAR的系統架構及相關接口,提出了從ARXML文件提取數據字典內容、生成接口模型、控制模型搭建、模型代碼生成和應用代碼釋放的全部過程。所提出的車載域控制器應用軟件開發方法,每個環節均采用成熟開發工具或編寫自動化腳本實現,保證方法的通用性的同時,可以保證軟件的開發質量,提升軟件開發效率,從而降低開發成本。
關鍵詞:AUTOSAR;汽車電子;應用軟件開發
中圖分類號:U469.72文獻標志碼:ADOI: 10.19822/j.cnki.1671-6329.20230141
Domaincontroller software development method based on AUTOSAR for vehicular application
HanYandong, GaoZetian, Yu Zhao, GuoYuanke, Liu Xing, Wu Jiaoyang
(New Energy Vehicle Development Institute, China FAW Corporation Limited,Changchun130013)
【Abstract】With the development of automotive electronics industry, AUTOSAR has gradually become the mainstream development architecture of Oems and parts suppliers, and is used in the development of vehicle domain controller application software. However, the development process of applying AUTOSAR to vehicle domain controller application software is not perfect, and there is a lack of general, comprehensive and efficient application software development method. To solve this problem, based on the basic theory of AUTOSAR, the system architecture and related interfaces of AUTOSAR are expounded, and the whole process of extracting data dictionary content from ARXML file, generating interface model, building control model, generating model code and releasing application code is proposed. The proposed development method of vehicle domain controller application software adopts mature development tools or automated scripts to realize each link, which ensures the universality of the method, can ensure the quality of software development, improve the efficiency of software development, and thus reduce the development cost.
Key words: AUTOSAR,Automotive electronic, Application software development
0 引言
隨著汽車電子產業的持續發展,汽車電控系統的復雜性日益增加。傳統嵌入式軟件開發方法不支持硬件抽象,導致軟件代碼量增加,軟件重用性降低。同時汽車電子電氣架構逐漸從分布式架構向域集中式和中央計算平臺方向發展。為了解決汽車控制器軟件的注入開發周期長、可重用性差等問題[1],多個汽車制造商聯合制定了汽車電控系統基礎軟件標準,即汽車開放系統架構(Automotive Open System Architecture,AUTOSAR)。AUTOSAR將汽車系統的基礎軟件標準化為一個跨主機廠(Original Equipment Manufacturer,OEM)的“標準?!?,通過定義標準接口,可以實現模塊化軟件在不用硬件平臺上的移植,在縮短開發周期的同時提高軟件質量。AUTOSAR的主要目標之一是改善產品及其過程,遏制復雜性和風險,增強集成和傳遞功能的可擴展性和靈活性[2]。因此,越來越多汽車主機廠以及零部件供應商采用AUTOSAR進行應用軟件開發,基于AUTOSAR的架構規范已成為行業標準。
此外,隨著車載功能增多及汽車電子化程度的提升,電子控制單元(Electronic Control Unit,ECU)數量隨之增加。大量ECU集成導致整車網絡拓撲結構越來越復雜,增加了整車線束布置難度,確保這些ECU準確無誤地協調工作也成為一項技術挑戰。域控制器的引入使這一問題得到解決,其將多個功能相近的傳統ECU集中到一個具有更高算力和資源更加強大的域控制器中。采用域控制器進行開發,可顯著減少整車ECU和線束數量,降低整車網絡拓撲的復雜性,同時增強通信速率。
目前,已有學者基于AUTOSAR標準進行車載軟件開發研究。劉璽斌等[3]結合AUTOSAR工具,提出了基于AUTOSAR規范的汽車ECU軟件開發方法,但該方法僅介紹了應用層軟件源代碼鏈接和編譯生成目標可執行文件過程,并未闡述應用層軟件的開發方法。張麗萍等[4]以汽車大燈控制模塊軟件應用層開發舉例,描述了一種以MATLAB/Simulink為起點、符合AUTOSAR開發標準的軟件應用層開發流程,主要介紹了模型搭建及代碼生成的過程。馮江波等[5]介紹了MATLAB與AUTOSAR標準相兼容的自動代碼生成過程,同時介紹了AUTOSAR支持的3種接口類型,同樣只介紹了代碼生成相關內容。潘志前[6]基于AUTOSAR架構,介紹了電動汽車整車控制器(Vehicle Control Unit,VCU)的軟件功能設計方法,以及VCU軟件集成和測試方法。雖然目前基于MATLAB與AUTOSAR之間的映射方法和符合AUTOSAR規范的自動代碼生成方法都有了一定程度的研究和應用。然而,采用AUTOSAR架構開發應用軟件層起步較晚,缺少通用、全面、高效的應用軟件開發方法。
文中提出一種基于AUTOSAR的車載域控制器應用軟件開發方法,該方法提供了從ARXML文件提取數據字典內容、生成接口模型、控制模型搭建、模型代碼生成和應用代碼釋放的全部過程,既保證軟件開發質量同時提升開發效率。
1 AUTOSAR架構與接口
1.1 系統架構
如圖1所示,AUTOSAR的系統架構將運行在微控制器上的軟件分為3層[7],分別為應用軟件層(Application Layer)、運行環境層(Runtime Environment,RTE)、基礎軟件層(Basic Software,BSW)。
其中,基礎軟件層BSW包含了4個層,分別為服務層(Service Layer)、ECU抽象層(ECU Abstraction Layer)、微控制器抽象層(Microcontroller Abstraction Layer)和復雜驅動(Complex Driver)[8]。
應用層軟件由多個軟件組件(SoftWare Component,SWC)組成,由可運行實體(Runnable)進行SWC通信接口配置。其中,可運行實體的觸發條件包括定時時間、數據接收事件、異步服務調用返回事件、操作調用事件、數據接收錯誤事件以及數據發送完成事件等。
RTE位于應用層軟件和基礎軟件之間,是虛擬功能總線接口的實現[9]。主要負責SWC之間的通信,以及SWC與BSW之間的通信。每個ECU的RTE配置會根據其軟件組件的具體需求而不同。同時,RTE層還可以防止軟件組件直接訪問基礎軟件。在RTE層中,若采用發送者/接受者(Send/Receiver)通信機制時,實現的是緩存訪問模式。在進入可運行實體之前RTE為數據建立副本,可運行實體在運行過程中,僅對副本進行操作,實際數據不發生改變。在可運行實體運行結束后,RTE將副本中的數據復制至實際數據地址。
在BSW中,微控制器抽象層的目的是實現上層軟件與微處理器型號解耦,包含微控制器(MiCrocontroller Unit,MCU)中內部外設的驅動和MCU內存映射的外部設備的驅動。ECU抽象層的目的是使上層軟件與ECU硬件設計無關,包含ECU板上外部設備的驅動,以及內部設備與外部設備的接口。服務層包括系統服務、存儲器服務和通信服務,目的是為應用層提供可用的服務接口。復雜設備驅動主要提供復雜傳感器和執行器的驅動。
1.2 AUTOSAR接口
AUTOSAR的接口共分為3種。分別為標準接口、AUTOSAR接口和標準化的AUTOSAR接口。其中,標準接口和標準化的AUTOSAR接口定義不可更改。如圖2所示,在AUTOSAR架構中,應用層軟件與RTE之間采用AUTOSAR接口,服務層與RTE之間采用標準化的AUTOSAR接口,其余采用標準接口。
在數據處理機制中,數據的讀寫操作可分為顯式(Explicit)和隱式(Implicit)2種模式。在執行Runnable期間,顯性接口的數據收發操作由RTE直接觸發,隱性接口的數據收發則不會在Runnable執行期間改變數據狀態,寫入數據將在Runnable執行結束后發出。
2 應用軟件開發流程
基于AUTOSAR的車載應用軟件開發流程如圖3所示,應用軟件完整開發步驟為:(1)將初始ARXML(AUTOSAR XML)文件導入AUTOSAR開發工具,以執行符合性校驗。一旦校驗通過,將進行配置工作,包括添加初始化觸發模塊和Runnable配置ARXML。根據項目需求,選擇并配置所需的輸入輸出接口,同時確定其顯式或隱式特征。(2)將配置完成的ARXML文件導入信息提取工具,提取出數據字典和類型定義文件。由于MATLAB/Simulink是車載應用軟件常用的模型開發工具,同時具有ARXML文件信息提取及校驗功能,因此在該步驟中可作為AUTOSAR符合性校驗的數據信息提取工具。(3)創建或更新接口模型。判斷模型是否為初版,若是初版,則采用Create命令創建接口模型,否則采用update命令更新接口模型,并進行Validation校驗。(4)搭建控制模型,并進行AUTOSAR校驗。校驗通過后,通過AUTOSAR選項下的代碼生成(Generate Code)選項進行模型代碼生成,并根據運行錯誤信息修改模型,直至成功生成代碼(5)編寫自動化批處理腳本,自動提取應用軟件編譯對應的代碼文件。(6)將生成的應用層軟件代碼文件與基礎軟件代碼進行編譯,若編譯過程中報錯,則需要根據報錯信息,修改模型及代碼,直至代碼文件編譯成功。(7)將編譯成功的代碼文件釋放至下游部門,進行域控制器或中央計算平臺程序編譯開發。
以整車控制應用層軟件開發為例。首先,基于步驟(1)對整車控制應用層軟件所需的各SWC初始ARXML文件進行校驗并完成Runnable配置,導出配置完畢的ARXML。其次,基于步驟(2)提取出每個SWC所對應的數據字典和類型定義文件。基于步驟(3)創建或更新應用軟件接口模型,搭建應用軟件模型,添加項目整車控制所需的功能模塊,如高壓上下電模塊、扭矩控制模塊或者換擋處理模塊等,并進行模塊間的信號傳輸連線配置,配置完畢后運行模型,直至模型運行通過。基于步驟(4)校驗模型并生成代碼。最后,將所有的SWC均完成代碼生成后,基于步驟(5)~(7)進行代碼編譯和釋放。
上述實例為動力域整車控制應用軟件開發流程,還可依據此開發流程進行空調控制應用軟件開發、車身域應用軟件開發等,該方法適用于所有基于CP AUTOSAR開發的車載域控制器應用軟件,具有通用性和全面性。同時,由于采用了統一的標準,該方法顯著提升了軟件開發效率和應用軟件的復用性,有效縮短了開發周期,提高了開發效率。
3 接口模型創建及更新
3.1 ARXML文件校驗及配置
在進行應用層軟件開發之前,需從上游的整車制造商或研發部門獲取符合AUTOSAR規范的初始ARXML文件。以下為在AUTOSAR工具中進行文件處理的配置和步驟:(1)查看ARXML文件屬性,解除只讀和加密等屬性,將初始ARXML文件導入AUTOSAR工具(配置ARXML,進行ARXML內部接口連接及顯隱性接口定義等)。(2)對文件進行Validation校驗,判斷其是否符合AUTOSAR的規范性要求,若不符合要求則通知上游部門修改。(3)根據軟件組件SWC具體功能需求添加Runnable模塊,如圖4所示。需要在初始ARXML文件中添加初始化(Init)模塊和周期性可運行實體模塊,并配置Runnable屬性及與接口的關聯關系。配置收發接口時需要根據項目需求選擇顯隱式。(4)完成配置后再次進行校驗,校驗通過后導出ARXML文件用于后續開發。
3.2 數據字典內容提取
數據字典是重要的信息存儲工具,其存儲了Simulink模型中的接口定義信息和數據信息。在進行代碼生成時,Simulink模型與數據字典一般并列存在。因此在代碼生成前需從ARXML中提取數據字典信息。
將配置完成的ARXML文件導入MATLAB,提取出運行軟件實體、接口和應用軟件組件的相關信息,獲得所需數據字典mat文件和m文件。其中,m文件為導入ARXML文件過程中自動生成的文件,mat文件是將MATLAB的工作區(Workspace)中自動加載的內容另存為mat文件得到。數據字典mat文件中包含了模型中各信號的定義,如信號的基本類型(Basetype)、信號的描述以及進行代碼生成時的頭文件等。關于ARXML文件導入MATLAB方法詳見4.1中Step1描述。
3.3 接口模型生成
在進行接口模型生成之前,首先需要判斷是否為首版軟件。若為首次建立接口模型,則需要將ARXML文件導入模型開發工具,生成全新的頂層接口模型。具體在MATLAB軟件中實現步驟如下。
(1)在ARXML所在目錄文件下,在命令行輸入如下命令,創建頂層接口模型,其中artest為對應ARXML文件名稱:
{
Ar = arxml.importer(‘artest.arxml’);
createComponentAsModel(Ar,‘/SoftwareTypes/ComponentTypes/artest’,‘ModelPeriodicRunnablesAs’,‘FunctionCallSubsystem’)
}
(2)校驗模型。在模型界面中,選擇APPS(APPlication Service)目錄下的AUTOSAR 組件設計器(Component Designer),在代碼映射(Code Mappings)中選擇驗證代碼映射(Validate Code Mappings)進行校驗,驗證AUTOSAR的組件配置。校驗結果為成功時可繼續進行軟件開發,如失敗則需要更改ARXML文件后再次執行該過程,直至校驗成功后,保存新生成的模型。
若需要基于已有模型進行ARXML文件更新,則在MATLAB中接口模型更新的實現方式為:(1)加載上一版本模型對應的數據字典,打開上版模型并運行,模型運行通過后,對模型進行更;(2)在命令行窗口輸入如下語句,更新模型:
{%將ARXML文件放在對應的工程目錄文件下%
Ar = arxml.importer(‘artest.arxml’);
updateModel(Ar,‘artest’);
}
(3)更新完成后,根據Simulink生成的更新報告,刪除其中需要手動處理的接口,并保存模型。(4)重新加載新的數據字典內容,并按照前文所述步驟,對新生成模型進行AUTOSAR校驗,保證接口模型符合AUTOSAR規范要求。
4 控制模型搭建及代碼釋放
4.1 控制模型搭建及代碼生成
根據軟件需求,基于MATLAB/Simulink搭建控制模型,包括輸入輸出接口連線及功能模型搭建,如圖5所示。以部分控制模型Simulink模塊示例,模型的頂層主要由輸入信號、輸出信號和主控模塊3部分組成。
為了保證生成的代碼能夠與基礎軟件匹配,能夠進行編譯,以及最后生成的可執行文件可以在控制器中正常運行,需要在生成代碼前對模型生成代碼屬性進行配置。
(1)調整頂層接口模型的模型設置(Model Settings)屬性,在Code Generation中的系統目標文件(System Target File)選項下選擇autosar.tlc文件。(2)修改代碼生成模板(Code Templates)和數據生成模板(Data Template)中的源文件模版(Source File Template)配置,確保生成的代碼和數據模板滿足基礎軟件對應用軟件代碼及常量內存分配的需求。(3)編寫控制器代碼配置文件,內部包含配置代碼文件和數據文件的偽指令,表示生成代碼的組件。(4)配置ModelSettings中的其他代碼生成相關屬性,主要包括運行步長、代碼生成文件以及警告及錯誤配置,將配置結果輸出為配置參考(ConfigurationReference)文件,并將其保存至Workspace中。(5)在頂層接口模型中打開模型瀏覽器(Model Explorer)選項,將屬性配置(Configurations)調整為引用(Reference)。并通過傳播到引用模型(Propagateto Referenced Models)選項推送至每個Reference控制模型。
完成搭建控制模型及其配置后,對模型進行編碼。在控制模型界面的APPS標簽下,選擇嵌入式(Embedded)模塊,點擊“Generate Code”進行代碼生成。在代碼生成過程中,若遇到錯誤,應根據報錯信息對模型進行相應的修正,直至成功生成代碼。
4.2 應用代碼釋放
在模型生成代碼的過程中,會生成一些非必要信息,如模型在運行過程中生成的過程文件、接口聲明頭文件以及一些仿真文件,需在生成的文件中篩選出編譯所需的程序文件。人工提取程序效率低,且易發生操作錯誤。為了高效進行代碼編譯,本研究采取了一種自動化的方法來提高代碼編譯的效率。該方法可以實現編寫自動化腳本,自動提取編譯所需的程序文件,提高工作效率的同時保證軟件質量。
批處理(bat)文件是系統Windows系統內置的腳本,其無需編譯即可執行,可以快速、敏捷且靈活的處理文件。無需安裝其他軟件及環境,在文件處理提取方面優勢明顯。因此本研究選用編寫bat腳本的方式進行編譯文件提取,并與基礎軟件一同進行編譯,編譯成功后將生成的文件釋放至下游部門,用于控制器可執行程序的生成。具體步驟如下:(1)清除提取文件夾中的歷史文件,刪除上一次代碼生成時得到的程序文件。(2)提取本次新生成且編譯所需的程序文件到提取文件夾中。(3)識別各個SWC生成的同名文件,并根據文件內容進行合并或刪除。(4)將應用軟件與基礎軟件進行編譯,若編譯報錯,則檢查日志(log)文件分析報錯原因,并根據分析結果對代碼進行相應修改,然后重新執行編譯。(5)編譯成功后將應用程序代碼釋放至下游部門,完成應用軟件開發。
5 結束語
目前,國內雖然在MATLAB與AUTOSAR之間的映射方法和符合AUTOSAR規范的自動代碼生成方法方面有了一定的進展,但仍然缺少通用、全面、高效的應用軟件開發方法。本文在已有研究內容基礎上,提供了從ARXML文件提取數據字典內容、生成接口模型、控制模型搭建、模型代碼生成和應用代碼釋放的全部過程,在保證軟件開發質量的同時提升開發效率。
本文提出的基于AUTOSAR的車載域控制器應用軟件開發方法,降低了車載應用軟件開發的復雜度,縮短了開發時間,提高軟件質量,具有通用、全面和高效性,但自動化程度不夠高,如何提高自動化程度以便后續實現持續集成工作有待進一步研究。
參考文獻
[1] 李超超,武恪等. 基于AUTOSAR的CAN通信棧設計[J].電子測量技術, 2021(12):139-145.
[2] MIRHEIDARI S, FALLAHI A, et al. AUTOSAR Model-Based Software Component Integration of Supplier Software[J]. SAE International, 2015(8):544-548.
[3] 劉璽斌, 馬建,宋青松基于AUTOSAR規范的汽車ECU軟件開發方法[J]. 長安大學學報, 2013(3): 76-87.
[4] 張麗萍,國云飛. 基于MATLAB的AUTOSAR自動代碼生成技術[J]. 研究與開發, 2016(9): 36-40.
[5] 馮江波,劉亞軍. 與AUTOSAR兼容的Matlab/Simulink自動代碼生成技術[J]. 佳木斯大學學報, 2011(6): 833-837.
[6] 潘志前. 基于AUTOSAR架構的電動汽車VCU軟件功能設計[J]. Defense Manufacturing Technology, 2019(3):36-39.
[7] 崔淑梅, 張玉琦, 杜博超, 等. 一種基于AUTOSAR的電機控制器軟件架構設計[J].微特電機, 2022(6):1-9.
[8] 詹克旭.基于AUTOSAR架構的汽車電子軟件產品的開發方法[J].汽車電器, 2022(11):73-76.
[9] 張澤瑩, 顏江, 王慧, 等.提高AUTOSAR模型開發效率的方法[J].汽車電器, 2023(4):35-37.