0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AUTOSAR之實時環(huán)境RTE

jf_EksNQtU6 ? 來源:你好舊時光追憶 ? 2023-05-30 15:32 ? 次閱讀

1 引言

近年來,越來越多的公司采用AUTOSAR工具鏈進行車載ECU軟件開發(fā),這對采用傳統(tǒng)手寫代碼方式設(shè)計程序的工程師而言是個不小的挑戰(zhàn),主要體現(xiàn)在以下3個方面。

(1)AUTOSAR規(guī)范涉及到很多全新的概念,像RTE、SWC、BswM這些概念,很多手寫代碼多年的老工程師也是不懂的。

(2)C語言編程和使用工具鏈配置的方式進行軟件設(shè)計,在思路上存在不小的差異,在開發(fā)方式切換的過程中可能感到諸多不適應(yīng)。

(3)雖然AUTOSAR規(guī)范也是用C語言實現(xiàn)的且源程序可見,但由于模塊繁多且每個功能塊所含的代碼量過于龐大,短期內(nèi)很難再用“把每行代碼搞清楚”的方式保證程序質(zhì)量,而且在程序執(zhí)行異常時由于對代碼不熟悉,即使是有著多年C編程經(jīng)驗的老工程師,也可能會有“問題查找無從下手”的感覺。

針對以上問題,我想從傳統(tǒng)的手工編程入手,逐一介紹AUTOSAR的基本概念和使用工具鏈開發(fā)的思路方法,希望對從手寫代碼切換至工具鏈開發(fā)的車載嵌入式軟件工程師有一點點幫助。

由于我學習使用AUTOSAR工具鏈的時間不長,很多概念和方法屬于“現(xiàn)學現(xiàn)賣”的階段,又在文中加入了不少自己的理解和感悟,其中的錯誤在所難免,懇請廣大同行們批評指正,共同進步。

2 控制實例

在本文中,我們以應(yīng)用在某重卡主駕座椅上的“ECAS控制器”為例,說明RTE的實現(xiàn)過程。該控制器的核心功能是“將座椅高度始終保持在設(shè)定位置上”,通過控制進氣閥和排氣閥的開閉調(diào)節(jié)空氣彈簧的充氣量,從而實現(xiàn)加載在座椅的重量發(fā)生變化時(不坐人或坐不同重量的人)其高度始終不變。表2-1為與之相關(guān)的主要部件及其功用。

表2-1: 座椅ECAS控制器相關(guān)主要部件及其功用

序號 部件名稱 功用
1 高度傳感器 實時采集座椅當前高度
2 進氣閥和排氣閥 (1)進氣閥打開,排氣閥關(guān)閉:空氣彈簧充氣,座椅高度上升 (2)進氣閥關(guān)閉,排氣閥打開:空氣彈簧放氣,座椅高度下降 (3)進氣閥和排氣閥都關(guān)閉:空氣彈簧無動作,座椅高度不變 (4)進氣閥和排氣閥都打開:錯誤狀態(tài)

3 基本概念

為表述方便,首先對本文中出現(xiàn)的概念或術(shù)語進行說明,文中黑體字為“官方定義”,紅體字加入了本人的理解。

注:由于AUTOSAR規(guī)范本身非本文討論的范疇,其中的通用知識(如:分層架構(gòu)、ARXML文件等)文中不再涉及,讀者可參照各類資料學習掌握。

3.1 車載嵌入式軟件概念

(1)基礎(chǔ)軟件:包括微控制器驅(qū)動、外圍芯片驅(qū)動、嵌入式操作系統(tǒng)、軟件整體架構(gòu)和集成等,部分公司稱其為“驅(qū)動和架構(gòu)”。

(2)應(yīng)用層軟件:主要涉及到特定ECU的控制邏輯和算法等,部分公司稱其為“算法和邏輯”。

大多數(shù)車載ECU軟件的核心由輸入、處理和輸出3部分組成,基礎(chǔ)軟件主要負責“輸入和輸出”部分,應(yīng)用層軟件專注于“處理”部分。

3.2 AUTOSAR規(guī)范概念

