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

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

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

AUTOSAR的基本概念

汽車ECU開(kāi)發(fā) ? 來(lái)源:汽車ECU開(kāi)發(fā) ? 2023-05-26 16:02 ? 次閱讀

1引言

近年來(lái),越來(lái)越多的公司采用AUTOSAR工具鏈進(jìn)行車載ECU軟件開(kāi)發(fā),這對(duì)采用傳統(tǒng)手寫代碼方式設(shè)計(jì)程序的工程師而言是個(gè)不小的挑戰(zhàn),主要體現(xiàn)在以下3個(gè)方面。 (1)AUTOSAR規(guī)范涉及到很多全新的概念,像RTE、SWC、BswM這些概念,很多手寫代碼多年的老工程師也是不懂的。 (2)C語(yǔ)言編程和使用工具鏈配置的方式進(jìn)行軟件設(shè)計(jì),在思路上存在不小的差異,在開(kāi)發(fā)方式切換的過(guò)程中可能感到諸多不適應(yīng)。 (3)雖然AUTOSAR規(guī)范也是用C語(yǔ)言實(shí)現(xiàn)的且源程序可見(jiàn),但由于模塊繁多且每個(gè)功能塊所含的代碼量過(guò)于龐大,短期內(nèi)很難再用“把每行代碼搞清楚”的方式保證程序質(zhì)量,而且在程序執(zhí)行異常時(shí)由于對(duì)代碼不熟悉,即使是有著多年C編程經(jīng)驗(yàn)的老工程師,也可能會(huì)有“問(wèn)題查找無(wú)從下手”的感覺(jué)。 針對(duì)以上問(wèn)題,我想從傳統(tǒng)的手工編程入手,逐一介紹AUTOSAR的基本概念和使用工具鏈開(kāi)發(fā)的思路方法,希望對(duì)從手寫代碼切換至工具鏈開(kāi)發(fā)的車載嵌入式軟件工程師有一點(diǎn)點(diǎn)幫助。 由于我學(xué)習(xí)使用AUTOSAR工具鏈的時(shí)間不長(zhǎng),很多概念和方法屬于“現(xiàn)學(xué)現(xiàn)賣”的階段,又在文中加入了不少自己的理解和感悟,其中的錯(cuò)誤在所難免,懇請(qǐng)廣大同行們批評(píng)指正,共同進(jìn)步。

2控制實(shí)例

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

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

3基本概念

為表述方便,首先對(duì)本文中出現(xiàn)的概念或術(shù)語(yǔ)進(jìn)行說(shuō)明,文中黑體字為“官方定義”,紅體字加入了本人的理解。 注:由于AUTOSAR規(guī)范本身非本文討論的范疇,其中的通用知識(shí)(如:分層架構(gòu)、ARXML文件等)文中不再涉及,讀者可參照各類資料學(xué)習(xí)掌握。

3.1車載嵌入式軟件概念

(1)基礎(chǔ)軟件:包括微控制器驅(qū)動(dòng)、外圍芯片驅(qū)動(dòng)、嵌入式操作系統(tǒng)、軟件整體架構(gòu)和集成等,部分公司稱其為“驅(qū)動(dòng)和架構(gòu)”。 (2)應(yīng)用層軟件:主要涉及到特定ECU的控制邏輯和算法等,部分公司稱其為“算法和邏輯”。 大多數(shù)車載ECU軟件的核心由輸入、處理和輸出3部分組成,基礎(chǔ)軟件主要負(fù)責(zé)“輸入和輸出”部分,應(yīng)用層軟件專注于“處理”部分。

3.2 AUTOSAR規(guī)范概念

