Autosar EcuM:ECU的启动、关闭流程

ECU的启动、关闭流程涉及的模块比较多,比较重要。
ECU的启动流程(StartUP)
ECU的关闭流程(ShutDown)
ECU的phase包含STARTUP、SHUTDOWN、UP、OFF和SLEEP
在这里插入图片描述
STARTUP:主要初始化一些基础软件模块
SHUTDOWN:根据Target的选择方式(OFF、RESET),执行不同的下电流程
UP:当BSW Scheduler完成启动后,且BswM完成初始化以后,进入EcuM的UP阶段。此阶段,内存、通信栈、RTE等还没有开始初始化。这些模块的初始化一般放在BSWM处理,即开发者涉及对应的Rule,由BswM仲裁,进而决定程序的启动。因此,此处的涉及,给了开发者很大的自由度,相应的,也承担更大的责任。此阶段,内存的初始化,需要调用NVM_ReadAll()接口,NVM一般采用异步读取,所用时间与项目之初设计的NVM大小有关。完成内存初始化以后,COM、DEM、FIM等模块的参数获取了对应的值(初始值或者NVM中存储的值),方可初始化。当通信栈获取了目标参数以后,启动RTE。
OFF:此阶段可以看作Power OFF
SLEEP:此阶段可以节能,包含POLL和Halt两个子状态。Poll子状态下,CPU的clock极大降低,代码低速的检测唤醒事件;Halt状态下,CPU时钟停止,代码不再运行,相比Poll子状态更节省能量。但是不管怎么样,此阶段还是消耗一定能量。
StartUp流程如下:
在这里插入图片描述
1)当μC供电以后,程序从复位向量入口开始执行(Reset Vector),具体的起始地址可以在链接文件中(lsl)查看,提升:此地址属于自定义的用户地址,一般是Boot程序地址
2)程序在BOOT中,会判断APP的有效性,如果App有效,程序跳转到APP的Main函数处(C init Code)
3)在APP的main函数中,会调用EcuM_Init()接口,EcuM开始接管ECU的StartUP流程,在StartPreOS的时序中,调用SartOS()接口,OS从EcuM临时拿过程序控制权,之后,OS通过Activate Task()激活任务。在BSwm Task中,通过ecumM_StartUPTwo()接口将程序控制权交还给ecum,进一步执行StartPostOS时序。
在程序进入App的main函数之前,程序已经完成堆栈,PC指针寄存器,中断,Trap等初始化动作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值