(1)RTE:運行時環(huán)境。作為應(yīng)用軟件層與基礎(chǔ)軟件層交互的橋梁,為軟硬件分離提供了可能??梢詫崿F(xiàn)軟件組件間、基礎(chǔ)軟件間以及軟件組件與基礎(chǔ)軟件之間的通信。RTE封裝了基礎(chǔ)軟件層的通信和服務(wù),為應(yīng)用層組件提供了標準化的基礎(chǔ)軟件和通信接口,使得應(yīng)用層可以通過RTE接口函數(shù)調(diào)用基礎(chǔ)軟件的服務(wù)。 此外,RTE抽象了ECU之間的通信,即RTE通過使用標準化的接口將其統(tǒng)一為軟件組件之間的通信。

舉例來說,如果要設(shè)計“座椅ECAS控制器”的軟件,程序首先要獲取座椅的當前高度和目標高度,通過一系列算法處理(如PID算法),計算出當前時刻氣囊進氣口和出氣口的狀態(tài),最后控制電磁閥進行座椅高度調(diào)節(jié)。這里面“采集座椅當前高度”由ADC模塊完成,“控制空氣彈簧進氣口和出氣口的電磁閥”由DO模塊完成,這兩者是基礎(chǔ)軟件的工作;“通過算法得到空氣彈簧進氣口和出氣口的狀態(tài)”由應(yīng)用層軟件完成。而“將基礎(chǔ)軟件采集到的高度傳遞給應(yīng)用層”和“將應(yīng)用層的電磁閥控制指令傳遞給基礎(chǔ)軟件層”,就是RTE的任務(wù)了。

(2)SWC:軟件組件。封裝了部分或全部汽車電子功能的模塊,包括了其具體的功能實現(xiàn)以及對應(yīng)的描述。

軟件組件可以理解為“一系列程序文件(函數(shù))的集合”。

(3)Port:端口。根據(jù)輸入輸出方向可分為需型端口(Require Port,RPort,用于從其它軟件組件獲得所需數(shù)據(jù)或者所請求的操作)、供型端口(Provide Port,PPort,用于對外提供某種數(shù)據(jù)或者某類操作)與供需端口(Provide and Require Port,PRPort,兼有需型端口與供型端口的特性)。

AUTOSAR規(guī)范中的“端口”相當于C語言中的“變量”,它的“變量類型”就是下面要介紹的“端口接口”。

(4)Interface:端口接口。由于端口僅僅定義了方向,AUTOSAR中用端口接口(Port Interface)來表征端口的屬性,常用端口接口包括如下兩種類型:

①發(fā)送者-接收者接口(Sender-Receiver Interface, S/R),用于數(shù)據(jù)的傳遞關(guān)系;

②客戶端-服務(wù)器接口(Client-Server Interface, C/S) ,用于操作(Operation,OP),即函數(shù)調(diào)用關(guān)系。

對于引用“發(fā)送者-接收者”接口的一組端口而言,需型端口為接收者,供型端口為發(fā)送者;對于引用“客戶端-服務(wù)器”接口的一組端口而言,需型端口為客戶端,供型端口為服務(wù)器。

AUTOSAR規(guī)范中的“端口接口”相當于C語言中的“結(jié)構(gòu)數(shù)據(jù)類型”,每個接口由一個或多個“數(shù)據(jù)元素”組成,相當于結(jié)構(gòu)體的成員。但和數(shù)據(jù)類型不同的是,除了其包含的每個數(shù)據(jù)元素分別有一個數(shù)據(jù)類型之外,每個接口還有一個自己的類型,“S/R”類型表示數(shù)據(jù)傳遞,相當于C語言中的“b = a”;“C/S”類型表示函數(shù)調(diào)用,相當于C語言中的“b = func(a)”。

3.3 信號

(1)系統(tǒng)信號:車載CAN網(wǎng)絡(luò)信號,即某ECU從CAN網(wǎng)絡(luò)接收和向CAN網(wǎng)絡(luò)發(fā)送的信號。

(2)內(nèi)部信號:不同SWC間交互的信號。

4 手寫代碼實現(xiàn)方法

這里所說的“手寫代碼”是指車載ECU程序的基礎(chǔ)軟件部分,應(yīng)用層軟件使用simulink等工具建模完成,下面以“座椅ECAS控制器”程序為例,介紹基礎(chǔ)軟件與應(yīng)用層軟件的“RTE”部分如何用手工編程的方式實現(xiàn)。

