衡阳派盒市场营销有限公司

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

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

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

一文入門AUTOSAR OS

jf_EksNQtU6 ? 來(lái)源:ZOTECK ? 2023-06-29 10:34 ? 次閱讀

Autosar Os overview

Autosar Os 在Autosar 框架中上至RTE 下至驅(qū)動(dòng),中間可以和BSW 基礎(chǔ)模塊進(jìn)行交互。是整個(gè)autosar 框架下最重要的組成部分。

48fb10ce-159b-11ee-962d-dac502259ad0.png

其中Syser Services 為一些系統(tǒng)服務(wù),不屬于操作系統(tǒng)。下文僅對(duì) Os 進(jìn)行描述

OS 與 BSW 各模塊關(guān)系

雖然說(shuō)OS 是整個(gè)框架的靈魂,但是也有極少數(shù)的BSW 模塊不與OS 直接交互。換句話說(shuō),其他BSW 模塊在改動(dòng)的時(shí)候,是需要考慮一下OS 對(duì)其的影響,和它對(duì)OS 的影響。

4945152a-159b-11ee-962d-dac502259ad0.png

這里可以看到除了cdd 都是無(wú)限制的與os交互。只有cdd 是有限制的和os 進(jìn)行交互。

OS 的類別與其功能

AUTOSAR OS 和 OSEK OS 都是為汽車領(lǐng)域而開(kāi)發(fā)的實(shí)時(shí)操作系統(tǒng)。雖然它們都致力于提供實(shí)時(shí)性能、可靠性和穩(wěn)定性,但其設(shè)計(jì)理念和實(shí)現(xiàn)方式有所不同。AUTOSAR OS 旨在提供更高級(jí)的軟件體系結(jié)構(gòu)和更多的配置選項(xiàng),以支持更復(fù)雜的汽車軟件系統(tǒng);而 OSEK OS 更加簡(jiǎn)單和輕量級(jí),適用于較小規(guī)模的汽車電子系統(tǒng)。兩者可以共存,也可以相互補(bǔ)充,以滿足不同汽車應(yīng)用的需求。

49739f76-159b-11ee-962d-dac502259ad0.png

TASK

OS 的task 分為兩種。

-- 基本任務(wù)

-- 擴(kuò)展任務(wù)

其主要的區(qū)別就是有無(wú)waiting狀態(tài)。這里先表示一下基本狀態(tài),下面對(duì)其使用棧詳細(xì)描述可以按需在實(shí)際架構(gòu)中設(shè)計(jì),使用。

49bb6b4e-159b-11ee-962d-dac502259ad0.png

TASK - 搶占機(jī)制

01非搶占

這里可以看出,當(dāng)任務(wù)被設(shè)定為非搶占的時(shí)候,當(dāng)任務(wù)沒(méi)有完成時(shí),即使高優(yōu)先級(jí)的任務(wù)到來(lái),也無(wú)法將其搶占。

一般情況下我們可以把初始化的任務(wù),以及一些模式切換時(shí)候,必須進(jìn)行的一些操作,這類任務(wù)設(shè)計(jì)成非搶占的任務(wù)。

49e80834-159b-11ee-962d-dac502259ad0.png

02搶占

為了更好的利用OS 來(lái)壓榨硬件資源,大部分的任務(wù)都會(huì)被設(shè)計(jì)成搶占式任務(wù)。一般的原則,重要的任務(wù)優(yōu)先級(jí)高,需要運(yùn)行時(shí)間較短的任務(wù)優(yōu)先級(jí)高。

4a0de874-159b-11ee-962d-dac502259ad0.png

03合作

這里就很靈活,但是需要在代碼過(guò)程中設(shè)計(jì)好什么時(shí)候讓出CPU。但是處理得好的話,會(huì)拖慢CPU, 無(wú)法最大限度的壓榨硬件,高優(yōu)先級(jí)的任務(wù)被耽誤。

