日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機(jī)站
  • 小程序

    汽車測(cè)試網(wǎng)

  • 公眾號(hào)
    • 汽車測(cè)試網(wǎng)

    • 在線課堂

    • 電車測(cè)試

CP AUTOSAR中Runnable的開發(fā)配置

2025-02-16 09:28:56·  來源:汽車電子與軟件  
 

#01、Runnable說明  

在AUTOSAR CP平臺(tái)中,Runnable是一個(gè)關(guān)鍵概念,它代表了可以被調(diào)度的最小執(zhí)行單位??梢詫unnable理解為一個(gè)獨(dú)立的任務(wù)或函數(shù),具有特定的輸入和輸出,用于執(zhí)行具體的操作或算法。

在AUTOSAR CP的軟件架構(gòu)中,Runnable被分配給Task(任務(wù))中執(zhí)行。Task是AUTOSAR中的基本執(zhí)行單元,負(fù)責(zé)執(zhí)行一系列的操作或功能,而這些操作或功能則通過Runnable來實(shí)現(xiàn)。

通過將功能劃分為多個(gè)Runnable,AUTOSAR CP平臺(tái)實(shí)現(xiàn)了軟件的模塊化設(shè)計(jì)。這種設(shè)計(jì)方式提高了軟件的可重用性、可維護(hù)性和可擴(kuò)展性。


汽車軟件中的Runnable配置,一般是由汽車軟件的開發(fā)團(tuán)隊(duì)或相關(guān)技術(shù)人員來執(zhí)行的。

具體來說,Runnable的配置通常涉及以下幾個(gè)方面:

1. 定義Runnable:在AutoSAR開發(fā)中,首先需要定義Runnable,這通常包括為其命名、編寫實(shí)現(xiàn)具體邏輯的函數(shù)代碼等。

2. 掛載到Task上:Runnable必須掛載在Task(任務(wù))上才能被執(zhí)行。Task是AutoSAR中的基本執(zhí)行單元,負(fù)責(zé)執(zhí)行特定的功能。通過合理的Task任務(wù)分配和Runnable配置,可以確保系統(tǒng)的高效、穩(wěn)定、安全運(yùn)行。

3. 配置觸發(fā)條件:Runnable的執(zhí)行需要滿足一定的觸發(fā)條件,這些條件可以是事件觸發(fā)、時(shí)間觸發(fā)或數(shù)據(jù)觸發(fā)等。開發(fā)人員需要根據(jù)具體需求來配置這些觸發(fā)條件,以確保Runnable在適當(dāng)?shù)臅r(shí)候被執(zhí)行。  

4. 與其他Runnable的交互:在系統(tǒng)中,不同的Runnable之間可能存在數(shù)據(jù)交互和共享資源的情況。因此,在配置Runnable時(shí),還需要考慮它們之間的通信與同步機(jī)制,以確保系統(tǒng)的整體性能和穩(wěn)定性。

5. 測(cè)試和驗(yàn)證:配置完成后,還需要對(duì)Runnable進(jìn)行測(cè)試和驗(yàn)證,以確保它們能夠按照預(yù)期工作,并滿足系統(tǒng)的性能和安全要求。

所以汽車軟件中的Runnable配置是一個(gè)復(fù)雜而重要的過程,需要由專業(yè)的汽車軟件開發(fā)團(tuán)隊(duì)或技術(shù)人員來執(zhí)行。在實(shí)際開發(fā)過程中,軟件架構(gòu)工程師可以選擇在工程文件中是否配置Runnable,這也間接的決定了軟件單元開發(fā)工程師的工作范圍差異。

本文針對(duì)這種差異做一個(gè)演示說明。

#02、工具準(zhǔn)備 

MATLAB、SIMUlink及工具包AUTOSAR Blockset、Embedded Coder;用以導(dǎo)入軟件架構(gòu)模型文件、Runnable配置及C代碼生成等等;

MATLAB 推薦使用R2022b及之后的版本,MATLAB支持了AUTOSAR Blockset的更新和使用。支持了AP平臺(tái),可以使用ara::com方法開發(fā)自適應(yīng)應(yīng)用軟件并部署在嵌入式Linux上,以及在架構(gòu)模型中創(chuàng)建數(shù)據(jù)類型和接口。

另外需要準(zhǔn)備兩份軟件架構(gòu)ARXML文件,內(nèi)部均有一個(gè)Composition,包含兩個(gè)SWC,區(qū)別就在于一個(gè)直接配置了Runnable,另一個(gè)并未配置Runnable;   

配置了Runnable的ARXML會(huì)有如下類似字段;

圖片

         

#03含有Runnable的ARXML導(dǎo)入