4.1 參數(shù)接口

首先需要明確基礎(chǔ)軟件與應(yīng)用層軟件的參數(shù)接口,如表4-1所列。

表4-1: 座椅ECAS控制器基礎(chǔ)軟件與應(yīng)用層軟件的參數(shù)接口

信號類型 信號名稱 精度 存儲類型 數(shù)據(jù)范圍 數(shù)據(jù)說明
輸入信號 objectLevel 0.1mm uint16 0-200(mm) 座椅目標高度,當數(shù)據(jù)為0時,表示該值無意義,或者程序處在初始化階段,或者系統(tǒng)上電后駕駛員沒有更新請求值;處在該值時,應(yīng)用層算法不會進行運算
currentLevel 0.1mm uint16 0-200(mm) 座椅當前高度,由ADC采集并計算
level_quality - uint8 0-255 質(zhì)量信號 2:一切正常(缺省值),所有源信號合法 6:由于硬件故障導致信號臨時性或永久性非法 8:初始化(初始化起始或從錯誤狀態(tài)恢復),所有源信號合法
precision_upper 0.1mm sint16 0-100(mm) 正向精度值
precision_lower 0.1mm sint16 -100-0(mm) 負向精度值
enable 0/1 boolean 0-1 表示當前周期是否使能算法控制,若不使能,則輸入enable=0,以保證算法控制函數(shù)運行的完整性
輸出信號 Control_status uint8 0-3 value = 0:進氣閥和排氣閥均關(guān)閉 value = 1:進氣閥開啟,排氣閥關(guān)閉 value = 2:進氣閥開啟,排氣閥關(guān)閉 value = 3:本輪調(diào)節(jié)結(jié)束
is_Control_Over 0/1 boolean 0-1 表示當前的控制算法是否已調(diào)節(jié)完畢,并達到了給定的precision精度要求。

4.2 函數(shù)接口

表4-2列出了基礎(chǔ)軟件與應(yīng)用層軟件之間的函數(shù)接口。

表4-2: 座椅ECAS控制器基礎(chǔ)軟件與應(yīng)用層軟件的函數(shù)接口



序號 函數(shù)名稱 調(diào)用方式
1 Controller_initialize 僅在初始化階段調(diào)用1次
2 Controller_step 在主程序中以20ms為周期循環(huán)調(diào)用

4.3 代碼實現(xiàn)

這里使用2個源文件標識座椅ECAS控制器RTE手寫代碼實現(xiàn)方法,圖4-1和圖4-2分別為logic.c和main.c的代碼截圖。

2de7c0da-fc59-11ed-90ce-dac502259ad0.png

2df348c4-fc59-11ed-90ce-dac502259ad0.png

2dfd8b90-fc59-11ed-90ce-dac502259ad0.png

2e091abe-fc59-11ed-90ce-dac502259ad0.png

2e138fbc-fc59-11ed-90ce-dac502259ad0.png

圖4-1: 邏輯模塊RTE實現(xiàn)手寫代碼截圖

2e1e1c16-fc59-11ed-90ce-dac502259ad0.png

2e284222-fc59-11ed-90ce-dac502259ad0.png

圖4-2: 主模塊RTE實現(xiàn)手寫代碼截圖

5 AUTOSAR工具鏈實現(xiàn)方法

AUTOSAR主流工具鏈大多由德國公司提供,包括Vector、ETAS、EB等,本文以ETAS公司的ISOLAR-AB工具為例講述RTE的開發(fā)步驟,主要涉及到其中的2個子工具。

ISOLAR-A:進行系統(tǒng)級架構(gòu)設(shè)計。

RTA-RTE:進行接口設(shè)計。

AUTOSAR工具鏈中的“架構(gòu)設(shè)計”即應(yīng)用層軟件組件的設(shè)計,可分為自上而下和自下而上2種開發(fā)方式。“自上而下”是指在ISOLAR-A中創(chuàng)建應(yīng)用層SWC及其所包含的端口,再在Simulink中導入該SWC的arxml文件,并在此基礎(chǔ)上進行邏輯和算法開發(fā);“自下而上”是指在Simulink中創(chuàng)建端口、運行實體等SWC元素,再在ISOLAR-A中導入對應(yīng)arxml文件生成SWC。本文采用“自上而下”的開發(fā)方式。