4a29eb96-159b-11ee-962d-dac502259ad0.png

#include 
TASK(Cooperative)
{Function1();
  Schedule();/* Allow preemption */
  Function2();
  Schedule();/* Allow preemption */
  Function3();
  Schedule();/* Allow preemption */
  Function4();
  TerminateTask();
}

任務(wù)在配置過(guò)程中最重要的下面幾個(gè)參數(shù),需要注意。這里尤其要注意使用棧的大小。因?yàn)檫@個(gè)真的有可能會(huì)讓軟件運(yùn)行奔潰。其他的參數(shù)最多是運(yùn)行不正常。

4a41054c-159b-11ee-962d-dac502259ad0.png

TASK - 棧的使用

Autosar os的棧使用是單一棧策略。假設(shè)定義了32k的棧。那么所有的task都使用這一個(gè)大的棧空間。那就是說(shuō),當(dāng)有任務(wù)搶占的時(shí)候,棧是疊加使用的。下面是

搶占時(shí)候使用的棧情況

4a8d11bc-159b-11ee-962d-dac502259ad0.png

這里可以看出來(lái),當(dāng)有高優(yōu)先級(jí)的任務(wù)運(yùn)行的時(shí)候,棧的使用空間是一直增大的。這時(shí)候就需要注意上面定義的32k 夠不夠用了。因?yàn)樗麄兯械膖ask公用一個(gè)棧。

下面是非搶占時(shí)候使用棧的情況。

4a95f6d8-159b-11ee-962d-dac502259ad0.png

這里就相對(duì)簡(jiǎn)單多了,棧的使用就是和當(dāng)前運(yùn)行的task所需要的棧的情況是一樣的。

前面說(shuō)到擴(kuò)展任務(wù)的情況呢。

4ac4ca44-159b-11ee-962d-dac502259ad0.png

這里操作系統(tǒng)會(huì)根據(jù)靜態(tài)配置的任務(wù)使用的棧,進(jìn)行預(yù)留。換句話說(shuō)就是配置完擴(kuò)展任務(wù)后,os 根據(jù)優(yōu)先級(jí)比擴(kuò)展任務(wù)優(yōu)先級(jí)高的任務(wù)使用棧的最大總和,預(yù)留一下。把擴(kuò)展任務(wù)的棧至于棧底 + 最大使用量。當(dāng)擴(kuò)展任務(wù)到running狀態(tài)后,直接就在規(guī)定的棧地方運(yùn)行。所以這里很考驗(yàn)前面的所有task的棧,如果是使用超了,這時(shí)候程序必然就崩了。

中斷

Interrupt

Category 1

?Os 無(wú)法給一類中斷提供服務(wù)

?一類中斷不與Os交互

?一類中斷優(yōu)先級(jí)高于Os 以及所有的二類中斷

?可以通過(guò)Os 接口對(duì)一類中斷進(jìn)行enable/disable

Category 2

?二類中斷受到Os管控

?硬件中斷向量指向Os內(nèi)部

?有限制使用os 接口不允許 TerminateTask, WaitEvent, ClearEvent, Schedule, ChainTask

下圖可以看出來(lái)一類中斷時(shí)獨(dú)立于os的,高于os的。根據(jù)不同的芯片是不同的,有的芯片的中斷優(yōu)先級(jí)是組類別,有的是獨(dú)立的。也就是說(shuō)中斷是否可以嵌套。

4b368152-159b-11ee-962d-dac502259ad0.png

下面是當(dāng)二類中斷發(fā)生,這時(shí)候我們的os將會(huì)怎么處理呢。

當(dāng)硬件終端觸發(fā),并且ICU模塊處理完成之后,到達(dá)了OS 。這時(shí)候OS 根據(jù)靜態(tài)配置進(jìn)行操作,對(duì)上下文進(jìn)行切換與保存現(xiàn)場(chǎng)。