(1)RTE:運(yùn)行時(shí)環(huán)境。作為應(yīng)用軟件層與基礎(chǔ)軟件層交互的橋梁,為軟硬件分離提供了可能。可以實(shí)現(xiàn)軟件組件間、基礎(chǔ)軟件間以及軟件組件與基礎(chǔ)軟件之間的通信。RTE封裝了基礎(chǔ)軟件層的通信和服務(wù),為應(yīng)用層組件提供了標(biāo)準(zhǔn)化的基礎(chǔ)軟件和通信接口,使得應(yīng)用層可以通過(guò)RTE接口函數(shù)調(diào)用基礎(chǔ)軟件的服務(wù)。此外,RTE抽象了ECU之間的通信,即RTE通過(guò)使用標(biāo)準(zhǔn)化的接口將其統(tǒng)一為軟件組件之間的通信。 舉例來(lái)說(shuō),如果要設(shè)計(jì)“座椅ECAS控制器”的軟件,程序首先要獲取座椅的當(dāng)前高度和目標(biāo)高度,通過(guò)一系列算法處理(如PID算法),計(jì)算出當(dāng)前時(shí)刻氣囊進(jìn)氣口和出氣口的狀態(tài),最后控制電磁閥進(jìn)行座椅高度調(diào)節(jié)。這里面“采集座椅當(dāng)前高度”由ADC模塊完成,“控制空氣彈簧進(jìn)氣口和出氣口的電磁閥”由DO模塊完成,這兩者是基礎(chǔ)軟件的工作;“通過(guò)算法得到空氣彈簧進(jìn)氣口和出氣口的狀態(tài)”由應(yīng)用層軟件完成。而“將基礎(chǔ)軟件采集到的高度傳遞給應(yīng)用層”和“將應(yīng)用層的電磁閥控制指令傳遞給基礎(chǔ)軟件層”,就是RTE的任務(wù)了。 (2)SWC:軟件組件。封裝了部分或全部汽車電子功能的模塊,包括了其具體的功能實(shí)現(xiàn)以及對(duì)應(yīng)的描述。 軟件組件可以理解為“一系列程序文件(函數(shù))的集合”。 (3)Port:端口。根據(jù)輸入輸出方向可分為需型端口(Require Port,RPort,用于從其它軟件組件獲得所需數(shù)據(jù)或者所請(qǐng)求的操作)、供型端口(Provide Port,PPort,用于對(duì)外提供某種數(shù)據(jù)或者某類操作)與供需端口(Provide and Require Port,PRPort,兼有需型端口與供型端口的特性)。 AUTOSAR規(guī)范中的“端口”相當(dāng)于C語(yǔ)言中的“變量”,它的“變量類型”就是下面要介紹的“端口接口”。 (4)Interface:端口接口。由于端口僅僅定義了方向,AUTOSAR中用端口接口(Port Interface)來(lái)表征端口的屬性,常用端口接口包括如下兩種類型: ①發(fā)送者-接收者接口(Sender-Receiver Interface, S/R),用于數(shù)據(jù)的傳遞關(guān)系; ②客戶端-服務(wù)器接口(Client-Server Interface, C/S),用于操作(Operation,OP),即函數(shù)調(diào)用關(guān)系。

對(duì)于引用“發(fā)送者-接收者”接口的一組端口而言,需型端口為接收者,供型端口為發(fā)送者;對(duì)于引用“客戶端-服務(wù)器”接口的一組端口而言,需型端口為客戶端,供型端口為服務(wù)器。 AUTOSAR規(guī)范中的“端口接口”相當(dāng)于C語(yǔ)言中的“結(jié)構(gòu)數(shù)據(jù)類型”,每個(gè)接口由一個(gè)或多個(gè)“數(shù)據(jù)元素”組成,相當(dāng)于結(jié)構(gòu)體的成員。但和數(shù)據(jù)類型不同的是,除了其包含的每個(gè)數(shù)據(jù)元素分別有一個(gè)數(shù)據(jù)類型之外,每個(gè)接口還有一個(gè)自己的類型,“S/R”類型表示數(shù)據(jù)傳遞,相當(dāng)于C語(yǔ)言中的“b = a”;“C/S”類型表示函數(shù)調(diào)用,相當(dāng)于C語(yǔ)言中的“b = func(a)”。

3.3信號(hào)

(1)系統(tǒng)信號(hào):車載CAN網(wǎng)絡(luò)信號(hào),即某ECU從CAN網(wǎng)絡(luò)接收和向CAN網(wǎng)絡(luò)發(fā)送的信號(hào)。 (2)內(nèi)部信號(hào):不同SWC間交互的信號(hào)。

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

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