下面介紹如何使用AUTOSAR工具鏈方式實現(xiàn)座椅ECAS控制器的RTE部分。

5.1 工程導入

打開“ISOLAR-AB 4.0.2”環(huán)境,選擇“File -> Import -> Existing Projects into Workspace”,點擊“Next”。

按照圖5-1所示的方法將所用工程導入。

2e33bc10-fc59-11ed-90ce-dac502259ad0.png

圖5-1: ISOLAR-AB工程導入方法

5.2 軟件組件創(chuàng)建

座椅ECAS控制器需要創(chuàng)建3個軟件組件,如表5-1所列。

表5-1: 座椅ECAS控制器軟件組件




序號 軟件組件名稱 軟件組件功用
1 Controller_SWC 控制軟件組件,用于運行座椅高度控制的算法
2 AlgorithmInput_SWC 算法輸入軟件組件,用于提供座椅高度控制的輸入?yún)?shù)
3 AlgorithmActuator_SWC 算法執(zhí)行軟件組件,用于執(zhí)行進氣閥和排氣閥的開閉動作

下面以Controller_SWC為例,介紹軟件組件的創(chuàng)建步驟,其余2個軟件組件的創(chuàng)建與之類似。

5.2.1 文件夾創(chuàng)建

在“...srcASW”路徑下創(chuàng)建“Controller_SWC”文件夾,再在其中創(chuàng)建“src”和“arxml”兩個子文件夾。

5.2.2 為控制軟件組件創(chuàng)建arxml描述文件

在工程名上右鍵“New -> AUTOSAR File”,彈出圖5-3所示的對話框,這里新建一個名為“Controller_SWC.arxml”的描述文件,并同時創(chuàng)建一個名為“Controller_SWC”的AR Package。

2e3e3b22-fc59-11ed-90ce-dac502259ad0.png 圖5-2: arxml描述文件創(chuàng)建啟動 2e4ba668-fc59-11ed-90ce-dac502259ad0.png

圖5-3: 控制軟件組件arxml描述文件創(chuàng)建界面

5.2.3 創(chuàng)建控制軟件組件

按照圖5-4和圖5-5所示的方法創(chuàng)建控制軟件組件。

2e57319a-fc59-11ed-90ce-dac502259ad0.png 圖5-4: 軟件組件創(chuàng)建啟動 2e65c822-fc59-11ed-90ce-dac502259ad0.png

圖5-5: 控制軟件組件創(chuàng)建操作示意圖

5.2.4 文件移動

在“...srcBSW”路徑下找到“Controller_SWC.arxml”,并將其剪切到“...srcASWController_SWCarxml”位置。

5.3 接口創(chuàng)建

座椅ECAS控制器需要創(chuàng)建的接口如表5-2所列,下面以“hld_Mw_objectLevel”為例講述S/R接口的設(shè)計步驟,其余接口與之類似。

表5-2: 座椅ECAS控制器需創(chuàng)建的接口

序號 接口 接口所包含的數(shù)據(jù)元素
接口名稱 接口類型 數(shù)據(jù)元素名稱 數(shù)據(jù)元素數(shù)據(jù)類型
1 hld_Mw_objectLevel S/R hld_Mw_objectLevel uint16
2 hld_Mw_currentLevel S/R hld_Mw_currentLevel uint16
3 hld_Mb_level_quality S/R hld_Mb_level_quality uint8
4 hld_Msw_precision_upper S/R hld_Msw_precision_upper sint16
5 hld_Msw_precision_lower S/R hld_Msw_precision_lower sint16
6 hld_Mbl_enable S/R hld_Mbl_enable boolean
7 hld_Mb_Control_status S/R hld_Mb_Control_status uint8
8 hld_Mbl_is_Control_Over S/R hld_Mbl_is_Control_Over boolean

5.3.1 接口創(chuàng)建

按照圖5-6和5-7所示創(chuàng)建接口。

