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