AUTOSAR OS任务的自动运行

目录

一、Init_RunnableEntity与Init_OsTask

二、如何实现Init_OsTask的自动运行


一、Init_RunnableEntity与Init_OsTask

按照AUTOSAR规范在Matlab/Simulink中搭建ASW层功能模型后,生成的ASW代码里至少会有两种运行实体(Runnable Entity),一类是功能运行的主体函数,另一类是Init_RunnableEntity()。后者常用于应用功能的初始化。对于这类Init_RunnableEntity(),通常会在OsTask中专门创建一个Init_OsTask类型的任务,并将Init_RunnableEntity()映射至该类任务中。

        初始化函数的特性,只需要在重上电后运行一次。如无特殊配置,细心的朋友会发现其实该类Init_OsTask并不会被执行,进而影响应用功能的正常运行。

二、如何实现Init_OsTask的自动运行

本文以ETAS工具ISOLAR A/B为例:

1. 进入模块Os->OsTasks->Init_OsTask,为该task添加OsTaskAutostart,并在其中引用OSDEFAULTAPPMODE

2. 打开Open RTA Code Generator dialog...选项 -> RTA-OS -> Configure Commandline Arguements -> Options -> Additional -> 勾选Keep source files -> Apply

3. Generate OS,为OS层的变动重新生成代码。

4. 验证Init_OsTask会自动执行

        1)打开Os_Cfg.c,搜索函数

FUNC(void, OS_CODE) Os_StartOS_StartAuto(const Os_CoreConfiguration *os_current_core_const, Os_ControlledCoreType *os_current_controlled_core) 

里面会看到所有会自动执行的OsTask,若将Init_OsTask放在Core 0,则会看到

if (0U == os_current_core_const->core_id) {
    Os_ActivateTaskKL(&Os_const_tasks0[n], os_current_core_const, os_current_controlled_core);
}

其中,n代指编号,索引Os_const_tasks0[n],即为对应的Init_OsTask。说明该任务会在重上电时自动执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值