2e6f8b64-fc59-11ed-90ce-dac502259ad0.png

圖5-6: S/R接口創(chuàng)建啟動

2e75da82-fc59-11ed-90ce-dac502259ad0.png

圖5-7: 接口創(chuàng)建過程

5.3.2 添加接口的數(shù)據(jù)元素

按照圖5-8和5-9所示添加接口的數(shù)據(jù)元素。

2e7f533c-fc59-11ed-90ce-dac502259ad0.png

圖5-8: 添加接口數(shù)據(jù)元素

2e88bf94-fc59-11ed-90ce-dac502259ad0.png

圖5-9: 選擇接口數(shù)據(jù)元素的數(shù)據(jù)類型

5.4 軟件組件行為設(shè)計

下面對表5-1所列3個軟件組件的行為進行設(shè)計,按照如下步驟進行。

5.4.1 創(chuàng)建軟件組件內(nèi)部行為

按照圖5-10所示依次創(chuàng)建Controller_SWC、AlgorithmInput_SWC和AlgorithmActuator_SWC的內(nèi)部行為。

2e99d748-fc59-11ed-90ce-dac502259ad0.png

圖5-10: 軟件組件內(nèi)部行為創(chuàng)建

5.4.2 添加軟件組件端口

控制軟件組件、算法輸入軟件組件和算法執(zhí)行軟件組件須添加的端口分別如表5-3、表5-4和表5-5所列。

表5-3: 控制軟件組件端口表

序號 端口 映射接口 說明
類型 名稱 類型 映射接口名
1 RPort C_RP_Mw_objectLevel S/R hld_Mw_objectLevel 座椅目標高度
2 RPort C_RP_Mw_currentLevel S/R hld_Mw_currentLevel 座椅當前高度
3 RPort C_RP_Mb_level_quality S/R hld_Mb_level_quality 質(zhì)量信號
4 RPort C_RP_Msw_precision_upper S/R hld_Msw_precision_upper 正向精度值
5 RPort C_RP_Msw_precision_lower S/R hld_Msw_precision_lower 負向精度值
6 RPort C_RP_Mbl_enable S/R hld_Mbl_enable 算法控制使能標志
7 PPort C_PP_Mb_Control_status S/R hld_Mb_Control_status 進氣閥和排氣閥狀態(tài)
8 PPort C_PP_Mbl_is_Control_Over S/R hld_Mbl_is_Control_Over 控制算法調(diào)節(jié)完畢標志



表5-4:算法輸入軟件組件端口表

序號 端口 映射接口 說明
類型 名稱 類型 映射接口名
1 PPort I_PP_Mw_objectLevel S/R hld_Mw_objectLevel 座椅目標高度
2 PPort I_PP_Mw_currentLevel S/R hld_Mw_currentLevel 座椅當前高度
3 PPort I_PP_Mb_level_quality S/R hld_Mb_level_quality 質(zhì)量信號
4 PPort I_PP_Msw_precision_upper S/R hld_Msw_precision_upper 正向精度值
5 PPort I_PP_Msw_precision_lower S/R hld_Msw_precision_lower 負向精度值
6 PPort I_PP_Mbl_enable S/R hld_Mbl_enable 算法控制使能標志

表5-5:算法輸出軟件組件端口表

序號 端口 映射接口 說明
類型 名稱 類型 映射接口名
1 RPort O_RP_Mb_Control_status S/R hld_Mb_Control_status 進氣閥和排氣閥狀態(tài)
2 RPort O_RP_Mbl_is_Control_Over S/R hld_Mbl_is_Control_Over 控制算法調(diào)節(jié)完畢標志

圖5-11為添加軟件組件端口的方法。

2ea05da2-fc59-11ed-90ce-dac502259ad0.png

圖5-11: 添加軟件組件端口

5.4.3 添加運行實體

運行實體即在SWC中執(zhí)行的函數(shù)??刂栖浖M件、算法輸入軟件組件和算法執(zhí)行軟件組件須添加的運行實體分別如表5-6、表5-7和表5-8所列。

表5-6: 控制軟件組件運行實體

序號 運行實體名 函數(shù)名 功用
1 Controller_initialize Controller_initialize 控制模塊初始化
2 Controller_step Controller_step 控制模塊執(zhí)行步驟