4.1參數(shù)接口

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

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

4.2函數(shù)接口

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

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

4.3代碼實(shí)現(xiàn)

這里使用2個(gè)源文件標(biāo)識(shí)座椅ECAS控制器RTE手寫代碼實(shí)現(xiàn)方法,圖4-1和圖4-2分別為logic.c和main.c的代碼截圖。 b2d133d6-fafa-11ed-90ce-dac502259ad0.pngb2d752ca-fafa-11ed-90ce-dac502259ad0.pngb2dea99e-fafa-11ed-90ce-dac502259ad0.pngb2e82fe6-fafa-11ed-90ce-dac502259ad0.pngb2eff64a-fafa-11ed-90ce-dac502259ad0.png 圖4-1:?邏輯模塊RTE實(shí)現(xiàn)手寫代碼截圖 ? b2f799d6-fafa-11ed-90ce-dac502259ad0.pngb2feccc4-fafa-11ed-90ce-dac502259ad0.png 圖4-2:?主模塊RTE實(shí)現(xiàn)手寫代碼截圖 ?

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

AUTOSAR主流工具鏈大多由德國(guó)公司提供,包括Vector、ETAS、EB等,本文以ETAS公司的ISOLAR-AB工具為例講述RTE的開(kāi)發(fā)步驟,主要涉及到其中的2個(gè)子工具。 ISOLAR-A:進(jìn)行系統(tǒng)級(jí)架構(gòu)設(shè)計(jì)。 RTA-RTE:進(jìn)行接口設(shè)計(jì)。 AUTOSAR工具鏈中的“架構(gòu)設(shè)計(jì)”即應(yīng)用層軟件組件的設(shè)計(jì),可分為自上而下和自下而上2種開(kāi)發(fā)方式?!白陨隙隆笔侵冈贗SOLAR-A中創(chuàng)建應(yīng)用層SWC及其所包含的端口,再在Simulink中導(dǎo)入該SWC的arxml文件,并在此基礎(chǔ)上進(jìn)行邏輯和算法開(kāi)發(fā);“自下而上”是指在Simulink中創(chuàng)建端口、運(yùn)行實(shí)體等SWC元素,再在ISOLAR-A中導(dǎo)入對(duì)應(yīng)arxml文件生成SWC。本文采用“自上而下”的開(kāi)發(fā)方式。 下面介紹如何使用AUTOSAR工具鏈方式實(shí)現(xiàn)座椅ECAS控制器的RTE部分。

5.1工程導(dǎo)入

打開(kāi)“ISOLAR-AB 4.0.2”環(huán)境,選擇“File -> Import -> Existing Projects into Workspace”,點(diǎn)擊“Next”。 按照?qǐng)D5-1所示的方法將所用工程導(dǎo)入。 b304158a-fafa-11ed-90ce-dac502259ad0.png 圖5-1: ISOLAR-AB工程導(dǎo)入方法 ?

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

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

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

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

5.2.1文件夾創(chuàng)建

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

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

在工程名上右鍵“New -> AUTOSAR File”,彈出圖5-3所示的對(duì)話框,這里新建一個(gè)名為“Controller_SWC.arxml”的描述文件,并同時(shí)創(chuàng)建一個(gè)名為“Controller_SWC”的AR Package。 b3092480-fafa-11ed-90ce-dac502259ad0.png 圖5-2: arxml描述文件創(chuàng)建啟動(dòng) b3130770-fafa-11ed-90ce-dac502259ad0.png 圖5-3:?控制軟件組件arxml描述文件創(chuàng)建界面 ?

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

按照?qǐng)D5-4和圖5-5所示的方法創(chuàng)建控制軟件組件。 b31aeada-fafa-11ed-90ce-dac502259ad0.png 圖5-4:?軟件組件創(chuàng)建啟動(dòng) b324a12e-fafa-11ed-90ce-dac502259ad0.png 圖5-5:?控制軟件組件創(chuàng)建操作示意圖 ?

5.2.4文件移動(dòng)

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

5.3接口創(chuàng)建

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