兩行指令就可以導(dǎo)入,并創(chuàng)建SWC模型:

ar = arxml.importer('Seat_Heat_Composition_Runnable.arxml')

createCompositionAsModel(ar,'/Components/Seat_Heat_Composition')

圖片

創(chuàng)建出來Composition、各個(gè)SWC、數(shù)據(jù)類型定義的Simulink模型文件; 

 

圖片

進(jìn)入Autosar Blockset工具箱,工具箱將自動(dòng)解析并展示該SWC的詳細(xì)內(nèi)容。在Code Mapping Component Interface和AUTOSAR字典部分,用戶不僅能夠查看到SWC內(nèi)部定義的所有Runnable實(shí)體的列表,還能進(jìn)一步深入了解每個(gè)Runnable的具體屬性。比如:

Runnable名稱:每個(gè)Runnable都有一個(gè)唯一的標(biāo)識(shí)符或名稱,用于在SWC內(nèi)部及與其他組件交互時(shí)引用。

執(zhí)行周期:指定了Runnable被調(diào)度的頻率,即它應(yīng)當(dāng)多久執(zhí)行一次。這可以是基于時(shí)間的(如每10毫秒執(zhí)行一次)或基于事件的(當(dāng)滿足特定條件時(shí)觸發(fā))。

參數(shù)列表:列出了Runnable執(zhí)行時(shí)可能需要接收的輸入?yún)?shù)以及可能產(chǎn)生的輸出參數(shù)。

圖片

   

圖片

后面繼續(xù)進(jìn)行模型搭建、工程配置與代碼生成等工作即可。

#04不含Runnable的ARXML導(dǎo)入  

使用與上一節(jié)相同的指令,導(dǎo)入了不含Runnable信息的ARXML文件。

圖片

但是從生成的Simulink模型來看,同樣已經(jīng)有了Runnable信息;

雙擊進(jìn)入一個(gè)SWC,點(diǎn)擊菜單欄中的APP - Autosar Component Design(Autosar Blockset工具箱),再進(jìn)入AUTOSAR字典的Code Mapping界面可以發(fā)現(xiàn),ARXML導(dǎo)入時(shí),對(duì)于每個(gè)SWC,根據(jù)其名稱自動(dòng)生成了兩個(gè)Runnable,一個(gè)初始化Runnable、一個(gè)事件型Runnable,其周期與模型默認(rèn)求解器的周期一致; 

 圖片

但是SWC內(nèi)還未有非常明確function或system模塊與runnable對(duì)應(yīng);

圖片

可以創(chuàng)建Subsystem模塊,并在其內(nèi)構(gòu)建模型邏輯,也可以直接搭建模型,不過如果同一SWC內(nèi)含有多個(gè)Runnable,則顯得混亂,因此建議創(chuàng)建Subsystem模塊,再構(gòu)建模型邏輯;  

 圖片

值得注意的是,如果不做其他配置修改,那么所有的模塊參數(shù)都將隸屬于同一個(gè)Runnable函數(shù);

圖片

#05新增Runnable

Simulink類型函數(shù)模塊創(chuàng)建 

添加Function-Call Subsystem與Function-Call Generator模塊,雙擊修改Function-Call Generator參數(shù),修改采樣時(shí)間,為系統(tǒng)求解器默認(rèn)時(shí)間的整數(shù)倍;當(dāng)然這也只是增加了一個(gè)Simulink模塊,并未對(duì)架構(gòu)產(chǎn)生任何影響;   

圖片

另外,如果使用的input、output的求解速率不一樣,需要添加Rate Transition模塊進(jìn)行速率轉(zhuǎn)換,如果數(shù)據(jù)類型不一致,需要添加Data Type Conversion進(jìn)行數(shù)據(jù)類型的準(zhǔn)換,比如uint8和枚舉類型之間的轉(zhuǎn)換;Rate Transition需要勾選取消掉“確保確定性數(shù)據(jù)傳輸”;

圖片

點(diǎn)擊左下角的刷新(代碼映射更新),可以看到更新出來將要與Runnable mapping的Simulink函數(shù)模塊;   

圖片

Runnable創(chuàng)建與Mapping 

新增Runnable:打開AUTOSAR字典,找到對(duì)應(yīng)的SWC tab欄中Runnables選項(xiàng),新增Runnable,修改Name與Symbol名稱,添加Event事件,選擇類型并修改名稱,點(diǎn)擊“應(yīng)用”,關(guān)閉選項(xiàng)卡即可;

圖片

在對(duì)應(yīng)的Simulink 函數(shù)上map 剛才創(chuàng)建的AUTOSAR Runnable,這才算是完成了一個(gè)Runnable獨(dú)立模塊的創(chuàng)建;   