表5-7:算法輸入軟件組件運行實體

序號 運行實體名 函數(shù)名 功用
1 AlgorithmInput AlgorithmInput 控制模塊輸入?yún)?shù)確定和傳遞

表5-8:算法執(zhí)行軟件組件運行實體

序號 運行實體名 函數(shù)名 功用
1 AlgorithmOutput AlgorithmOutput 控制模塊輸出參數(shù)接收和執(zhí)行

圖5-12為添加運行實體的方法。

2ea87348-fc59-11ed-90ce-dac502259ad0.png

圖5-12: 添加軟件組件運行實體

5.4.4 添加運行實體與所屬軟件組件的端口訪問

本步的目的是添加與SWC中每個運行實體相關(guān)的端口,可以簡單的理解為添加某個函數(shù)(即運行實體)需要用到的變量(即端口)。這里將控制軟件組件、算法輸入軟件組件和算法執(zhí)行軟件組件中的全部端口分別添加到Controller_step、AlgorithmInput和AlgorithmOutput運行實體中。

圖5-13為添加運行實體與所屬軟件組件端口訪問的方法。

2eb4e330-fc59-11ed-90ce-dac502259ad0.png

圖5-13: 添加運行實體與所屬軟件組件的端口訪問

5.4.5 添加運行實體的RTE事件

將Controller_step、AlgorithmInput和AlgorithmOutput運行實體均配置為“周期性事件”,周期0.02s。

2ec0ee50-fc59-11ed-90ce-dac502259ad0.png

圖5-14: 添加運行實體的RTE事件

5.5 軟件組件添加

前面創(chuàng)建了3個軟件組件及其內(nèi)部行為,這里將這些SWC與座椅控制器相關(guān)聯(lián)。

5.5.1 將軟件組件加入部件

如果把軟件組件比作程序的“積木”,“部件”就相當于“積木箱”,圖5-15和圖5-16為將SWC加入部件的步驟。

2ec99a96-fc59-11ed-90ce-dac502259ad0.png

圖5-15: 軟件組件加入部件操作啟動

2ed1ecf0-fc59-11ed-90ce-dac502259ad0.png

圖5-16: 軟件組件加入部件操作

5.5.2 將軟件組件映射到座椅控制器

將前面創(chuàng)建的3個SWC映射到座椅ECAS控制器軟件中,如圖5-17所示。

2edc0b68-fc59-11ed-90ce-dac502259ad0.png

圖5-17: 軟件組件向ECU映射

5.6 信號連接

由于座椅ECAS控制器僅涉及到3個SWC間信號的傳遞,故只需要連接“內(nèi)部信號”即可,如圖5-18和圖5-19所示。

2eea259a-fc59-11ed-90ce-dac502259ad0.png

圖5-18: 內(nèi)部信號連接啟動

2ef4a7c2-fc59-11ed-90ce-dac502259ad0.png

圖5-19: 座椅ECAS系統(tǒng)連接的內(nèi)部信號

5.7 運行實體調(diào)度

將AlgorithmInput、Controller_step和AlgorithmOutput添加到操作系統(tǒng)20ms周期性執(zhí)行的任務(wù)中,注意次序不要弄反。

5.8 代碼生成

接下來就是生成代碼了,分為軟件組件抽取、RTE代碼生成和SWC代碼生成3個步驟。

5.8.1 軟件組件抽取

“抽取”的含義就是將屬于座椅ECAS控制器軟件的3個SWC拿過來用,如圖5-20所示(上節(jié)的運行實體調(diào)度操作應(yīng)在抽取之后完成)。

2effbbda-fc59-11ed-90ce-dac502259ad0.png

圖5-20: 軟件組件抽取操作

5.8.2 RTE代碼生成

如圖5-21所示。

2f07a5ca-fc59-11ed-90ce-dac502259ad0.png

圖5-21: RTE代碼生成操作

5.8.3 SWC代碼生成

座椅ECAS控制器軟件僅需按照圖5-22和圖5-23所示生成算法輸入軟件組件和算法執(zhí)行軟件組件的代碼,控制軟件組件在simulink環(huán)境下建模完成,只需提交Controller_SWC.arxml給應(yīng)用層就可以了。