序號(hào) 接口 接口所包含的數(shù)據(jù)元素
接口名稱 接口類型 數(shù)據(jù)元素名稱 數(shù)據(jù)元素?cái)?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)建

按照?qǐng)D5-6和5-7所示創(chuàng)建接口。 b32ac068-fafa-11ed-90ce-dac502259ad0.png 圖5-6: S/R接口創(chuàng)建啟動(dòng) b3318ba0-fafa-11ed-90ce-dac502259ad0.png 圖5-7:?接口創(chuàng)建過(guò)程 ?

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

按照?qǐng)D5-8和5-9所示添加接口的數(shù)據(jù)元素。 b338a764-fafa-11ed-90ce-dac502259ad0.png 圖5-8:?添加接口數(shù)據(jù)元素 b341420c-fafa-11ed-90ce-dac502259ad0.png 圖5-9:?選擇接口數(shù)據(jù)元素的數(shù)據(jù)類型 ?

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

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

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

按照?qǐng)D5-10所示依次創(chuàng)建Controller_SWC、AlgorithmInput_SWC和AlgorithmActuator_SWC的內(nèi)部行為。 b34b916c-fafa-11ed-90ce-dac502259ad0.png 圖5-10:?軟件組件內(nèi)部行為創(chuàng)建 ?

5.4.2添加軟件組件端口

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

序號(hào) 端口 映射接口 說(shuō)明
類型 名稱 類型 映射接口名
1 RPort C_RP_Mw_objectLevel S/R hld_Mw_objectLevel 座椅目標(biāo)高度
2 RPort C_RP_Mw_currentLevel S/R hld_Mw_currentLevel 座椅當(dāng)前高度
3 RPort C_RP_Mb_level_quality S/R hld_Mb_level_quality 質(zhì)量信號(hào)
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 負(fù)向精度值
6 RPort C_RP_Mbl_enable S/R hld_Mbl_enable 算法控制使能標(biāo)志
7 PPort C_PP_Mb_Control_status S/R hld_Mb_Control_status 進(jìn)氣閥和排氣閥狀態(tài)
8 PPort C_PP_Mbl_is_Control_Over S/R hld_Mbl_is_Control_Over 控制算法調(diào)節(jié)完畢標(biāo)志

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

序號(hào) 端口 映射接口 說(shuō)明
類型 名稱 類型 映射接口名
1 PPort I_PP_Mw_objectLevel S/R hld_Mw_objectLevel 座椅目標(biāo)高度
2 PPort I_PP_Mw_currentLevel S/R hld_Mw_currentLevel 座椅當(dāng)前高度
3 PPort I_PP_Mb_level_quality S/R hld_Mb_level_quality 質(zhì)量信號(hào)
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 負(fù)向精度值
6 PPort I_PP_Mbl_enable S/R hld_Mbl_enable 算法控制使能標(biāo)志

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

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

圖5-11為添加軟件組件端口的方法。 b354796c-fafa-11ed-90ce-dac502259ad0.png 圖5-11:?添加軟件組件端口 ?

5.4.3添加運(yùn)行實(shí)體

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

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

表5-7:算法輸入軟件組件運(yùn)行實(shí)體

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

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

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

圖5-12為添加運(yùn)行實(shí)體的方法。 b35f8f00-fafa-11ed-90ce-dac502259ad0.png 圖5-12:?添加軟件組件運(yùn)行實(shí)體 ?

5.4.4添加運(yùn)行實(shí)體與所屬軟件組件的端口訪問(wèn)

本步的目的是添加與SWC中每個(gè)運(yùn)行實(shí)體相關(guān)的端口,可以簡(jiǎn)單的理解為添加某個(gè)函數(shù)(即運(yùn)行實(shí)體)需要用到的變量(即端口)。這里將控制軟件組件、算法輸入軟件組件和算法執(zhí)行軟件組件中的全部端口分別添加到Controller_step、AlgorithmInput和AlgorithmOutput運(yùn)行實(shí)體中。 圖5-13為添加運(yùn)行實(shí)體與所屬軟件組件端口訪問(wèn)的方法。 b36a1812-fafa-11ed-90ce-dac502259ad0.png 圖5-13:?添加運(yùn)行實(shí)體與所屬軟件組件的端口訪問(wèn) ?

