1 引言
在AUTOSAR方式設(shè)計(jì)車載ECU軟件的初期,很多項(xiàng)目團(tuán)隊(duì)都采用“基礎(chǔ)軟件外協(xié)開(kāi)發(fā)”的模式。即委托第三方軟件公司搭建一個(gè)AUTOSAR工程并給出各主要模塊的設(shè)計(jì)示例,再在此基礎(chǔ)上去做自己的項(xiàng)目。這樣的開(kāi)發(fā)模式有助于快速適應(yīng)全新的設(shè)計(jì)方法,縮短項(xiàng)目周期,但也會(huì)帶來(lái)“過(guò)于依賴項(xiàng)目組外部資源,一旦出現(xiàn)錯(cuò)誤難于解決”等問(wèn)題。
本文針對(duì)上述痛點(diǎn),講述了在ETAS工具鏈環(huán)境下進(jìn)行工程創(chuàng)建和常用模塊集成的全過(guò)程,目的是讓讀者對(duì)AUTOSAR工程的產(chǎn)生過(guò)程有一個(gè)大致的了解,從整體上理清AUTOSAR方式設(shè)計(jì)車載嵌入式軟件的思路。
由于要“從無(wú)到有”地創(chuàng)建一個(gè)實(shí)用的AUTOSAR工程,該系列之前編寫(xiě)的三篇文章將作為參考文獻(xiàn)在文中引用,感興趣的讀者可在“你好舊時(shí)光追憶”公眾號(hào)中查找閱讀。
(1)《從手寫(xiě)代碼到AUTOSAR工具鏈 - RTE入門篇》,以下簡(jiǎn)稱《RTE入門篇》。
(2)《從手寫(xiě)代碼到AUTOSAR工具鏈 - EcuM應(yīng)用篇》,以下簡(jiǎn)稱《EcuM應(yīng)用篇》。
(3)《從手寫(xiě)代碼到AUTOSAR工具鏈 - BswM應(yīng)用篇》,以下簡(jiǎn)稱《BswM應(yīng)用篇》。
2 工具鏈
本文所述設(shè)計(jì)集成過(guò)程除MCAL部分采用Infineon和EB聯(lián)合開(kāi)發(fā)的“EB Tresos”工具外,其余模塊均采用ETAS工具鏈開(kāi)發(fā),如表2-1所列。
表2-1: AUTOSAR工具鏈匯總
序號(hào) | 集成開(kāi)發(fā)環(huán)境 | 子工具 | 功用 |
1 | EB Tresos | EB Tresos | MCAL模塊設(shè)計(jì) |
2 | ISOLAR-AB | ISOLAR-A | 系統(tǒng)級(jí)架構(gòu)設(shè)計(jì) |
RTA-RTE | 接口設(shè)計(jì) | ||
RTA-BSW | BSW模塊設(shè)計(jì) | ||
3 | RTA-OS | RTA-OS | 操作系統(tǒng)設(shè)計(jì) |
3 工程創(chuàng)建和模塊集成
對(duì)于ETAS工具鏈?zhǔn)褂谜叨裕珹UTOSAR工程主要是在ISOLAR-AB中創(chuàng)建、設(shè)計(jì)和集成的。
下面以VCU項(xiàng)目為例講解AUTOSAR工程創(chuàng)建過(guò)程,其它車載ECU軟件可在此基礎(chǔ)上做相應(yīng)改動(dòng)。
3.1 工程創(chuàng)建
AUTOSAR工程創(chuàng)建在ISOLAR-A中進(jìn)行。
3.1.1文件夾創(chuàng)建
按照表3-1創(chuàng)建工程文件夾。
表3-1: 工程文件夾創(chuàng)建
序號(hào) | 一級(jí)文件夾 | 二級(jí)文件夾 | 三級(jí)文件夾 |
1 | hightec_vcu | - | - |
2 | isolar_ab_vcu | - | - |
3 | mcal_vcu | - | - |
4 | vcu | src | ASW、BSW、CDD、INFRA、IOHWAB、RTE、Target |
3.1.2AUTOSAR工程創(chuàng)建
雙擊“ISOLAR-AB V 4.0”圖標(biāo),彈出圖3-1所示的界面,按照?qǐng)D示步驟操作進(jìn)入ISOLAR-AB工具的主界面。
圖3-1: ISOLAR-AB工作空間選擇
在主界面中點(diǎn)擊“File->New->AUTOSAR Project”新建工程,彈出圖3-2所示的界面,按照?qǐng)D中步驟完成工程創(chuàng)建。
圖3-2: AUTOSAR工程創(chuàng)建界面
3.2 架構(gòu)設(shè)計(jì)
AUTOSAR開(kāi)發(fā)方式中的架構(gòu)設(shè)計(jì)即軟件組件(SWC)的設(shè)計(jì),包括創(chuàng)建軟件組件、端口接口設(shè)計(jì)、內(nèi)部行為設(shè)計(jì)等步驟,還需將SWC分別加入部件和ECU。具體操作方法詳見(jiàn)《RTE入門篇》。
3.3 配置系統(tǒng)
系統(tǒng)創(chuàng)建和配置按照下列步驟進(jìn)行。
3.3.1部件創(chuàng)建
按照?qǐng)D3-3和圖3-4所示創(chuàng)建部件。
圖3-3: 部件創(chuàng)建啟動(dòng)
圖3-4: 部件創(chuàng)建配置
3.3.2系統(tǒng)創(chuàng)建
按照?qǐng)D3-5和圖3-6所示創(chuàng)建系統(tǒng)。
圖3-5: 系統(tǒng)創(chuàng)建啟動(dòng)
圖3-6: 系統(tǒng)創(chuàng)建配置
3.3.3系統(tǒng)配置
系統(tǒng)配置包括建立對(duì)部件的引用、抽取配置和映射創(chuàng)建3部分。
(1)建立系統(tǒng)對(duì)部件的引用
為上節(jié)創(chuàng)建的“System”生成1個(gè)子項(xiàng)“Root Software Compositions | Root Sw Composition Prototype”,并將其“SoftwareComposition”的引用配置為“TopLevelComposition”。
(2)系統(tǒng)抽取配置
配置上節(jié)創(chuàng)建“System”的類別。
(3)映射創(chuàng)建
為上節(jié)創(chuàng)建的“System”生成1個(gè)子項(xiàng)“Mappings | Mapping”,命名為“SwcToEcuMapping”,并配置“Ecu實(shí)例”。
3.4 通信配置
通信配置主要包括DBC導(dǎo)入、報(bào)文發(fā)送周期配置、抽取和生成RTA-BSW等操作,完成這些步驟后,與CAN通信有關(guān)的BSW模塊將自動(dòng)生成。
圖3-7: 生成RTA-BSW
表3-2: RTA-BSW后自動(dòng)生成的BSW模塊
序號(hào) | 一級(jí)文件夾 | 二級(jí)文件夾 | BSW模塊 |
1 | Com Stack | Can Modules | Can |
2 | CanIf | ||
3 | CanSM | ||
4 | - | Com | |
5 | - | PduR | |
6 | Mode Mgm | - | ComM |
7 | Other Modules | - | ComStack |
8 | - | Ecuc | |
9 | - | rba_ArxmlGen |
3.5 模式管理配置
依次進(jìn)行EcuM和BswM模塊的配置,具體參見(jiàn)《EcuM應(yīng)用篇》和《BswM應(yīng)用篇》。
3.6 操作系統(tǒng)配置
操作系統(tǒng)配置分為2部分,ISOLAR-AB中的OS模塊配置和RTA-OS中的配置。
3.6.1 OS模塊配置
創(chuàng)建Os模塊并完成基礎(chǔ)配置。
(1)Os創(chuàng)建
創(chuàng)建Os模塊,再依圖3-8刪除多余項(xiàng)。
圖3-8: Os多余項(xiàng)刪除
(2)應(yīng)用模式配置
按照?qǐng)D3-9的步驟進(jìn)行。
圖3-9: Os應(yīng)用模式配置
(3)計(jì)數(shù)器配置
為Os應(yīng)用配置計(jì)數(shù)器信息,圖3-10為其配置方法。
圖3-10: Os計(jì)數(shù)器配置
(4)任務(wù)配置
根據(jù)項(xiàng)目需要配置OS任務(wù),圖3-11為配置方法,表3-3為任務(wù)配置示例。
圖3-11: Os任務(wù)配置
表3-3: Os任務(wù)參數(shù)配置示例
序號(hào) | 配置項(xiàng) | 配置值 | 說(shuō)明 |
1 | ShortName | XXX | 任務(wù)名 |
2 | OsTaskActivation | 1 | 定義該任務(wù)最大數(shù)量的隊(duì)列激活請(qǐng)求,1表示在任何時(shí)刻任務(wù)僅允許單次激活 |
3 | OsTaskPriority | 39 | 任務(wù)優(yōu)先級(jí),數(shù)值越大優(yōu)先級(jí)越高(對(duì)于TC275單片機(jī)) |
4 | OsTaskSchedule | FULL | 定義任務(wù)的優(yōu)先處理性 |
5 | OsTaskStackAllocation | - | 任務(wù)手動(dòng)堆棧分配,以字節(jié)為單位 |
6 | OsTaskWaitStack | - | 激活等待事件時(shí)的任務(wù)堆棧使用 |
7 | OsTaskBudget | - | 執(zhí)行預(yù)算,以“浮點(diǎn)數(shù)+時(shí)基名+單位”表達(dá) |
8 | OsTaskCanCallSchedule | - | 任務(wù)調(diào)用或可能調(diào)用“Schedule()”時(shí)配置為TRUE |
9 | OsTraceFilter | - | 描述任務(wù)是否被RTA-TRACE跟蹤 |
10 | OsTaskAccessingApplication | - | 訪問(wèn)該對(duì)象的應(yīng)用的引用 |
11 | OsTaskEventRef | - | 此引用定義了擴(kuò)展任務(wù)可能會(huì)響應(yīng)的事件列表 |
12 | OsTaskResourceRef | - | 此引用定義了該任務(wù)訪問(wèn)的資源列表 |
13 | OsRegSetRef | - | 該任務(wù)用到的寄存器集的引用 |
3.6.2 RTA-OS配置
在生成RTE成功后進(jìn)行。
(1)工程創(chuàng)建
點(diǎn)擊“File->New Project”新建工程,按照?qǐng)D3-12所示配置工程屬性。
圖3-12: OS工程屬性配置
(2)文件加載
按照?qǐng)D3-13所示將“...srcRTEgen”路徑下的osNeeds.arxml文件加載進(jìn)來(lái)。
圖3-13: OS工程文件加載
(3)工程保存
將工程創(chuàng)建時(shí)自動(dòng)生成的ARXML文件命名為“RTAOS.arxml”,并將其保存至“...srcTargetTC275RTAOSconfig”路徑下。
(4)通用參數(shù)配置
OS通用參數(shù)配置按照?qǐng)D3-14進(jìn)行。
圖3-14: OS通用配置
(5)應(yīng)用模式配置
按照?qǐng)D3-15將OS應(yīng)用模式配置為OSDEFAULTAPPMODE。
圖3-15: OS應(yīng)用模式配置
(6)中斷配置
按照?qǐng)D3-16配置項(xiàng)目中需要的二類中斷。
圖3-16: OS中斷配置
3.6.3 RTA-OS生成
按照下列步驟生成OS代碼。
(1)文件夾創(chuàng)建
在“...srcTargetTC275”路徑下創(chuàng)建表3-4所示的文件夾。
表3-4: RTAOS文件夾創(chuàng)建
序號(hào) | 一級(jí)文件夾 | 二級(jí)文件夾 | 三級(jí)文件夾 | 四級(jí)文件夾 | 五級(jí)文件夾 |
1 | RTAOS | config | |||
2 | generated | inc | |||
3 | lib | ||||
4 | report | ||||
5 | integration | inc | |||
6 | src | ||||
7 | MCAL | modules | general | inc | |
8 | tricore | compiler | |||
9 | inc |
(2)生成配置
按照?qǐng)D3-17、圖3-18和圖3-19的方法依次進(jìn)行RTA-OS生成配置。
圖3-17: RTA-OS生成選項(xiàng)配置
圖3-18: RTA-OS生成輸出位置配置
圖3-19: RTA-OS生成包含路徑配置
(3)生成操作
按照?qǐng)D3-20所示生成OS的代碼。
圖3-20: OS代碼生成
3.7 RTE配置
創(chuàng)建Rte模塊并完成基礎(chǔ)配置。
3.7.1 Rte創(chuàng)建
創(chuàng)建Rte模塊,再依圖3-21刪除多余項(xiàng)。
圖3-21: Rte多余項(xiàng)刪除
3.7.2 Rte配置
依次進(jìn)行Rte模塊的配置。
(1)Rte生成配置
配置Rte生成參數(shù),圖3-22為其配置方法。
圖3-22: Rte生成配置
(2)Bsw模塊實(shí)例配置
在生成RTE成功后進(jìn)行。
Bsw模塊實(shí)例大部分由工具自動(dòng)配置,前提是其存在Runnable。為后續(xù)編譯不出錯(cuò),在EcucValueCollection中無(wú)運(yùn)行函數(shù)的模塊需要手動(dòng)配置。
圖3-23: Bsw模塊實(shí)例配置
3.8 定點(diǎn)數(shù)位域配置
創(chuàng)建Bfx模塊并完成配置。
3.8.1 Bfx創(chuàng)建
在ISOLAR-B中創(chuàng)建Bfx模塊。
3.8.2 Bfx配置
依次進(jìn)行Bfx模塊的通用配置和內(nèi)存定位配置。
圖3-24: Bfx通用配置
圖3-25: Bfx內(nèi)存定位配置
3.9 Ecuc數(shù)值集配置
創(chuàng)建Ecuc Value Collection并完成配置。
3.9.1 EcucValueCollection創(chuàng)建
在ISOLAR-B中創(chuàng)建Ecuc Value Collection。
3.9.2 EcucValueCollection配置
依次進(jìn)行EcucValueCollection的配置。
(1)模塊關(guān)聯(lián)
按照?qǐng)D3-26和圖3-27所示進(jìn)行模塊關(guān)聯(lián)。
圖3-26: EcucValueCollection配置啟動(dòng)
圖3-27: EcucValueCollection配置啟動(dòng)
(2)任務(wù)分配
依照?qǐng)D3-28將各模塊的函數(shù)拖到對(duì)應(yīng)的OS任務(wù)中。
圖3-28: EcucValueCollection任務(wù)分配
3.10 AUTOSAR平臺(tái)類型配置
創(chuàng)建AUTOSAR_PlatformTypes并完成配置。
3.10.1 AR Package創(chuàng)建
按照?qǐng)D3-29創(chuàng)建名為AUTOSAR_PlatformTypes的AR Package,再按照與之類似的方式為AUTOSAR_PlatformTypes創(chuàng)建1個(gè)子AR Package,名稱為ImplementationDataTypes。
圖3-29: AUTOSAR_PlatformTypes AR Package創(chuàng)建
3.10.2 數(shù)據(jù)類型添加
以u(píng)int8為例,按照?qǐng)D3-30、圖3-31、圖3-32的步驟添加數(shù)據(jù)類型。
圖3-30: 數(shù)據(jù)類型添加啟動(dòng)
圖3-31: 數(shù)據(jù)類型添加配置
圖3-32: 數(shù)據(jù)類型參數(shù)配置
按照上述步驟依次添加下列數(shù)據(jù)類型:boolean、float32、float64、sint16、sint32、sint64、sint8、uint16、uint32、uint64。
3.11 故障追蹤器配置
創(chuàng)建Det模塊并完成配置。
3.11.1 Det創(chuàng)建
在ISOLAR-B中創(chuàng)建Det模塊。
3.11.2 Det配置
依照?qǐng)D3-33進(jìn)行Det模塊的通用配置。
圖3-33: Det通用配置
3.12 RTE生成
在執(zhí)行RTE生成前,須進(jìn)行抽取、生成RTA-BSW、生成BSW等操作。
RTE生成按照?qǐng)D3-34和圖3-35的步驟進(jìn)行。
“Additional Commands”處輸入(該過(guò)程不再生成SWC的內(nèi)存映射文件):--strict-unconnected-rport-check=off -err=xml -nts --os-define-osenv=RTAOS40 --exclusive-area-optimization=disable --os-output-param=all。
圖3-34: RTE代碼生成啟動(dòng)
圖3-35: RTE代碼生成配置
3.13 MCAL集成
下面介紹MCAL的集成步驟。
3.13.1 靜態(tài)代碼集成
MCAL靜態(tài)代碼的工程路徑為“...srcTargetTC275MCALmodules”,頭文件和源文件分別存放在“inc”和“src”文件夾下。
MCAL靜態(tài)代碼從EB Tresos的安裝路徑下拷貝。
3.13.2 配置文件集成
配置文件包括MCAL工程文件和單片機(jī)各外設(shè)模塊參數(shù)組成的“.xdm”文件,其路徑為“...srcTargetTC275MCALconfig”。
配置文件在添加MCAL模塊時(shí)由工具自動(dòng)生成。
3.14 ECAL集成
這里的ECAL主要包括實(shí)現(xiàn)模擬量輸入和數(shù)字量輸入輸出信號(hào)的抽象,工程路徑為“...srcIOHWAB”。
3.15 內(nèi)存映射集成
內(nèi)存映射程序文件采用“xxx_MemMap.h”的命名規(guī)范,主要解決將變量、常量和代碼放到指定存儲(chǔ)空間的問(wèn)題。
3.15.1 軟件組件內(nèi)存映射文件
各SWC模塊的內(nèi)存映射文件生成方法如圖3-36所示,通常每個(gè)新建軟件組件僅生成1次即可,之后可刪除該命令段。
圖3-36: 軟件組件內(nèi)存映射程序文件生成方法
3.15.2 BSW模塊內(nèi)存映射文件
各BSW模塊的內(nèi)存映射文件生成方法如圖3-37所示(部分有對(duì)應(yīng)SWC的BSW模塊按照?qǐng)D3-36的方法操作),這部分文件通常只生成1次,且生成路徑不要在程序工程的路徑或子路徑下,否則容易帶來(lái)編譯錯(cuò)誤。
圖3-37: BSW模塊內(nèi)存映射程序文件生成方法
3.15.3 內(nèi)存映射程序文件路徑
內(nèi)存映射文件統(tǒng)一存儲(chǔ)在“...srcINFRAmemmap”路徑下(其余路徑下的內(nèi)存映射文件須剪切至此),且須在工具生成文件的基礎(chǔ)上做相應(yīng)改動(dòng)。
3.16 復(fù)雜驅(qū)動(dòng)集成
復(fù)雜驅(qū)動(dòng)包含板級(jí)芯片驅(qū)動(dòng)程序和對(duì)復(fù)雜傳感器和執(zhí)行器進(jìn)行操作的軟件模塊,相關(guān)的程序文件均為手寫(xiě)代碼,工程路徑為“...srcCDD”。
3.17應(yīng)用層軟件集成
按照下面的步驟進(jìn)行應(yīng)用層軟件集成。
3.17.1 應(yīng)用層文件拷貝
按照表3-5將應(yīng)用層程序文件拷貝或更新至工程的指定目錄。
表3-5: 應(yīng)用層程序文件處理
序號(hào) | 類別 | 文件(夾)名 | 文件拷貝位置 |
1 | A2L | XXX.a2l(一個(gè)或多個(gè)) | ... oolsA2LGenToolASAPAdr_Filesa2l |
2 | Arxml | XXX.arxml(一個(gè)或多個(gè)) | ...srcASWVcuApp_SWCarxml |
3 | 文件夾 | lib(庫(kù)文件) | ...srcASWVcuApp_SWC |
4 | C | XXX.c(一個(gè)或多個(gè)) | ...srcASWVcuApp_SWCsrc |
5 | H | XXX.h(一個(gè)或多個(gè)) | ...srcASWVcuApp_SWCsrc |
3.17.2 ARXML文件導(dǎo)入
如果是首次操作,須按照?qǐng)D3-38所示進(jìn)行,再執(zhí)行刷新操作;后續(xù)更新只需要在完成文件拷貝后直接刷新工程即可。
圖3-38: 應(yīng)用層ARXML導(dǎo)入
3.17.3 SWC添加
將應(yīng)用層的SWC分別添加到部件和ECU中,抽取。
3.17.4 相關(guān)模塊設(shè)計(jì)
在程序中調(diào)用應(yīng)用層軟件的初始化和執(zhí)行函數(shù)。
3.18 其它模塊設(shè)計(jì)與集成
以上完成了VCU軟件的工程創(chuàng)建和必備模塊集成的基本工作,表3-6列出了車載ECU軟件的一些其它的常用模塊,這些將在后續(xù)的軟文中逐一探討。
表3-6: 車載ECU軟件常用模塊
序號(hào) | 模塊名稱 | 功用 |
1 | BOOTLOADER | 實(shí)現(xiàn)ECU程序的更新 |
2 | XCP | 用于參數(shù)標(biāo)定 |
3 | UDS | 用于故障診斷 |
4 | NvM | 用于參數(shù)存儲(chǔ) |
5 | 核間通信 | 適用于多核微處理器的主控芯片 |
4 補(bǔ)充說(shuō)明
下面對(duì)上一章的操作過(guò)程進(jìn)行幾點(diǎn)說(shuō)明。
(1)本文的內(nèi)容傾向于“工程實(shí)踐”,僅講述了“怎么做”而非“為什么這么做”,其中的概念和原理請(qǐng)參考AUTOSAR規(guī)范的相關(guān)章節(jié)。
(2)前文對(duì)軟件集成的步驟以模塊為單位逐一說(shuō)明,但在實(shí)際操作過(guò)程中可能出現(xiàn)“前個(gè)模塊配置須依賴于后續(xù)模塊設(shè)計(jì)到某個(gè)步驟”的情況,故在軟件設(shè)計(jì)過(guò)程中不必拘泥于文中的次序。
(3)在進(jìn)行“從無(wú)到有創(chuàng)建AUTOSAR工程”的過(guò)程中得到了團(tuán)隊(duì)內(nèi)外很多同行的指點(diǎn)和幫助,從尊重大家工作成果和遵守公司保密性要求的角度考慮,部分重要的技術(shù)細(xì)節(jié)不宜公開(kāi)發(fā)表(工具鏈開(kāi)發(fā)涉及到的內(nèi)容很多,我在此領(lǐng)域工作3年已經(jīng)編寫(xiě)了數(shù)千頁(yè)的工作文檔,確實(shí)也很難通過(guò)一篇文章講清楚整個(gè)過(guò)程),如果讀者在開(kāi)發(fā)過(guò)程中遇到問(wèn)題,歡迎私下里探討。
審核編輯:湯梓紅
-
AUTOSAR
+關(guān)注
關(guān)注
10文章
363瀏覽量
21801 -
ecu
+關(guān)注
關(guān)注
14文章
893瀏覽量
54789 -
Infineon
+關(guān)注
關(guān)注
2文章
92瀏覽量
29249 -
嵌入式軟件
+關(guān)注
關(guān)注
4文章
242瀏覽量
26753 -
開(kāi)發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
230瀏覽量
16712
原文標(biāo)題:ETAS AUTOSAR工具鏈的使用及集成 |附資料下載
文章出處:【微信號(hào):eng2mot,微信公眾號(hào):汽車ECU開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論