圖片

IRV添加與Mapping  

需要注意的是,如果SWC內(nèi)模型的搭建,涉及多個(gè)Runnable的交互,則需要使用Rate Transition模塊進(jìn)行速率轉(zhuǎn)換,并且需要配置IRV;

在AUTOSAR CP中,IRV(Inter-Runnable Variable)是一個(gè)重要的概念,它指的是運(yùn)行實(shí)體(Runnable)之間的變量,用于實(shí)現(xiàn)軟件組件(SWC)內(nèi)部不同運(yùn)行實(shí)體(Runnable)之間的數(shù)據(jù)通信。在AUTOSAR的架構(gòu)中,軟件被劃分為多個(gè)層次,包括應(yīng)用層、運(yùn)行時(shí)環(huán)境層、基礎(chǔ)軟件層和硬件抽象層。在運(yùn)行時(shí)環(huán)境層中,Runnable是執(zhí)行單元,它們負(fù)責(zé)執(zhí)行具體的任務(wù)。IRV作為一種全局變量,允許這些Runnable之間共享和修改數(shù)據(jù),從而簡(jiǎn)化了任務(wù)間的數(shù)據(jù)通信過程。

IRV的實(shí)現(xiàn)通常依賴于一些同步機(jī)制,如互斥鎖和條件變量,以確保對(duì)共享變量的訪問是安全的。這些機(jī)制可以防止多個(gè)任務(wù)同時(shí)修改同一個(gè)變量,從而避免數(shù)據(jù)競(jìng)爭(zhēng)和錯(cuò)誤的結(jié)果。

打開AUTOSAR字典,找到對(duì)應(yīng)的SWC tab欄中IRV選項(xiàng),新增IRV,修改Name與讀寫權(quán)限,創(chuàng)建完成后關(guān)閉選項(xiàng)卡即可;回到Code Mapping選項(xiàng)卡中,找到“Data Transfers”,將simulink中需要map的source模塊map到剛才創(chuàng)建的IRV數(shù)據(jù)上;   

圖片

生成代碼 

返回,點(diǎn)擊代碼生成,對(duì)應(yīng)生成的函數(shù)名是AUTOSAR Runnable Symbol名稱,同時(shí)也可以查看到IRV部分對(duì)應(yīng)生成的代碼。

圖片

         

#06小  結(jié)

使用MATLAB做CP軟件單元開發(fā)時(shí),當(dāng)軟件架構(gòu)工程師提供ARXML文件作為輸入時(shí),這個(gè)文件可能已經(jīng)預(yù)定義了部分或全部的Runnables,這些Runnables是AUTOSAR架構(gòu)中用于封裝軟件功能的基本單元。然而,無論ARXML文件中是否直接包含Runnables的定義,通過使用MATLAB中的AUTOSAR Blockset工具箱進(jìn)行導(dǎo)入,都會(huì)觸發(fā)一個(gè)智能的解析與轉(zhuǎn)換過程。

AUTOSAR Blockset工具箱不僅能夠識(shí)別并導(dǎo)入ARXML文件中已存在的Runnables,還能夠根據(jù)文件中描述的系統(tǒng)架構(gòu)和接口信息,自動(dòng)推斷并生成缺失的Runnables。這一過程確保了軟件單元開發(fā)工程師在MATLAB環(huán)境中擁有一個(gè)完整且一致的AUTOSAR模型,為后續(xù)的開發(fā)工作奠定了堅(jiān)實(shí)的基礎(chǔ)。

在導(dǎo)入ARXML并生成Runnables之后,軟件單元開發(fā)工程師便可以根據(jù)實(shí)際的模型算法需求,對(duì)生成的Runnables進(jìn)行精細(xì)化的調(diào)整。這包括但不限于:

1. 增減Runnables:根據(jù)軟件功能的具體實(shí)現(xiàn)需要,工程師可以自由地添加新的Runnables來封裝新的算法或功能,同時(shí),對(duì)于不再需要的Runnables,也可以進(jìn)行刪除操作,以保持模型的簡(jiǎn)潔和高效。

2. 修改配置:對(duì)于每一個(gè)Runnables,工程師都可以深入其配置層面,調(diào)整其屬性,如執(zhí)行頻率、優(yōu)先級(jí)、任務(wù)激活條件等,以確保它們能夠按照預(yù)期的方式運(yùn)行,并滿足系統(tǒng)的實(shí)時(shí)性和性能要求。

         

分享到:
 
反對(duì) 0 舉報(bào) 0 收藏 0 評(píng)論 0
滬ICP備11026917號(hào)-25