一、
??
關(guān)鍵詞
嵌入式、C語言、autosar、OS、BSW
平臺(tái)說明
項(xiàng)目 | Value |
---|---|
OS | autosar OS |
autosar廠商 | vector , |
芯片廠商 | TI 英飛凌 |
編程語言 | C,C++ |
編譯器 | HighTec (GCC) |
>>>>>回到總目錄<<<<<<
一、Timer
??不管何種單片機(jī),其硬件肯定都會(huì)有晶振,它將為系統(tǒng)提供基本的時(shí)鐘信號(hào)。autosar OS可以用這個(gè)基準(zhǔn)時(shí)鐘去觸發(fā)alarms和schedule table。
1.1 配置
1.2Periodical Interrupt Timer (PIT)和High Resolution Timer (HRT)
??見[AutoSar]工程中的cpuload陷阱(一)
二、Alarm 工作機(jī)制
??1.在OS啟動(dòng)后,硬件中斷會(huì)使TickTime增加,當(dāng)System Counter == 設(shè)定的Alarm 的值的時(shí)候便會(huì)執(zhí)行對(duì)應(yīng)的alarm的動(dòng)作;
??2.alarm action包括:①激活一個(gè)task。②設(shè)置一個(gè)時(shí)間用于extended task。③調(diào)用一個(gè)回調(diào)函數(shù)。④增加OS計(jì)數(shù)值。
??3.使能一個(gè)alram可以通過OS 啟動(dòng)或者另一個(gè)task去激活。
三、Code
3.1創(chuàng)建一個(gè)15ms的runnable
3.2mapping到basic task
文章來源:http://www.zghlxwxcb.cn/news/detail-818031.html
3.3生成代碼
FUNC(StatusType, OS_CODE) SetRelAlarm
(
AlarmType AlarmID,
TickType Increment,
TickType Cycle
)
在Rte_Start(void)中生成
(void)SetRelAlarm(Rte_Al_TE_CpApSWC1_RunnableSWC1_AglDet_15ms, RTE_MSEC_SystemTimer(0U) + (TickType)1U, RTE_MSEC_SystemTimer(15U)); /* PRQA S 3417, 1840 */ /* MD_Rte_Os, MD_Rte_Os */
在 Rte_Stop(void)中生成
(void)CancelAlarm(Rte_Al_TE_CpApSWC1_RunnableSWC1_AglDet_15ms); /* PRQA S 3417 */ /* MD_Rte_Os */
在Os_Alarm_Lcfg.c中生成
/*! Alarm configuration data: Rte_Al_TE_CpApSWC1_RunnableSWC1_AglDet_15ms */
CONST(Os_AlarmActivateTaskConfigType, OS_CONST) OsCfg_Alarm_Rte_Al_TE_CpApSWC1_RunnableSWC1_AglDet_15ms =
{
/* .Alarm = */
{
/* .Job = */
{
/* .Dyn = */ OS_ALARM_CASTDYN_ALARM_2_JOB(OsCfg_Alarm_Rte_Al_TE_CpApSWC1_RunnableSWC1_AglDet_15ms_Dyn),
/* .Counter = */ OS_COUNTER_CASTCONFIG_TIMERPFRT_2_COUNTER(OsCfg_Counter_SystemTimer),
/* .Callback = */ Os_AlarmActionActivateTask
},
/* .Autostart = */
{
/* .AlarmTime = */ 0u, /* 0.0 sec */
/* .Cycle = */ 0u, /* 0.0 sec */
/* .ApplicationModes = */ OS_APPMODE_NONE,
/* .AlarmMode = */ OS_ALARMMODE_ABSOLUTE
},
/* .AccessingApplications = */ (OS_APPID2MASK(OsApplication_Core3) | OS_APPID2MASK(SystemApplication_OsCore3) | OS_APPID2MASK(SystemApplication_OsCore4) | OS_APPID2MASK(SystemApplication_OsCore5)), /* PRQA S 0410 */ /* MD_MSR_Dir1.1 */
/* .OwnerApplication = */ &OsCfg_App_OsApplication_Core3
},
/* .Task = */ &OsCfg_Task_OsTask_core3_basic
};
OS_ALARM_CASTCONFIG_ALARMACTIVATETASK_2_ALARM(OsCfg_Alarm_Rte_Al_TE_CpApSWC1_RunnableSWC1_AglDet_15ms),
>>>>>回到總目錄<<<<<<文章來源地址http://www.zghlxwxcb.cn/news/detail-818031.html
到了這里,關(guān)于[AutoSar]BSW_OS 06 Autosar OS_Alarms的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!