4b4c88b2-159b-11ee-962d-dac502259ad0.png

在配置過(guò)程中很簡(jiǎn)單,但是對(duì)于實(shí)際的操作我們需要注意優(yōu)先級(jí),一般情況我們都會(huì)使用二類中斷。這樣會(huì)減少os的影響。減少系統(tǒng)的不可控性。

4b72ae48-159b-11ee-962d-dac502259ad0.png

如何有效率的使用中斷。

#include 
ISR(InefficientHandler) {
/* Long handler code. */
}


#include 
ISR(EfficientHandler) {
ActivateTask(Task1);
}
TASK(Task1) {
/* Long handler code. */
TerminateTask();
}


#include 
ISR(Interrupt1) {
/* Dismiss the interrupt where required */
/* Rest of the handler */
}

異步處理,不將中斷的回調(diào)一直處理完。而是激活一個(gè)task,進(jìn)行處理,當(dāng)然這也是要根據(jù)實(shí)際場(chǎng)景進(jìn)行設(shè)計(jì)。

resource

Resource 基礎(chǔ)介紹

?Standard resource 標(biāo)準(zhǔn)的二進(jìn)制狀態(tài)

?Linked resource 可以嵌套的二進(jìn)制狀態(tài)

?Internal resource 以任務(wù)為基礎(chǔ)的二進(jìn)制狀態(tài)

4bcf418a-159b-11ee-962d-dac502259ad0.png

Standard resource 標(biāo)準(zhǔn)的二進(jìn)制狀態(tài) 具體使用

#include 
TASK(Task1) {
...
GetResource(Resource1);
/* Critical section. */
ReleaseResource(Resource1);
...
TerminateTask();
}

代碼片段:可切換語(yǔ)言,無(wú)法單獨(dú)設(shè)置文字格式

可以看出這類是最簡(jiǎn)單的,一個(gè)get 一個(gè) release. 中間的 就是會(huì)被鎖住的資源。其他地方無(wú)法進(jìn)行訪問(wèn)。需要這個(gè)release之后才可以。

Linked resource 可以嵌套的二進(jìn)制狀態(tài)

#include 
GetResource(Resource1);
   GetResource(Resource2);
     GetResource(Resource3);
     ReleaseResource(Resource3);
   ReleaseResource(Resource2);
ReleaseResource(Resource1);
}

代碼片段:可切換語(yǔ)言,無(wú)法單獨(dú)設(shè)置文字格式

和上面很相似,不過(guò)必須是一個(gè)對(duì)應(yīng)一個(gè)。一個(gè)解開(kāi)一個(gè)。

舉個(gè)例子錯(cuò)誤使用

#include 
TASK(Write){
 /* Highest priority .*/
 WriteBuffer();
 GetResource(Guard);
 BufferNotEmpty = True;
 ReleaseResource(Guard);
 ChainTask(Read);
}
TASK(Read){
/* Lowest priority. */
 ReadBuffer();
 GetResource(Guard);
 if( BufferNotEmpty ) {
 ReleaseResource(Guard);
 ChainTask(Read);
 } else {
 ReleaseResource(Guard);
 TerminateTask();
 }
}

tips: 任務(wù)結(jié)束前,沒(méi)有release.

Schedule table

區(qū)別于rtos, 這里有調(diào)度表,屬于靜態(tài)配置的調(diào)度器。可以說(shuō)是一系列的event的組合。

下面也給了schedule table 和 event的對(duì)比。用起來(lái)相當(dāng)?shù)姆奖恪?/p>

4c0a5d1a-159b-11ee-962d-dac502259ad0.png

這里簡(jiǎn)單介紹兩個(gè)schedule table 的api

?Start absolute point

4c5778e8-159b-11ee-962d-dac502259ad0.png

?Start relative point

4caaa0a4-159b-11ee-962d-dac502259ad0.png