2f0ee3da-fc59-11ed-90ce-dac502259ad0.png

圖5-22: SWC代碼生成啟動

2f20cee2-fc59-11ed-90ce-dac502259ad0.png

圖5-23: SWC代碼生成操作

5.9 代碼添加

最后我們看看用AUTOSAR工具鏈自動生成的代碼是什么樣子的,圖5-24和圖5-25分別為算法輸入軟件組件和算法執(zhí)行軟件組件的代碼截圖。

2f2ac9ce-fc59-11ed-90ce-dac502259ad0.png

圖5-24: 算法輸入軟件組件代碼截圖

2f3881ae-fc59-11ed-90ce-dac502259ad0.png

圖5-25: 算法執(zhí)行軟件組件代碼截圖

5.10 事項說明

下面針對一些未明確事項進行說明。

5.10.1 系統(tǒng)信號連接

座椅ECAS控制器軟件沒有涉及到系統(tǒng)信號,但對于大部分車載ECU來說,與車載CAN網(wǎng)絡(luò)的交互(從CAN網(wǎng)絡(luò)接收數(shù)據(jù)和向CAN網(wǎng)絡(luò)發(fā)送數(shù)據(jù))是必不可少的,此時可參照圖5-26的方法進行系統(tǒng)信號連接。

2f420148-fc59-11ed-90ce-dac502259ad0.png

圖5-26: 系統(tǒng)信號連接啟動

5.10.2 控制軟件組件初始化函數(shù)調(diào)用

細心的讀者可能會注意到,在工具鏈實現(xiàn)RTE的過程中,并沒有涉及算法模塊初始化函數(shù)Controller_initialize的調(diào)用。因為這涉及到AUTOSAR的一個重要的BSW模塊 - EcuM的使用,我們留待下篇再講,可以期待一下。

6 結(jié)論

綜上可以看出,單就RTE實現(xiàn)而言,AUTOSAR工具鏈方式要比傳統(tǒng)手工編程方式復雜,但也體現(xiàn)出了如下優(yōu)點:軟件組件獨立,功能劃分明確;使用標準化接口設(shè)計運行時環(huán)境,模塊獨立開發(fā)便于項目組成員協(xié)同工作。特別是在大型車載ECU軟件中,使用AUTOSAR工具鏈方式可以極大的保證軟件質(zhì)量、縮短開發(fā)周期。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16361

    瀏覽量

    178071
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136841
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    362

    瀏覽量

    21588
  • ecu
    ecu
    +關(guān)注

    關(guān)注

    14

    文章

    886

    瀏覽量

    54504

原文標題:AutoSAR之實時環(huán)境RTE

