專注高密做網(wǎng)站哪家強(qiáng)滄州seo推廣
目錄
前言
正文
7.報(bào)警Alarms
7.1配置Alarms
7.1.1激活一個(gè)任務(wù)
7.1.2?設(shè)置一個(gè)事件
7.1.3報(bào)警回調(diào)Alarm Callback
7.1.4?增加計(jì)數(shù)器值
7.2設(shè)置Alarms
7.2.1?絕對(duì)Alarms
7.2.2?相對(duì)Alarm
7.3自啟動(dòng)Alarms
7.4?刪除Alarms
7.5確認(rèn)何時(shí)會(huì)發(fā)生Alarm
7.6非周期Alarms
7.7?小結(jié)
前言
本系列文章將以RTA-OS為例詳細(xì)介紹AUTOSAR OS標(biāo)準(zhǔn)及概念,并分享實(shí)際使用的一些案例,本文為符合AUTOSAR標(biāo)準(zhǔn)的RTA-OS--Alarm介紹。
OS相關(guān)文章
4.1 【OS基礎(chǔ)】符合AUTOSAR標(biāo)準(zhǔn)的RTA-OS-功能簡(jiǎn)介
4.2 【OS基礎(chǔ)】符合AUTOSAR標(biāo)準(zhǔn)的RTA-OS-Task詳解
4.3 【OS基礎(chǔ)】符合AUTOSAR標(biāo)準(zhǔn)的RTA-OS-Interrupts詳解
4.4 【OS基礎(chǔ)】符合AUTOSAR標(biāo)準(zhǔn)的RTA-OS-Resources詳解
4.5 【OS基礎(chǔ)】符合AUTOSAR標(biāo)準(zhǔn)的RTA-OS-Event詳解
4.6 【OS基礎(chǔ)】符合AUTOSAR標(biāo)準(zhǔn)的RTA-OS-Counters詳解
2.1 【OS】AUTOSAR架構(gòu)下的OS錯(cuò)誤處理
2.2 【OS】AUTOSAR架構(gòu)下QM Application如何訪問ASIL Application
2.3 【OS】AUTOSAR架構(gòu)下多核啟動(dòng)
2.4 【OS】AUTOSAR架構(gòu)下多核Shutdown
2.5 【OS】AUTOSAR架構(gòu)下多核通信
2.6 【OS】RH850U2A芯片平臺(tái)Spinlock的底層實(shí)現(xiàn)
2.7 【OS】AUTOSAR架構(gòu)下MCAL Modules軟件分區(qū)問題分析
2.8 【OS】AUTOSAR架構(gòu)下的中斷和異常向量表
2.9 【OS】AUTOSAR Os是如何啟動(dòng)第一個(gè)Task的
2.10 【OS】AUTOSAR OS系統(tǒng)調(diào)用產(chǎn)生Trap的過程詳解
2.11 【OS】AUTOSAR OS如何實(shí)現(xiàn)Task搶占
2.12 【OS】AUTOSAR OS調(diào)度器實(shí)現(xiàn)原理
注:本文章引用了一些第三方工具和文檔,若有侵權(quán),請(qǐng)聯(lián)系作者刪除!
正文
7.報(bào)警Alarms
可以使用ISR構(gòu)建以不同速率激活任務(wù)的系統(tǒng)。然而,對(duì)于復(fù)雜的系統(tǒng),這可能會(huì)變得低效和不切實(shí)際。警報(bào)器(Alarms)提供了一種更方便、更便攜的調(diào)度系統(tǒng)方式。
該報(bào)警機(jī)構(gòu)由以下兩部分組成:
1.一個(gè)計(jì)數(shù)器counter.
2.一個(gè)或多個(gè)報(bào)警器連接到計(jì)數(shù)器上。
報(bào)警(Alarm)指定在達(dá)到特定計(jì)數(shù)器值時(shí)要執(zhí)行的操作。系統(tǒng)中的每個(gè)計(jì)數(shù)器都可以附加任意數(shù)量的報(bào)警(Alarm)。
當(dāng)計(jì)數(shù)器的值等于附加到計(jì)數(shù)器的警報(bào)的值時(shí),就說警報(bào)已經(jīng)過期。在到期時(shí),RTA-OS將執(zhí)行與告警相關(guān)聯(lián)的操作。該操作可以是激活任務(wù)(OsAlarmActiveTask)、執(zhí)行警報(bào)回調(diào)例程(OsAlarmCallback)、設(shè)置事件(OsAlarmSetEvent)或增加計(jì)數(shù)器值(OsAlarmIncrementCounter)。
報(bào)警到期值可以相對(duì)于實(shí)際計(jì)數(shù)器值或定義為絕對(duì)值。如果報(bào)警失效定義為相對(duì)于實(shí)際計(jì)數(shù)器,則稱為相對(duì)報(bào)警(Relative alarm)。如果將其定義為絕對(duì)值,則稱為絕對(duì)警報(bào)(Absolute Alarm)。
警報(bào)可以配置為過期一次。一旦過期的警報(bào)被稱為單次警報(bào)(Single-shot Alarm)。
還可以將警報(bào)指定為定期過期。這種類型的警報(bào)被稱為循環(huán)警報(bào)(cyclic alarm)。您可以在第7.2節(jié)中找到更多關(guān)于循環(huán)警報(bào)的信息。
7.1配置Alarms
一個(gè)Alarm需要配置三個(gè)配置項(xiàng):
1.名字?-?系統(tǒng)中的每個(gè)報(bào)警都需要分配一個(gè)唯一的名稱。對(duì)于其他操作系統(tǒng)對(duì)象,這是將代碼中在運(yùn)行時(shí)引用警報(bào)的名稱。
2.關(guān)聯(lián)的計(jì)數(shù)器counter -?報(bào)警在配置時(shí)靜態(tài)綁定到計(jì)數(shù)器。警報(bào)的任何設(shè)置都是根據(jù)相關(guān)計(jì)數(shù)器的滴答(ticks)數(shù)來完成的。
3.報(bào)警到期后的動(dòng)作。
創(chuàng)建的每個(gè)報(bào)警最多包含4個(gè)動(dòng)作:
1.激活一個(gè)任務(wù)
?
Figure?7.1: Activating a Task with an Alarm
2.觸發(fā)一個(gè)事件(event)。
3.執(zhí)行一個(gè)callback函數(shù)。
4.增加一個(gè)計(jì)數(shù)器(counter)的值。
如果需要激活多個(gè)任務(wù)、設(shè)置多個(gè)事件、進(jìn)行多個(gè)回調(diào)或在到期時(shí)增加多個(gè)計(jì)數(shù)器,則需要具有相同到期值的多個(gè)警報(bào)。(調(diào)度表提供了一種替代機(jī)制,允許同時(shí)激活多個(gè)任務(wù)和/或設(shè)置多個(gè)事件。后面將在在調(diào)度表章節(jié)中閱讀關(guān)于調(diào)度表的內(nèi)容)。
7.1.1激活一個(gè)任務(wù)
警報(bào)最常見的動(dòng)作是激活一個(gè)任務(wù)。這是構(gòu)建具有定期激活任務(wù)的系統(tǒng)的基礎(chǔ)——可以為每個(gè)任務(wù)創(chuàng)建一個(gè)警報(bào),然后通過軟件代碼將警報(bào)設(shè)置為在所需的時(shí)間段內(nèi)發(fā)生。圖7.1顯示了如何配置告警以激活任務(wù)。
7.1.2?設(shè)置一個(gè)事件
報(bào)警可以為指定的任務(wù)設(shè)置一個(gè)事件。當(dāng)事件設(shè)置為警報(bào)時(shí),它具有與使用SetEvent() API調(diào)用設(shè)置時(shí)相同的屬性。這意味著用戶需要同時(shí)指定事件和要為其設(shè)置事件的任務(wù)。圖7.2顯示了如何為告警設(shè)置事件操作。
?
Figure 7.2: Setting an Event for a Task with an Alarm
7.1.3報(bào)警回調(diào)Alarm Callback
每個(gè)報(bào)警都可以有一個(gè)關(guān)聯(lián)的回調(diào)函數(shù)?;卣{(diào)只是一個(gè)C函數(shù),在告警到期時(shí)被調(diào)用。
集成指導(dǎo):根據(jù)AUTOSAR操作系統(tǒng)標(biāo)準(zhǔn),報(bào)警回調(diào)只允許在可伸縮性級(jí)別1(Scalability Class 1)中進(jìn)行。這是因?yàn)檫@些回調(diào)在操作系統(tǒng)級(jí)別上運(yùn)行,因此可能會(huì)干擾定時(shí)保護(hù),并在內(nèi)存保護(hù)方案中出現(xiàn)一個(gè)漏洞。
Portability Note:?RTA-OS允許放松這個(gè)限制,允許在General?Optimizations?RTA-OS中使用配置選項(xiàng)在所有可伸縮性類中允許警報(bào)回調(diào)。
圖7.3顯示了如何為報(bào)警配置回調(diào)函數(shù)。
?
Figure?7.3: Configuring a Callback Routine for an Alarm
每個(gè)回調(diào)函數(shù)都必須使用ALARMCALLBACK()?宏來編寫,如示例7.1所示。
ALARMCALLBACK(UserProvidedAlarmCallback) {
/* Callback code. */
}
集成指導(dǎo):回調(diào)例程在操作系統(tǒng)級(jí)別運(yùn)行,這意味著2類中斷被禁用。因此,應(yīng)該是盡可能保持回調(diào)例程的精簡(jiǎn),以最小化任務(wù)和ISR在運(yùn)行時(shí)遭受的阻塞量。
用戶可以在回調(diào)中進(jìn)行的唯一使用的RTA-OS API調(diào)用是SuspendAllInterrupts() and ResumeAllInterrupts().
7.1.4?增加計(jì)數(shù)器值
警報(bào)增加軟件計(jì)數(shù)器允許您從單個(gè)ISR級(jí)聯(lián)多個(gè)計(jì)數(shù)器。由Alarm驅(qū)動(dòng)(Ticked)的計(jì)數(shù)器Counter繼承了警報(bào)的周期。所以,如果你有一個(gè)每5毫秒發(fā)生一次的警報(bào),你可以使用警報(bào)來驅(qū)動(dòng)一個(gè)秒級(jí)的Counter,?這個(gè)Counter的一個(gè)tick是5ms.?圖7.4顯示了在RTA-OS中是如何配置的。
?
Figure?7.4: Cascading counter increments from an alarm
示例7.2顯示了如何從中斷中驅(qū)動(dòng)1毫秒計(jì)數(shù)器。在1毫秒計(jì)數(shù)器上注冊(cè)的每五次中斷將導(dǎo)致告警過期,并增加級(jí)聯(lián)計(jì)數(shù)器5秒:
#include <Os.h>
ISR(MillisecondInterrupt){CLEAR_PENDING_INTERRUPT();Os_IncrementCounter(Counter1ms);
/* Every 5th call internally performs Os_IncrementCounter(Counter5ms) */
}
Example?7.2: Cascading Counters
級(jí)聯(lián)計(jì)數(shù)器的滴答率(tick rate)必須是驅(qū)動(dòng)報(bào)警的計(jì)數(shù)器的整數(shù)倍。用戶可以使用多級(jí)級(jí)別的級(jí)聯(lián)來配置系統(tǒng)。但是,如果您試在級(jí)聯(lián)中配置一個(gè)循環(huán)系統(tǒng)或嘗試增加硬件計(jì)數(shù)器,RTA-OS將生成錯(cuò)誤。
集成指導(dǎo):級(jí)聯(lián)計(jì)數(shù)器的定時(shí)特性是相對(duì)于級(jí)聯(lián)中第一個(gè)計(jì)數(shù)器的定時(shí)特性來定義的。因此,級(jí)聯(lián)中最早的計(jì)數(shù)器決定了定義所有其他計(jì)數(shù)器的基本滴答率。如果您更改了最早計(jì)數(shù)器的標(biāo)記率,則應(yīng)用程序的整個(gè)計(jì)時(shí)行為將相應(yīng)地縮放。
7.2設(shè)置Alarms
OS提供兩個(gè)API用來設(shè)置Alarms:
SetAbsAlarm(AlarmID, start, cycle);
將報(bào)警設(shè)置為在計(jì)數(shù)器值下次到達(dá)時(shí)開始時(shí)失效。如果底層計(jì)數(shù)器在調(diào)用SetAbsAlarm時(shí)已經(jīng)開始,那么在本次計(jì)數(shù)器周期內(nèi)不會(huì)發(fā)生警報(bào)。
SetRelAlarm(AlarmID, increment, cycle);
增量式Alarm,即設(shè)置該Alarm后計(jì)數(shù)滿足就執(zhí)行該Alarm.
在這兩個(gè)API調(diào)用中,周期值設(shè)置為0表示警報(bào)是單次觸發(fā)警報(bào),這意味著它在被取消之前只會(huì)過期一次。循環(huán)值大于零定義循環(huán)報(bào)警。這意味著在第一次到期后,它將繼續(xù)使每個(gè)周期過期。設(shè)置非零周期值可以輕松地配置具有周期變化周期的周期性警報(bào)。
參數(shù)選著
如果被激活的任務(wù)是BCC1或ECC1/2,則將不會(huì)有排隊(duì)的激活。這意味著,如果開始值或增量值非常短,或者開始值非常接近當(dāng)前的計(jì)數(shù)器值,那么這可能會(huì)導(dǎo)致不希望產(chǎn)生的副作用。當(dāng)先前激活的實(shí)例仍在執(zhí)行時(shí),警報(bào)將嘗試激活該任務(wù)。激活將會(huì)丟失,并將引發(fā)一個(gè)E_OS_LIMIT錯(cuò)誤。必須確保有足夠的時(shí)間完成任務(wù),然后才能導(dǎo)致任務(wù)重新觸發(fā)任務(wù)。
7.2.1?絕對(duì)Alarms
單次觸發(fā)
絕對(duì)報(bào)警指定報(bào)警失效的底層計(jì)數(shù)器的絕對(duì)值。單次觸發(fā)絕對(duì)警報(bào)用于監(jiān)控預(yù)定義的閾值非常有用——警報(bào)可以配置為在超過閾值時(shí)過期。用戶可能希望計(jì)算在運(yùn)行時(shí)獲取的數(shù)據(jù)采樣中發(fā)生的錯(cuò)誤數(shù)量,然后在錯(cuò)誤數(shù)量達(dá)到危險(xiǎn)級(jí)別時(shí)觸發(fā)恢復(fù)操作。這一點(diǎn)如示例7.3所示。
/* Expire when counter value reaches 42. */
SetAbsAlarm(DangerLevelReached, 42, 0);
Example 7.3: Absolute single shot alarm
示例7.3如圖7.5所示。
?
Figure?7.5: Illustration of an Absolute Single Shot Alarm
當(dāng)我們需要設(shè)置一個(gè)超時(shí),然后等待一個(gè)固定的超時(shí)時(shí)間,然后在超時(shí)發(fā)生時(shí)采取動(dòng)作時(shí),單次觸發(fā)報(bào)警很有用。
循環(huán)觸發(fā)
如果絕對(duì)告報(bào)警指定了一個(gè)非零周期值,則它將首先在指定的起始點(diǎn)終止,然后在此后的每個(gè)周期終止。這一點(diǎn)如示例7.4所示。
?
Figure?7.6: Illustration of the Absolute Cyclic Alarm
/* Expire when counter value reaches 10 and then every 20 ticks thereafter
*/
SetAbsAlarm(Alarm1, 10, 20);
Example?7.4: Absolute cyclic alarm
對(duì)于絕對(duì)告警,零刻度的絕對(duì)起始值與任何其他值相同——這意味著當(dāng)計(jì)數(shù)器達(dá)到零值時(shí)告警失效。
例如,如果當(dāng)前計(jì)數(shù)器值為零,則將不會(huì)看到警報(bào)過期,直到計(jì)數(shù)器值的最大值+1數(shù)量發(fā)生。另一方面,如果計(jì)數(shù)器的值已經(jīng)處于最大等值,那么就會(huì)看到警報(bào)在計(jì)數(shù)器的下一個(gè)tick上過期。
設(shè)置Alarm為過去值
設(shè)置為過去式Alarm時(shí),需要等待MAXALLOWEDVALUE+1個(gè)Tick后才能到期。
注意:一個(gè)常見的錯(cuò)誤是設(shè)置絕對(duì)Alarm在OS?起動(dòng)后Counter為0時(shí)發(fā)生,這樣的Alarm不會(huì)發(fā)生,因?yàn)?已經(jīng)是過去發(fā)生的。
?
Figure 7.7: Setting an alarm in the past
將絕對(duì)循環(huán)Alarm同步到計(jì)數(shù)器包裝
將Alarm設(shè)置為在已知的同步點(diǎn)定期發(fā)生對(duì)于實(shí)時(shí)系統(tǒng)非常重要。但是,在AUTOSAR操作系統(tǒng)中,不可能將絕對(duì)Alarm設(shè)置為每次基線計(jì)數(shù)器環(huán)繞時(shí)定期發(fā)生。
如果需要此類功能,則必須提供每次Alarm過期時(shí)重置絕對(duì)單次Alarm的代碼。例如,如果Task1連接到Alarm1,則Task1的主體將需要在激活任務(wù)時(shí)重置Alarm,如下示例所示。
TASK(Task1) {/* Single-shot alarm reset at top dead center = 0 = 360 degrees. */SetAbsAlarm(Alarm1, 0, 0);/* User code. */TerminateTask();
}
Example 7.5: Resetting an Alarm when a Task is Activated
7.2.2?相對(duì)Alarm
單次觸發(fā)
相對(duì)報(bào)警指定報(bào)警失效的底層計(jì)數(shù)器的絕對(duì)值。當(dāng)用戶想在運(yùn)行時(shí)超時(shí)某些活動(dòng)時(shí),單次觸發(fā)相對(duì)報(bào)警很有用。例如,用戶可能希望等待一個(gè)外部事件,然后在該事件未發(fā)生時(shí)激活該任務(wù)。
?
Figure 7.8: Illustration of a Relative Single Shot Alarm
示例7.6顯示了如何設(shè)置絕對(duì)單槍報(bào)警。
/* Timeout 42 ticks from now */
SetRelAlarm(Timeout, 42, 0);
Example 7.6: Relative single shot alarm
當(dāng)用戶需要設(shè)置一個(gè)超時(shí),等待一個(gè)固定的超時(shí)時(shí)間,然后在超時(shí)發(fā)生時(shí)采取行動(dòng)時(shí),單次觸發(fā)報(bào)警我們很有用。
在AUTOSAR操作系統(tǒng)中,禁止在SetRelAlarm()中使用零作為增量。如果您使用零作為增量,則將返回一個(gè)E_OS_VALUE錯(cuò)誤。
循環(huán)觸發(fā)
示例7.7顯示了一個(gè)相對(duì)警報(bào),在10次響后響一次,然后每20次響一次。
/* Expire after 10 ticks, then every 20 ticks. */
SetRelAlarm(Alarm1, 10, 20);
Example?7.7: Relative cyclic alarm
在圖7.9中,可以看到如何可視化此報(bào)警。
?
Figure 7.9: Illustration of a Relative Cyclic Alarm
7.3自啟動(dòng)Alarms
雖然可通過在主函數(shù)中調(diào)用SetRelAlarm()?或?SetAbsAlarm() API來起動(dòng)Alarm,但最簡(jiǎn)單的調(diào)用周期Alarms方式是在STARTOS()后自啟動(dòng)Alarm。
自啟動(dòng)Alarm需聲明其為絕對(duì)還是相對(duì)Alarm,counter及周期值。
?
Figure?7.10: Auto-starting Alarms
RTA-OS確保軟件計(jì)數(shù)器在StartOS()期間初始化為零(硬件計(jì)數(shù)器將設(shè)置為您自己的應(yīng)用程序初始化代碼配置的值)。因此,如果對(duì)絕對(duì)Alarm使用零刻度開始時(shí)間,則必須小心,因?yàn)樵贏larm啟動(dòng)時(shí),零刻度已經(jīng)發(fā)生。雖然Alarm將啟動(dòng),但在相關(guān)計(jì)數(shù)器變?yōu)榱阒?#xff0c;Alarm不會(huì)過期。在一個(gè)16位計(jì)數(shù)器上,每毫秒Tick增加一次,你需要等待超過65秒,然后在一個(gè)32位計(jì)數(shù)器上等待不到48天。指定Alarm在第一次(或以后)勾選時(shí)開始表示初始到期將在計(jì)數(shù)器的下一次勾選時(shí)發(fā)生。如果需要Alarm彼此同步(即Alarm之間的相對(duì)過期時(shí)間必須間隔預(yù)先設(shè)定的刻度數(shù)),則自動(dòng)啟動(dòng)絕對(duì)Alarm非常有用。
7.4?刪除Alarms
可以通過調(diào)用CancelAlarm() API來刪除Alarm,例如,可能需要取消Alarm以停止正在執(zhí)行的特定任務(wù)??梢允褂肧etAbsAlarm()或SetRelAlarm()?API調(diào)用重新啟動(dòng)Alarm。
7.5確認(rèn)何時(shí)會(huì)發(fā)生Alarm
當(dāng)用戶需要確認(rèn)Alarm何時(shí)會(huì)發(fā)生,如對(duì)于絕對(duì)Alarm,為了避免已經(jīng)達(dá)到的值被設(shè)置時(shí)可以通過調(diào)用Get Alarm() API獲取。該調(diào)用返回指定Alarm到期前剩余的Tick數(shù)。如果未設(shè)置Alarm,則API調(diào)用將返回值E_OS_NOFUNC,到期的刻度數(shù)未定義。建議在使用結(jié)果之前檢查調(diào)用的返回值。示例7.8顯示了API調(diào)用的使用情況。
TickType TimeToExpiry;
?
TickType SafetyMargin = 100;
?
StatusType IsValid;
?
IsValid = GetAlarm(Alarm1, &TimeToExpiry);
?
if (IsValid != E_OS_NOFUNC) {
if (TimeToExpiry <= SafetyMargin) {
Log(InsideSafetyMargin);
}
}
Example?7.8: Getting the time to expiry
在根據(jù)調(diào)用返回的Tick值出運(yùn)行時(shí)決策時(shí),尤其是在底層計(jì)數(shù)器具有高分辨率的情況下,應(yīng)特別小心。與使用GetCounterValue()?讀取計(jì)數(shù)器值一樣,在獲取該值和使用該值進(jìn)行計(jì)算之間可能會(huì)發(fā)生搶占。這意味著可能會(huì)讀取(很長(zhǎng))到期時(shí)間,但隨后會(huì)被搶占,以便在Alarm到期前不久(甚至在Alarm到期后)恢復(fù)。
7.6非周期Alarms
周期報(bào)警只對(duì)循環(huán)行為有用。在許多系統(tǒng)中,例如那些需要定期執(zhí)行任務(wù)來輪詢數(shù)據(jù)源的系統(tǒng)中,這是非常理想的。但是,用戶可能需要對(duì)在運(yùn)行時(shí)需要更改的系統(tǒng)進(jìn)行編程。例如,正在計(jì)算一個(gè)發(fā)動(dòng)機(jī)軸轉(zhuǎn)速,并使用它來編程火花或噴射定時(shí)的持續(xù)時(shí)間。
需要使用單次觸發(fā)警報(bào)對(duì)具有警報(bào)的非周期行為進(jìn)行編程,并由激活的任務(wù)設(shè)置為下一個(gè)到期值。
在示例7.9中,一個(gè)任務(wù)每毫秒運(yùn)行一次,并輪詢一個(gè)記錄曲軸旋轉(zhuǎn)度的計(jì)數(shù)器。該任務(wù)將計(jì)算曲柄的位置和速度。速度用于確定火花定時(shí)的持續(xù)時(shí)間?;鸹▎?dòng),警報(bào)設(shè)置為在SparkTiming ticks到期后。
TASK(MillisecondTask) {...GetElapsedCounterValue(ShaftEncoder,&Position,&DegreesRotation);RevsPerMinute = (DegreesRotation/360) * 1000 * 60;SparkTiming = Lookup(RevsPerMinute);if (Position == 90) {StartSpark();SetRelAlarm(TimeCounter, SparkTiming, 0); /* Activates SparkOff onexpiry */ }
}
...
TerminateTask()
}
?
TASK(SparkOff){StopSpark();TerminateTask();
}
Example?7.9: Aperiodic Alarm Example
7.7?小結(jié)
-
Alarms是基于counter設(shè)置的,同一個(gè)Counter可設(shè)置多個(gè)Alarms;
-
每個(gè)Alarm執(zhí)行的操作可能為:執(zhí)行某個(gè)Task、設(shè)置個(gè)Event、執(zhí)行某回調(diào)函數(shù)或增加一個(gè)計(jì)數(shù)器;
-
Alarm可設(shè)置絕對(duì)或相對(duì)counter值;
-
Alarm可配置為自啟動(dòng)模式。
-
實(shí)際應(yīng)用中一般采用調(diào)度表來調(diào)度,Alarms應(yīng)用相對(duì)比較少。
參考文檔:
[1] RTA-OS V6.1.3?User Guide
[2]?Specification of Operating?System?AUTOSAR Release 4.2.2