5.4.5添加運(yùn)行實(shí)體的RTE事件

將Controller_step、AlgorithmInput和AlgorithmOutput運(yùn)行實(shí)體均配置為“周期性事件”,周期0.02s。 b371ce4a-fafa-11ed-90ce-dac502259ad0.png 圖5-14:?添加運(yùn)行實(shí)體的RTE事件 ?

5.5軟件組件添加

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

5.5.1將軟件組件加入部件

如果把軟件組件比作程序的“積木”,“部件”就相當(dāng)于“積木箱”,圖5-15和圖5-16為將SWC加入部件的步驟。 b37aacfe-fafa-11ed-90ce-dac502259ad0.png 圖5-15:?軟件組件加入部件操作啟動(dòng)? b3848990-fafa-11ed-90ce-dac502259ad0.png 圖5-16:?軟件組件加入部件操作 ?

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

將前面創(chuàng)建的3個(gè)SWC映射到座椅ECAS控制器軟件中,如圖5-17所示。 b38eb410-fafa-11ed-90ce-dac502259ad0.png 圖5-17:?軟件組件向ECU映射 ?

5.6信號(hào)連接

由于座椅ECAS控制器僅涉及到3個(gè)SWC間信號(hào)的傳遞,故只需要連接“內(nèi)部信號(hào)”即可,如圖5-18和圖5-19所示。 b395a482-fafa-11ed-90ce-dac502259ad0.png 圖5-18:?內(nèi)部信號(hào)連接啟動(dòng) b39ee3da-fafa-11ed-90ce-dac502259ad0.png 圖5-19:?座椅ECAS系統(tǒng)連接的內(nèi)部信號(hào) ?

5.7運(yùn)行實(shí)體調(diào)度

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

5.8代碼生成

接下來(lái)就是生成代碼了,分為軟件組件抽取、RTE代碼生成和SWC代碼生成3個(gè)步驟。

5.8.1軟件組件抽取

“抽取”的含義就是將屬于座椅ECAS控制器軟件的3個(gè)SWC拿過(guò)來(lái)用,如圖5-20所示(上節(jié)的運(yùn)行實(shí)體調(diào)度操作應(yīng)在抽取之后完成)。 b3aa7a7e-fafa-11ed-90ce-dac502259ad0.png 圖5-20:?軟件組件抽取操作 ?

5.8.2 RTE代碼生成

如圖5-21所示。

b3b32ee4-fafa-11ed-90ce-dac502259ad0.png 圖5-21: RTE代碼生成操作 ?

5.8.3 SWC代碼生成

座椅ECAS控制器軟件僅需按照?qǐng)D5-22和圖5-23所示生成算法輸入軟件組件和算法執(zhí)行軟件組件的代碼,控制軟件組件在simulink環(huán)境下建模完成,只需提交Controller_SWC.arxml給應(yīng)用層就可以了。 b3bb683e-fafa-11ed-90ce-dac502259ad0.png 圖5-22: SWC代碼生成啟動(dòng) ? b3c4d50e-fafa-11ed-90ce-dac502259ad0.png 圖5-23: SWC代碼生成操作 ?

5.9代碼添加

最后我們看看用AUTOSAR工具鏈自動(dòng)生成的代碼是什么樣子的,圖5-24和圖5-25分別為算法輸入軟件組件和算法執(zhí)行軟件組件的代碼截圖。 b3cc6b2a-fafa-11ed-90ce-dac502259ad0.png 圖5-24:?算法輸入軟件組件代碼截圖 b3d4156e-fafa-11ed-90ce-dac502259ad0.png 圖5-25:?算法執(zhí)行軟件組件代碼截圖 ?

5.10事項(xiàng)說(shuō)明

下面針對(duì)一些未明確事項(xiàng)進(jìn)行說(shuō)明。

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