一般情況下我們系統(tǒng)里只需要一條schedule table即可。所以這些api 在外部用的也很少。這里只需要直到,如果當(dāng)架構(gòu)設(shè)計(jì)需要多條schedule table的時(shí)候,我們可以通過(guò)一系列條件,手動(dòng)的調(diào)度起來(lái)。讓這上面的point 內(nèi)部的task 以此運(yùn)行。

配置

4cb65c46-159b-11ee-962d-dac502259ad0.png

配置也相對(duì)比較簡(jiǎn)單。也基本不需要配置,因?yàn)樵谧笸釹WC 設(shè)計(jì),完成RTE 的配置之后。這個(gè)table的屬性就已經(jīng)被定義好了。只是通過(guò)OS 將其生成代碼。

stack monitor 棧監(jiān)控

最上面提到task的一個(gè)配置參數(shù),棧的使用。

4d2d8d7a-159b-11ee-962d-dac502259ad0.png4d4e5a14-159b-11ee-962d-dac502259ad0.png

這里面就是可以激活OS 對(duì)棧使用的監(jiān)控。os將會(huì)自動(dòng)monitor

下面截取一段代碼,解釋了一下os如何獲取棧的使用情況。在使用過(guò)程中,我們用戶可以利用這個(gè)api進(jìn)行一些自己的monitor.

4d59c8e0-159b-11ee-962d-dac502259ad0.png

當(dāng)然實(shí)現(xiàn)方式千千萬(wàn),我們還是要了解一下實(shí)際的原理。

4daa7038-159b-11ee-962d-dac502259ad0.png

下圖可以看出來(lái)。不同地方調(diào)用 GetStackUsage結(jié)果可能是不同的。

所以一般來(lái)說(shuō),我們可以選擇高優(yōu)先級(jí)的任務(wù)進(jìn)行執(zhí)行該api. 進(jìn)而獲取

time protection 時(shí)間保護(hù)

對(duì)于時(shí)間保護(hù)我們一般采類似于下面的時(shí)間約束。

4e0e2114-159b-11ee-962d-dac502259ad0.png

這是什么意思呢。

1ms的任務(wù) 如果在5ms內(nèi) 沒(méi)有被執(zhí)行完,則認(rèn)為有問(wèn)題。

3ms的任務(wù) 如果在10ms內(nèi)沒(méi)有被執(zhí)行完,則認(rèn)為有問(wèn)題。

5ms的任務(wù) 如果在15ms內(nèi)沒(méi)有被執(zhí)行完,則認(rèn)為有問(wèn)題。

下面有個(gè)例子。

4e1a51aa-159b-11ee-962d-dac502259ad0.png

看似是C 沒(méi)有執(zhí)行完。確實(shí)os 報(bào)錯(cuò) 應(yīng)該報(bào)的是C 任務(wù)沒(méi)有規(guī)定時(shí)間內(nèi)完成。

但是原因缺失上面的A 和 B。所以實(shí)際情況,還是需要根據(jù)調(diào)度關(guān)系進(jìn)行分析。問(wèn)題不一定處在報(bào)錯(cuò)的任務(wù)。

關(guān)于配置方面也很簡(jiǎn)單。

4e44f090-159b-11ee-962d-dac502259ad0.png

memory protection 內(nèi)存保護(hù)

內(nèi)存保護(hù)的機(jī)制通過(guò)os-application 的 trust 和 non-trust 進(jìn)行隔離開(kāi)。

對(duì)讀寫(xiě)的限制,對(duì)運(yùn)行的隔離。

4e893b1a-159b-11ee-962d-dac502259ad0.png

當(dāng)其中一個(gè)os-application 發(fā)生故障,可以獨(dú)立的關(guān)閉其中一個(gè)os-application ,其他的os-application 不受影響。

對(duì)外設(shè)的訪問(wèn),對(duì)內(nèi)存特殊區(qū)域的訪問(wèn)的約束。可以通過(guò)trust non-trust 來(lái)約束。

