1 引言
在AUTOSAR方式設計車載ECU軟件的初期,很多項目團隊都采用“基礎軟件外協開發”的模式。即委托第三方軟件公司搭建一個AUTOSAR工程并給出各主要模塊的設計示例,再在此基礎上去做自己的項目。這樣的開發模式有助于快速適應全新的設計方法,縮短項目周期,但也會帶來“過于依賴項目組外部資源,一旦出現錯誤難于解決”等問題。
本文針對上述痛點,講述了在ETAS工具鏈環境下進行工程創建和常用模塊集成的全過程,目的是讓讀者對AUTOSAR工程的產生過程有一個大致的了解,從整體上理清AUTOSAR方式設計車載嵌入式軟件的思路。
由于要“從無到有”地創建一個實用的AUTOSAR工程,該系列之前編寫的三篇文章將作為參考文獻在文中引用,感興趣的讀者可在“你好舊時光追憶”公眾號中查找閱讀。
(1)《從手寫代碼到AUTOSAR工具鏈 - RTE入門篇》,以下簡稱《RTE入門篇》。
(2)《從手寫代碼到AUTOSAR工具鏈 - EcuM應用篇》,以下簡稱《EcuM應用篇》。
(3)《從手寫代碼到AUTOSAR工具鏈 - BswM應用篇》,以下簡稱《BswM應用篇》。
2 工具鏈
本文所述設計集成過程除MCAL部分采用Infineon和EB聯合開發的“EB Tresos”工具外,其余模塊均采用ETAS工具鏈開發,如表2-1所列。
表2-1: AUTOSAR工具鏈匯總
序號 | 集成開發環境 | 子工具 | 功用 |
1 | EB Tresos | EB Tresos | MCAL模塊設計 |
2 | ISOLAR-AB | ISOLAR-A | 系統級架構設計 |
RTA-RTE | 接口設計 | ||
RTA-BSW | BSW模塊設計 | ||
3 | RTA-OS | RTA-OS | 操作系統設計 |
3 工程創建和模塊集成
對于ETAS工具鏈使用者而言,AUTOSAR工程主要是在ISOLAR-AB中創建、設計和集成的。
下面以VCU項目為例講解AUTOSAR工程創建過程,其它車載ECU軟件可在此基礎上做相應改動。
3.1 工程創建
AUTOSAR工程創建在ISOLAR-A中進行。
3.1.1文件夾創建
按照表3-1創建工程文件夾。
表3-1: 工程文件夾創建
序號 | 一級文件夾 | 二級文件夾 | 三級文件夾 |
1 | hightec_vcu | - | - |
2 | isolar_ab_vcu | - | - |
3 | mcal_vcu | - | - |
4 | vcu | src | ASW、BSW、CDD、INFRA、IOHWAB、RTE、Target |
3.1.2AUTOSAR工程創建
雙擊“ISOLAR-AB V 4.0”圖標,彈出圖3-1所示的界面,按照圖示步驟操作進入ISOLAR-AB工具的主界面。
圖3-1: ISOLAR-AB工作空間選擇
在主界面中點擊“File->New->AUTOSAR Project”新建工程,彈出圖3-2所示的界面,按照圖中步驟完成工程創建。
圖3-2: AUTOSAR工程創建界面
3.2 架構設計
AUTOSAR開發方式中的架構設計即軟件組件(SWC)的設計,包括創建軟件組件、端口接口設計、內部行為設計等步驟,還需將SWC分別加入部件和ECU。具體操作方法詳見《RTE入門篇》。
3.3 配置系統
系統創建和配置按照下列步驟進行。
3.3.1部件創建
按照圖3-3和圖3-4所示創建部件。
圖3-3: 部件創建啟動
圖3-4: 部件創建配置
3.3.2系統創建
按照圖3-5和圖3-6所示創建系統。
圖3-5: 系統創建啟動
圖3-6: 系統創建配置
3.3.3系統配置
系統配置包括建立對部件的引用、抽取配置和映射創建3部分。
(1)建立系統對部件的引用
為上節創建的“System”生成1個子項“Root Software Compositions | Root Sw Composition Prototype”,并將其“SoftwareComposition”的引用配置為“TopLevelComposition”。
(2)系統抽取配置
配置上節創建“System”的類別。
(3)映射創建
為上節創建的“System”生成1個子項“Mappings | Mapping”,命名為“SwcToEcuMapping”,并配置“Ecu實例”。
3.4 通信配置
通信配置主要包括DBC導入、報文發送周期配置、抽取和生成RTA-BSW等操作,完成這些步驟后,與CAN通信有關的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 模式管理配置
依次進行EcuM和BswM模塊的配置,具體參見《EcuM應用篇》和《BswM應用篇》。
3.6 操作系統配置
操作系統配置分為2部分,ISOLAR-AB中的OS模塊配置和RTA-OS中的配置。
3.6.1 OS模塊配置
創建Os模塊并完成基礎配置。
(1)Os創建
創建Os模塊,再依圖3-8刪除多余項。
圖3-8: Os多余項刪除
(2)應用模式配置
按照圖3-9的步驟進行。
圖3-9: Os應用模式配置
(3)計數器配置
為Os應用配置計數器信息,圖3-10為其配置方法。
圖3-10: Os計數器配置
(4)任務配置
根據項目需要配置OS任務,圖3-11為配置方法,表3-3為任務配置示例。
圖3-11: Os任務配置
表3-3: Os任務參數配置示例
序號 | 配置項 | 配置值 | 說明 |
1 | ShortName | XXX | 任務名 |
2 | OsTaskActivation | 1 | 定義該任務最大數量的隊列激活請求,1表示在任何時刻任務僅允許單次激活 |
3 | OsTaskPriority | 39 | 任務優先級,數值越大優先級越高(對于TC275單片機) |
4 | OsTaskSchedule | FULL | 定義任務的優先處理性 |
5 | OsTaskStackAllocation | - | 任務手動堆棧分配,以字節為單位 |
6 | OsTaskWaitStack | - | 激活等待事件時的任務堆棧使用 |
7 | OsTaskBudget | - | 執行預算,以“浮點數+時基名+單位”表達 |
8 | OsTaskCanCallSchedule | - | 任務調用或可能調用“Schedule()”時配置為TRUE |
9 | OsTraceFilter | - | 描述任務是否被RTA-TRACE跟蹤 |
10 | OsTaskAccessingApplication | - | 訪問該對象的應用的引用 |
11 | OsTaskEventRef | - | 此引用定義了擴展任務可能會響應的事件列表 |
12 | OsTaskResourceRef | - | 此引用定義了該任務訪問的資源列表 |
13 | OsRegSetRef | - | 該任務用到的寄存器集的引用 |
3.6.2 RTA-OS配置
在生成RTE成功后進行。
(1)工程創建
點擊“File->New Project”新建工程,按照圖3-12所示配置工程屬性。
圖3-12: OS工程屬性配置
(2)文件加載
按照圖3-13所示將“...srcRTEgen”路徑下的osNeeds.arxml文件加載進來。
圖3-13: OS工程文件加載
(3)工程保存
將工程創建時自動生成的ARXML文件命名為“RTAOS.arxml”,并將其保存至“...srcTargetTC275RTAOSconfig”路徑下。
(4)通用參數配置
OS通用參數配置按照圖3-14進行。
圖3-14: OS通用配置
(5)應用模式配置
按照圖3-15將OS應用模式配置為OSDEFAULTAPPMODE。
圖3-15: OS應用模式配置
(6)中斷配置
按照圖3-16配置項目中需要的二類中斷。
圖3-16: OS中斷配置
3.6.3 RTA-OS生成
按照下列步驟生成OS代碼。
(1)文件夾創建
在“...srcTargetTC275”路徑下創建表3-4所示的文件夾。
表3-4: RTAOS文件夾創建
序號 | 一級文件夾 | 二級文件夾 | 三級文件夾 | 四級文件夾 | 五級文件夾 |
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的方法依次進行RTA-OS生成配置。
圖3-17: RTA-OS生成選項配置
圖3-18: RTA-OS生成輸出位置配置
圖3-19: RTA-OS生成包含路徑配置
(3)生成操作
按照圖3-20所示生成OS的代碼。
圖3-20: OS代碼生成
3.7 RTE配置
創建Rte模塊并完成基礎配置。
3.7.1 Rte創建
創建Rte模塊,再依圖3-21刪除多余項。
圖3-21: Rte多余項刪除
3.7.2 Rte配置
依次進行Rte模塊的配置。
(1)Rte生成配置
配置Rte生成參數,圖3-22為其配置方法。
圖3-22: Rte生成配置
(2)Bsw模塊實例配置
在生成RTE成功后進行。
Bsw模塊實例大部分由工具自動配置,前提是其存在Runnable。為后續編譯不出錯,在EcucValueCollection中無運行函數的模塊需要手動配置。
圖3-23: Bsw模塊實例配置
3.8 定點數位域配置
創建Bfx模塊并完成配置。
3.8.1 Bfx創建
在ISOLAR-B中創建Bfx模塊。
3.8.2 Bfx配置
依次進行Bfx模塊的通用配置和內存定位配置。
圖3-24: Bfx通用配置
圖3-25: Bfx內存定位配置
3.9 Ecuc數值集配置
創建Ecuc Value Collection并完成配置。
3.9.1 EcucValueCollection創建
在ISOLAR-B中創建Ecuc Value Collection。
3.9.2 EcucValueCollection配置
依次進行EcucValueCollection的配置。
(1)模塊關聯
按照圖3-26和圖3-27所示進行模塊關聯。
圖3-26: EcucValueCollection配置啟動
圖3-27: EcucValueCollection配置啟動
(2)任務分配
依照圖3-28將各模塊的函數拖到對應的OS任務中。
圖3-28: EcucValueCollection任務分配
3.10 AUTOSAR平臺類型配置
創建AUTOSAR_PlatformTypes并完成配置。
3.10.1 AR Package創建
按照圖3-29創建名為AUTOSAR_PlatformTypes的AR Package,再按照與之類似的方式為AUTOSAR_PlatformTypes創建1個子AR Package,名稱為ImplementationDataTypes。
圖3-29: AUTOSAR_PlatformTypes AR Package創建
3.10.2 數據類型添加
以uint8為例,按照圖3-30、圖3-31、圖3-32的步驟添加數據類型。
圖3-30: 數據類型添加啟動
圖3-31: 數據類型添加配置
圖3-32: 數據類型參數配置
按照上述步驟依次添加下列數據類型:boolean、float32、float64、sint16、sint32、sint64、sint8、uint16、uint32、uint64。
3.11 故障追蹤器配置
創建Det模塊并完成配置。
3.11.1 Det創建
在ISOLAR-B中創建Det模塊。
3.11.2 Det配置
依照圖3-33進行Det模塊的通用配置。
圖3-33: Det通用配置
3.12 RTE生成
在執行RTE生成前,須進行抽取、生成RTA-BSW、生成BSW等操作。
RTE生成按照圖3-34和圖3-35的步驟進行。
“Additional Commands”處輸入(該過程不再生成SWC的內存映射文件):--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 靜態代碼集成
MCAL靜態代碼的工程路徑為“...srcTargetTC275MCALmodules”,頭文件和源文件分別存放在“inc”和“src”文件夾下。
MCAL靜態代碼從EB Tresos的安裝路徑下拷貝。
3.13.2 配置文件集成
配置文件包括MCAL工程文件和單片機各外設模塊參數組成的“.xdm”文件,其路徑為“...srcTargetTC275MCALconfig”。
配置文件在添加MCAL模塊時由工具自動生成。
3.14 ECAL集成
這里的ECAL主要包括實現模擬量輸入和數字量輸入輸出信號的抽象,工程路徑為“...srcIOHWAB”。
3.15 內存映射集成
內存映射程序文件采用“xxx_MemMap.h”的命名規范,主要解決將變量、常量和代碼放到指定存儲空間的問題。
3.15.1 軟件組件內存映射文件
各SWC模塊的內存映射文件生成方法如圖3-36所示,通常每個新建軟件組件僅生成1次即可,之后可刪除該命令段。
圖3-36: 軟件組件內存映射程序文件生成方法
3.15.2 BSW模塊內存映射文件
各BSW模塊的內存映射文件生成方法如圖3-37所示(部分有對應SWC的BSW模塊按照圖3-36的方法操作),這部分文件通常只生成1次,且生成路徑不要在程序工程的路徑或子路徑下,否則容易帶來編譯錯誤。
圖3-37: BSW模塊內存映射程序文件生成方法
3.15.3 內存映射程序文件路徑
內存映射文件統一存儲在“...srcINFRAmemmap”路徑下(其余路徑下的內存映射文件須剪切至此),且須在工具生成文件的基礎上做相應改動。
3.16 復雜驅動集成
復雜驅動包含板級芯片驅動程序和對復雜傳感器和執行器進行操作的軟件模塊,相關的程序文件均為手寫代碼,工程路徑為“...srcCDD”。
3.17應用層軟件集成
按照下面的步驟進行應用層軟件集成。
3.17.1 應用層文件拷貝
按照表3-5將應用層程序文件拷貝或更新至工程的指定目錄。
表3-5: 應用層程序文件處理
序號 | 類別 | 文件(夾)名 | 文件拷貝位置 |
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文件導入
如果是首次操作,須按照圖3-38所示進行,再執行刷新操作;后續更新只需要在完成文件拷貝后直接刷新工程即可。
圖3-38: 應用層ARXML導入
3.17.3 SWC添加
將應用層的SWC分別添加到部件和ECU中,抽取。
3.17.4 相關模塊設計
在程序中調用應用層軟件的初始化和執行函數。
3.18 其它模塊設計與集成
以上完成了VCU軟件的工程創建和必備模塊集成的基本工作,表3-6列出了車載ECU軟件的一些其它的常用模塊,這些將在后續的軟文中逐一探討。
表3-6: 車載ECU軟件常用模塊
序號 | 模塊名稱 | 功用 |
1 | BOOTLOADER | 實現ECU程序的更新 |
2 | XCP | 用于參數標定 |
3 | UDS | 用于故障診斷 |
4 | NvM | 用于參數存儲 |
5 | 核間通信 | 適用于多核微處理器的主控芯片 |
4 補充說明
下面對上一章的操作過程進行幾點說明。
(1)本文的內容傾向于“工程實踐”,僅講述了“怎么做”而非“為什么這么做”,其中的概念和原理請參考AUTOSAR規范的相關章節。
(2)前文對軟件集成的步驟以模塊為單位逐一說明,但在實際操作過程中可能出現“前個模塊配置須依賴于后續模塊設計到某個步驟”的情況,故在軟件設計過程中不必拘泥于文中的次序。
(3)在進行“從無到有創建AUTOSAR工程”的過程中得到了團隊內外很多同行的指點和幫助,從尊重大家工作成果和遵守公司保密性要求的角度考慮,部分重要的技術細節不宜公開發表(工具鏈開發涉及到的內容很多,我在此領域工作3年已經編寫了數千頁的工作文檔,確實也很難通過一篇文章講清楚整個過程),如果讀者在開發過程中遇到問題,歡迎私下里探討。
審核編輯:湯梓紅
-
AUTOSAR
+關注
關注
10文章
363瀏覽量
21783 -
ecu
+關注
關注
14文章
892瀏覽量
54756 -
Infineon
+關注
關注
2文章
92瀏覽量
29230 -
嵌入式軟件
+關注
關注
4文章
240瀏覽量
26736 -
開發環境
+關注
關注
1文章
230瀏覽量
16699
原文標題:ETAS AUTOSAR工具鏈的使用及集成 |附資料下載
文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
ETAS與芯馳達簽署戰略合作協議 為客戶提供完整AUTOSAR解決方案
RISC-V 工具鏈簡介
AUTOSAR是什么
“E:\NXP\AUTOSAR\S32K_AUTOSAR_OS_4_0_98_RTM_1_0_0sample\standard\sc1”編譯時無法生成sample1_cfg.o怎么解決?
如何將ASCET-Developer開發流程與ARM Development Studio集成
ETAS RTA-CAR工具鏈操作指南
經緯恒潤自主研發出符合AUTOSAR標準的軟件產品
Can通信協議棧數據流及配置
一文讀懂DDS和AUTOSAR Adaptive的集成
AUTOSAR 解決方案 — INTEWORK-EAS-CP
![<b class='flag-5'>AUTOSAR</b> 解決方案 — INTEWORK-EAS-CP](https://file.elecfans.com/web2/M00/43/70/pYYBAGJ9-2eAAapGAAAqR-wyG1A368.jpg)
AUTOSAR Builder—符合AUTOSAR(CPAP)的嵌入式系統設計工具
![<b class='flag-5'>AUTOSAR</b> Builder—符合<b class='flag-5'>AUTOSAR</b>(CPAP)的嵌入式系統設計<b class='flag-5'>工具</b>](https://file1.elecfans.com/web2/M00/BC/62/wKgaomWbyNKAfg7qAAEozrCi4eI794.png)
評論