座椅ECAS控制器軟件沒(méi)有涉及到系統(tǒng)信號(hào),但對(duì)于大部分車載ECU來(lái)說(shuō),與車載CAN網(wǎng)絡(luò)的交互(從CAN網(wǎng)絡(luò)接收數(shù)據(jù)和向CAN網(wǎng)絡(luò)發(fā)送數(shù)據(jù))是必不可少的,此時(shí)可參照?qǐng)D5-26的方法進(jìn)行系統(tǒng)信號(hào)連接。

b3dd913e-fafa-11ed-90ce-dac502259ad0.png 圖5-26:?系統(tǒng)信號(hào)連接啟動(dòng) ?

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

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

6結(jié)論

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

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 軟件開(kāi)發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    621

    瀏覽量

    27384
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    363

    瀏覽量

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

    關(guān)注

    14

    文章

    890

    瀏覽量

    54600

原文標(biāo)題:從手寫代碼到AUTOSAR工具鏈_RTE入門篇

文章出處:【微信號(hào):eng2mot,微信公眾號(hào):汽車ECU開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    微帶的基本概念

    微帶的基本概念 如果說(shuō)帶線可以看成是由同軸線演變而成的,那么,微帶則可以看成是雙導(dǎo)線演化而成的。 [/hide]  
    發(fā)表于 11-02 16:11

    Proteus涉及的基本概念

    Proteus涉及的基本概念
    發(fā)表于 08-01 20:58

    電子元件基本概念和原理

    電子元件基本概念和原理
    發(fā)表于 08-05 21:25

    Fpga Cpld的基本概念

    Fpga Cpld的基本概念
    發(fā)表于 08-20 17:14

    C語(yǔ)言基本概念

    C語(yǔ)言基本概念
    發(fā)表于 08-01 02:00

    數(shù)據(jù)結(jié)構(gòu)的基本概念是什么

    數(shù)據(jù)結(jié)構(gòu)之基本概念
    發(fā)表于 05-27 08:29

    阻抗控制相關(guān)的基本概念

    阻抗控制部分包括兩部分內(nèi)容:基本概念及阻抗匹配。本篇主要介紹阻抗控制相關(guān)的一些基本概念。
    發(fā)表于 02-25 08:11

    智能天線的基本概念

    1智能天線的基本概念 智能天線綜合了自適應(yīng)天線和陣列天線的優(yōu)點(diǎn),以自適應(yīng)信號(hào)處理算法為基礎(chǔ),并引入了人工智能的處理方法。智能天線不再是一個(gè)簡(jiǎn)單的單元,它已成為一個(gè)具有智能的系統(tǒng)。其具體定義為:智能
    發(fā)表于 08-05 08:30

    CODESYS的基本概念有哪些

    CODESYS是什么?CODESYS的基本概念有哪些?CODESYS有哪些功能?
    發(fā)表于 09-18 06:52

    微波基本概念

    1. 微波傳輸?shù)?b class='flag-5'>基本概念,反射、傳輸和熱耗分別是受哪些條件影響;2. 電特性指標(biāo) 駐波、插損、增益、隔離、耦合、噪聲等分別是什么含義?;締挝籨B,dBm,dBc有什么區(qū)別。
    發(fā)表于 06-23 21:51

    電波的基本概念

    電波的基本概念電波傳播的幾個(gè)基本概念 目前GSM和CDMA移動(dòng)通信使用的頻段為: GSM:890 --- 960 MHz, 1710 --- 1880 MHz CDMA: 806 --- 896 MHz 806 --- 960 MHz 頻率范圍屬超短波范圍
    發(fā)表于 12-05 15:32 ?12次下載
    電波的<b class='flag-5'>基本概念</b>

    照明常識(shí)基本概念

    照明常識(shí)基本概念 一、照明術(shù)語(yǔ)
    發(fā)表于 07-24 23:43 ?1571次閱讀

    無(wú)線定位基本概念與原理

    無(wú)線定位基本概念簡(jiǎn)介,以及其原理分析
    發(fā)表于 11-11 18:01 ?147次下載

    通信原理的基本概念講解

    通信原理的基本概念講解。
    發(fā)表于 05-27 14:48 ?17次下載

    基本概念.zip

    基本概念
    發(fā)表于 12-30 09:21 ?2次下載