4e92ea48-159b-11ee-962d-dac502259ad0.png

這樣可以一定程度上減少 讓os崩潰的可能發(fā)生

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2733

    瀏覽量

    47747
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6892

    瀏覽量

    123742
  • OS
    OS
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    34807
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    363

    瀏覽量

    21778
  • BSW
    BSW
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    3527

原文標(biāo)題:Autosar Os 一文入門

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TC397如何同時(shí)運(yùn)行CP Autosar OS和FreeRTOS?

    TC397 如何同時(shí)運(yùn)行兩個(gè)不同的RTOS ,如FreeRTOS 和基于CP AutosarOS
    發(fā)表于 01-24 08:31

    TC387配置Autosar OS后主核跑飛了怎么解決?

    使用TC387芯片配置Autosar OS發(fā)現(xiàn)主核跑飛了,其他核正常運(yùn)行OS任務(wù)切換,PC指針指向_IF_CONST區(qū)域,D[4]寄存器為1,D[15]寄存器為4,根據(jù)這兩個(gè)寄存器用計(jì)算規(guī)則計(jì)算出的TCN和TIN好像有問(wèn)題,在T
    發(fā)表于 03-06 08:24

    AUTOSAR是什么

    AUTOSAR是什么AUTOSAR組織自己的介紹是AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide deve
    發(fā)表于 11-10 07:47

    CP AUTOSAR EcuM的相關(guān)資料下載

    前言本系列請(qǐng)點(diǎn)擊:《搞下CP AUTOSAR入門》所有系列請(qǐng)點(diǎn)擊:《汽車電子系列分享》在CP AUTOSAR架構(gòu)中定義了許多和模式管理相關(guān)的組件,其中主要包括EcuM、BswM、Co
    發(fā)表于 02-11 07:05

    介紹AUTOSAR支持的四種功能安全機(jī)制

    1、AUTOSAR的四種功能安全機(jī)制雖然AUTOSAR不是個(gè)完整的安全解決方案,但它提供了些安全機(jī)制用于支持安全關(guān)鍵系統(tǒng)的開(kāi)發(fā)。本文用于介紹AU
    發(fā)表于 06-10 17:33

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

    AUTOSAR中稱為Runnables。  Runnables不能由它們自己執(zhí)行;它們必須分配給 OS的可執(zhí)行實(shí)體。可以通過(guò)將Runnables的函數(shù)調(diào)用插入OS任務(wù)主體來(lái)執(zhí)行此類分配。  然后
    發(fā)表于 09-19 15:55

    可以在S32DS的S32K144-Q100板上運(yùn)行的AUTOSAR OS演示程序在哪里?

    可以在 S32DS的S32K144-Q100板上 運(yùn)行的AUTOSAR OS演示程序在哪里。
    發(fā)表于 03-27 07:22

    “E:\NXP\AUTOSAR\S32K_AUTOSAR_OS_4_0_98_RTM_1_0_0sample\standard\sc1”編譯時(shí)無(wú)法生成sample1_cfg.o怎么解決?

    你好:我用例子“E:\NXP\AUTOSAR\S32K_AUTOSAR_OS_4_0_98_RTM_1_0_0sample\standard\sc1”編譯時(shí),總是出現(xiàn)無(wú)法生成
    發(fā)表于 04-06 07:42

    LLCE driver是否可以在非autosar os中運(yùn)行?

    S32DS、RTD和LLCE CAN驅(qū)動(dòng)有對(duì)應(yīng)的工具版本嗎?我想知道,LLCE driver是否可以在非autosar os中運(yùn)行,是否有關(guān)于LLCE Driver +S32DS3.5的文檔可以學(xué)習(xí)。
    發(fā)表于 04-18 09:21

    AUTOSAR入門

    AUTOSAR是什么AUTOSAR組織自己的介紹是AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide deve
    發(fā)表于 11-05 18:20 ?20次下載
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>入門</b>

    下CP AUTOSAR 入門 | 04 CP AUTOSAR EcuM 詳解

    前言本系列請(qǐng)點(diǎn)擊:《搞下CP AUTOSAR入門》所有系列請(qǐng)點(diǎn)擊:《汽車電子系列分享》在CP AUTOSAR架構(gòu)中定義了許多和模式管理相關(guān)的組件,其中主要包括EcuM、BswM、Co
    發(fā)表于 12-07 18:21 ?30次下載
    搞<b class='flag-5'>一</b>下CP <b class='flag-5'>AUTOSAR</b> <b class='flag-5'>入門</b> | 04 CP <b class='flag-5'>AUTOSAR</b> EcuM 詳解

    RIOT-OS入門 Windows系統(tǒng)下在STM32上運(yùn)行RIOT OS

    RIOT-OS入門 Windows系統(tǒng)下在STM32上運(yùn)行RIOT OS
    發(fā)表于 12-07 18:51 ?1次下載
    RIOT-<b class='flag-5'>OS</b><b class='flag-5'>入門</b> Windows系統(tǒng)下在STM32上運(yùn)行RIOT <b class='flag-5'>OS</b>

    讀懂DDS和AUTOSAR Adaptive的集成

    對(duì)于使用AUTOSAR制造車輛的公司來(lái)說(shuō),已經(jīng)出現(xiàn)了兩個(gè)不同的平臺(tái) - AUTOSAR Classic和AUTOSAR Adaptive 這兩個(gè)AUTOSAR平臺(tái)之間互操作性的基礎(chǔ)標(biāo)準(zhǔn)
    的頭像 發(fā)表于 11-02 10:05 ?2672次閱讀

    如何在AUTOSAR OS系統(tǒng)運(yùn)行時(shí)使用事件Event呢?

    AUTOSAR OS系統(tǒng)中,事件用于向任務(wù)發(fā)送信號(hào)信息。本節(jié)解釋事件是什么,如何配置它們以及如何在運(yùn)行時(shí)使用它們。
    發(fā)表于 05-22 10:04 ?2806次閱讀
    如何在<b class='flag-5'>AUTOSAR</b> <b class='flag-5'>OS</b>系統(tǒng)運(yùn)行時(shí)使用事件Event呢?

    AUTOSAR OS操作系統(tǒng)功能特性

    AUTOSAR OS AUTOSAR OS(AUTomotive Open System ARchitecture Operating System)是
    的頭像 發(fā)表于 10-27 16:55 ?2224次閱讀
    百家乐官网单跳双跳| 大发888 大发888娱乐城| 百家乐官网英皇娱乐| 博九娱乐网| 玩百家乐的玩法技巧和规则 | 太子百家乐官网的玩法技巧和规则| 岑溪市| 全讯网新2代理| 赌百家乐的心得体会| 百家乐官网和的几率| 破解百家乐| 喜洋洋水果机遥控器| 百家乐稳赢投注| 金海岸百家乐官网的玩法技巧和规则| 百家乐官网哪家有优惠| 做生意摆放老虎好不好| 百家乐官网电话投注怎么玩| 网上真钱麻将| 大发888娱乐免费试玩| 百家乐游戏厅| 百家乐的关键技巧| 真人百家乐官网蓝盾| 奔驰百家乐官网可信吗| 尊龙国际网址| 大发888网页版出纳| 里尼的百家乐策略| 香港百家乐官网娱乐场开户注册 | 百家乐怎么打啊| 百家乐官网娱乐场真人娱乐场| 百家乐官网如何投注法| 顶旺国际| 大发888怎么开户| 网上百家乐解密| 百家乐怎么押钱| 百家乐官网最常见的路子| 天天乐娱乐城官网| 威尼斯人娱乐网代理| 百家乐连锁| 高档百家乐桌| 百家乐视频台球下载| 百家乐官网技巧开户|