目录
前言
一个Task的Task Type配置为AUTO后入股Tasking Mapping了不同Cyclic Period的Schedulabe Entities,那么这个Task会被自动识别为Extended Task(扩展任务),且在RTE生成文件中会自动生成扩展任务的Task函数。
那么问题来了:
问题1:这些工具自动生成的扩展任务是在哪里有谁来激活(ActivateTask)?
问题2:这些工具自动生成的扩展任务绑定的Event由谁在哪里设置?
这里直接给出答案先:
回答问题问题1:这些工具自动生成的扩展任务在SchM_Init中被激活。Schm_Init由EcuM_StartupTwo调用。
那么EcuM_StartupTwo函数又是由谁在哪里调用的了? 这就是本文要介绍的内容,请看正文中的详细介绍。
回答问题2:这些工具自动生成的扩展任务绑定的Event在Rte_Start中被设置。
那么Rte_Start又是在哪里由谁被调用的了?--EcuM_StartupTwo --> BswM_Init -> Rte_Start
注意:BswM_Init会调用到Rte_Start的前提是,BswM中配置Rte_Start的Action.
注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!
正文
EcuM_StartupTwo函数应该在EcuM模块的Startup Phase被调用,具体配置及代码实现过程:
1)配置一个Autostart的Task(EcuM_Init_Task).
2)自定义实现这个Task,在这个Task中调用EcuM_StartupTwo函数。
EcuM_StartupTwo被调用过程:
1)ECU上电或者重启后调用EcuM_Init.
2)EcuM_Init调用StartOS()启动OS.
3)OS会自动激活EcuM_Init_Task.
4)EcuM_Init_Task调用EcuM-StartupTwo.
EcuM_StartupTwo函数中会调用SchM_Start, BswM_Init, SchM_Init, SchM_StartTiming.其中BswM_Init会调用Rte_Start设置Event, SchM_Init会调用ActiveTask激活扩展任务(参考前文内容)。
官方文档解释:
1)这个函数必须从一个任务中调用,该任务是由StartOS直接启动的结果。也就是说,必须从自动启动任务中调用EcuM_StartupTwo函数,或者必须从显式启动的任务中调用EcuM_StartupTwo函数。
2)OS提供了不同的机制在启动时激活一个任务。通常,EcuM_StartupTwo将被配置为默认应用程序模式下的自动启动任务。
3)集成者可以将OS配置为通过任何机制激活EcuM_StartupTwo任务,只要在调用StartOS后立即启动它即可。该任务也可以从另一个任务中被激活,而这个其他任务可以是一个自动启动任务。
4)将EcuM_StartupTwo作为自动启动任务启动是一种隐式激活。其他机制将是显式激活。
1)配置一个Autostart的Task.
2)实现ECUM_InitTask_Core0
TASK(ECUM_InitTask_Core0)
{
ApplicationType CurTaskOwnerAppl;
ISRType ISR_ID;
CurTaskOwnerAppl = GetCurrentApplicationID();
for(ISR_ID = (ISRType)0; ISR_ID < OS_ISRID_COUNT; ISR_ID++)
{
if(CurTaskOwnerAppl == CheckObjectOwnership(OBJECT_ISR,ISR_ID))
{
Os_EnableInterruptSource(ISR_ID, TRUE);
}
}
EcuM_StartupTwo();
(void)TerminateTask();
}
本文详细介绍了EcuM_StartupTwo函数。EcuM_StartupTwo函数应该由用户在自定义配置的Task(Task需要被配置为Autostart)中调用,EcuM_StartupTwo函数中会嗲用BswM_Init->Rte_Start设置Event, SchM_Init会调用ActiveTask激活扩展任务。
End
「汽车电子嵌入式在CSDN上同步推出AUTOSAR精进之路专栏,本专栏每个模块完全按实际项目中开发及维护过程来详细介绍。模块核心概念介绍、实际需求描述、实际工程配置、特殊需求介绍及背后原理、实际工程使用经验总结。目的是让读者看完每一个章节后能理解原理后根据需求完成一个模块的配置或者解决一个问题。」
点击文章最后左下角的阅读原文可以获取更多信息
或者复制如下链接到浏览器获取更多信息
https://blog.csdn.net/qq_36056498/article/details/132125693
文末福利
2.为便于技术交流,创建了汽车电子嵌入式技术交流群,可尽情探讨AP,CP,DDS,SOME/IP等前沿热点话题,后台回复“加群”即可加入;
注:本文引用了一些第三方工具和文档,若有侵权,请联系作者删除!
推荐阅读
汽车电子嵌入式精彩文章汇总第一期:20210530-20230703
汽车电子嵌入式精彩文章汇总第2期
汽车电子嵌入式精彩文章汇总第3期
【OS】AUTOSAR OS Event实现原理
【OS】AUTOSAR OS Spinlock实现原理(下篇)
【OS】AUTOSAR OS Spinlock实现原理(上篇)
CanNm处于PBS状态下接收到一帧诊断报文DCM会响应吗
TC3xx芯片CAN模块详解
AUTOSAR OS Alarm实现原理
AUTOSAR OsTask切换原理
TC3xx 芯片SPI模块详解
AUTSOAR ComStack如何实现PDU只收不发的
AUTOSAR OsStack监控原理
AUTOSAR架构下ICU唤醒详解
CanNm报文的触发发送详解
Can报文能发不能收问题分析
End
欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!
汽车电子嵌入式
微信扫描二维码,关注我的公众号