文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    功能安全---AUTOSAR架構(gòu)深度解析 精選資料分享

    AUTOSAR架構(gòu)深度解析本文轉(zhuǎn)載于:AUTOSAR架構(gòu)深度解析AUTOSAR的分層式設(shè)計,用于支持完整的軟件和硬件模塊的獨立性(Independence),中間RTE(Runtime
    發(fā)表于 07-23 08:34

    AUTOSAR架構(gòu)深度解析 精選資料推薦

    AUTOSAR架構(gòu)深度解析本文轉(zhuǎn)載于:AUTOSAR架構(gòu)深度解析目錄AUTOSAR架構(gòu)深度解析AUTOSAR分層結(jié)構(gòu)及應(yīng)用軟件層功能應(yīng)用軟件層虛擬功能總線VFB及運行
    發(fā)表于 07-28 07:40

    AUTOSAR架構(gòu)深度解析 精選資料推薦

    轉(zhuǎn)自:https://blog.csdn.net/helaisun/article/details/79382633AUTOSAR的分層式設(shè)計,用于支持完整的軟件和硬件模塊的獨立性
    發(fā)表于 07-28 07:06

    AUTOSAR架構(gòu)深度解析 精選資料分享

    AUTOSAR架構(gòu)深度解析本文轉(zhuǎn)載于:AUTOSAR架構(gòu)深度解析AUTOSAR的分層式設(shè)計,用于支持完整的軟件和硬件模塊的獨立性(Independence),中間RTE(Runtime
    發(fā)表于 07-28 07:02

    AUTOSAR軟件架構(gòu)是由哪些部分組成的

    章節(jié)回顧AUTOSAR軟件架構(gòu)(一)中描述了以下內(nèi)容:Application Layer應(yīng)用層Runtime Environment (RTE)運行時環(huán)境Basic Software (BSW
    發(fā)表于 12-09 07:30

    基于RT-Thread內(nèi)核的AUTOSAR在n32g上的實現(xiàn)方案

    模型進行設(shè)計;RTE全稱Runtime Environment,即運行時環(huán)境,它的內(nèi)部是一條autosar框架定義的虛擬功能總線(VFB),SWC、BSW通過這條虛擬功能總線進行通信。BSW從上到下分為
    發(fā)表于 07-27 14:30

    AUTOSAR功能安全機制之內(nèi)存分區(qū)與實現(xiàn)

    1、AUTOSAR功能安全機制之內(nèi)存分區(qū)與實現(xiàn)  在AUTOSAR架構(gòu)中,應(yīng)用軟件位于RTE上方,由互連的AUTOSAR SWC組成,這些組件以原子方式封裝了應(yīng)用軟件功能的各個組成部分
    發(fā)表于 09-19 15:55

    什么是RTE?

    我正在嘗試根據(jù)我們的需要為我們的團隊創(chuàng)建 iMRT1064 的項目模板,并偶然發(fā)現(xiàn)了 McuExpresso 中名為“RTE”的組件,請參見屏幕截圖。 我不知道什么是 RTE,搜索 google 會給出各種結(jié)果,如“運行時環(huán)境
    發(fā)表于 05-17 13:45

    VB與PLC之實時控制系統(tǒng)

    VB與PLC之實時控制系統(tǒng)
    發(fā)表于 02-07 16:15 ?25次下載

    一種AUTOSAR軟件架構(gòu)中RTE的實現(xiàn)方法

    介紹了一種AUTOSAR軟件架構(gòu)中RTE的實現(xiàn)方法。
    發(fā)表于 07-13 16:02 ?6次下載

    AUTOSAR SWC內(nèi)存分區(qū)與實現(xiàn)

    AUTOSAR架構(gòu)中,應(yīng)用軟件位于RTE上方,由互連的AUTOSAR SWC組成,這些組件以原子方式封裝了應(yīng)用軟件功能的各個組成部分。
    發(fā)表于 10-08 11:58 ?2587次閱讀
    <b class='flag-5'>AUTOSAR</b> SWC內(nèi)存分區(qū)與實現(xiàn)

    AUTOSAR架構(gòu)之內(nèi)存分區(qū)與實現(xiàn)

    AUTOSAR SWC獨立于硬件,因此可以集成到任何可用的ECU硬件上。為了便于ECU內(nèi)部和內(nèi)部的信息交換,AUTOSAR SWC僅通過RTE進行通信。
    發(fā)表于 11-11 11:49 ?1250次閱讀

    一文入門AUTOSAR OS

    Autosar Os 在Autosar 框架中上至RTE 下至驅(qū)動,中間可以和BSW 基礎(chǔ)模塊進行交互。是整個autosar 框架下最重要的組成部分。
    的頭像 發(fā)表于 06-29 10:34 ?4263次閱讀
    一文入門<b class='flag-5'>AUTOSAR</b> OS

    AUTOSAR CP運行時環(huán)境與應(yīng)用軟件

    運行時環(huán)境RTEAUTOSAR CP運行時環(huán)境RTE)是AUTOSAR架構(gòu)中的核心組件,
    的頭像 發(fā)表于 10-27 15:44 ?1316次閱讀
    <b class='flag-5'>AUTOSAR</b> CP運行時<b class='flag-5'>環(huán)境</b>與應(yīng)用軟件

    RTE架構(gòu)實現(xiàn)

    本文檔設(shè)計了一種AUTOSAR軟件架構(gòu)中RTE的實現(xiàn)方法,并考慮到功能安全,給出了一些實際例子。本架構(gòu)可通過腳本文件,在MATLAB中運行,一鍵生成RTE代碼。
    發(fā)表于 07-13 16:03 ?2次下載